summaryrefslogtreecommitdiff
path: root/windows-NT
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2005-10-03 13:43:40 +0000
committer <>2014-09-25 11:25:48 +0000
commit10de491ef0bc43827ab8631a4c02860134e620a9 (patch)
tree22e734337cc9aa5d9b1d7c71261d160b6a60634d /windows-NT
downloadcvs-tarball-master.tar.gz
Imported from /home/lorry/working-area/delta_cvs-tarball/cvs-1.12.13.tar.bz2.HEADcvs-1.12.13master
Diffstat (limited to 'windows-NT')
-rw-r--r--windows-NT/.cvsignore6
-rw-r--r--windows-NT/ChangeLog1871
-rw-r--r--windows-NT/JmgStat.c214
-rw-r--r--windows-NT/JmgStat.h4
-rw-r--r--windows-NT/Makefile.am154
-rw-r--r--windows-NT/Makefile.in708
-rw-r--r--windows-NT/README113
-rw-r--r--windows-NT/SCC/.cvsignore8
-rw-r--r--windows-NT/SCC/ChangeLog250
-rw-r--r--windows-NT/SCC/Makefile.am33
-rw-r--r--windows-NT/SCC/Makefile.in431
-rw-r--r--windows-NT/SCC/README.txt116
-rw-r--r--windows-NT/SCC/SCC.dsp108
-rw-r--r--windows-NT/SCC/SCC.mak216
-rw-r--r--windows-NT/SCC/pubscc.h546
-rw-r--r--windows-NT/SCC/scc.c469
-rw-r--r--windows-NT/SCC/scc.def25
-rw-r--r--windows-NT/arpa/inet.h1
-rw-r--r--windows-NT/config.h1452
-rw-r--r--windows-NT/config.h.in1445
-rw-r--r--windows-NT/config.h.in.footer186
-rw-r--r--windows-NT/config.h.in.in1240
-rw-r--r--windows-NT/filesubr.c1029
-rw-r--r--windows-NT/fix-msvc-mak.pl99
-rw-r--r--windows-NT/mkconfig.pl314
-rw-r--r--windows-NT/mkdir.c33
-rw-r--r--windows-NT/ndir.c214
-rw-r--r--windows-NT/ndir.h62
-rw-r--r--windows-NT/netdb.h1
-rw-r--r--windows-NT/netinet/in.h1
-rw-r--r--windows-NT/pwd.c207
-rw-r--r--windows-NT/pwd.h67
-rw-r--r--windows-NT/rcmd.c190
-rw-r--r--windows-NT/rcmd.h30
-rw-r--r--windows-NT/run.c721
-rw-r--r--windows-NT/sockerror.c136
-rw-r--r--windows-NT/stamp-chi1445
-rw-r--r--windows-NT/startserver.c100
-rw-r--r--windows-NT/stdbool.h100
-rw-r--r--windows-NT/stdint.h290
-rw-r--r--windows-NT/sys/socket.h9
-rw-r--r--windows-NT/sys/types.h155
-rw-r--r--windows-NT/unistd.c71
-rw-r--r--windows-NT/unistd.h96
-rw-r--r--windows-NT/waitpid.c22
-rw-r--r--windows-NT/woe32.c355
-rw-r--r--windows-NT/woe32.h35
47 files changed, 15378 insertions, 0 deletions
diff --git a/windows-NT/.cvsignore b/windows-NT/.cvsignore
new file mode 100644
index 0000000..111e6f9
--- /dev/null
+++ b/windows-NT/.cvsignore
@@ -0,0 +1,6 @@
+Makefile
+check.log
+check.plog
+stamp-ch
+stamp-sh
+stamp-sh2
diff --git a/windows-NT/ChangeLog b/windows-NT/ChangeLog
new file mode 100644
index 0000000..7888d62
--- /dev/null
+++ b/windows-NT/ChangeLog
@@ -0,0 +1,1871 @@
+2005-09-30 Conrad T. Pino <Conrad@Pino.com>
+
+ * woe32.c woe32.h: Add "woe32_fd_select" function.
+
+2005-09-29 Conrad T. Pino <Conrad@Pino.com>
+
+ * run.c: Add "bool fix_stderr" argument to "piped_child" function.
+ Add "false" to "piped_child" call in "run_piped" function.
+
+2005-09-26 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.footer: Extend "mbsinit" Visual C++ 6.0 implementation
+ to add Visual C++ 5.0, Visual C++ .NET, Visual C++ .NET 2003.
+
+ * config.h config.h.in stamp-chi: Regenerated on UNIX.
+
+2005-09-26 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add unistd.c, woe32.h.
+
+2005-09-25 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add new files.
+
+2005-09-25 Conrad T. Pino <Conrad@Pino.com>
+
+ * filesubr.c: Change <windows.h> to <sys/socket.h> which includes
+ <windows.h> through <winsock2.h> include.
+
+ * rcmd.c sockerror.c startserver.c unistd.c woe32.c: Change
+ <winsock.h> to <sys/socket.h> which includes <winsock2.h>.
+
+ * unistd.h: Change "gethostname" prototype to match <winsock2.h>.
+
+2005-09-25 Conrad T. Pino <Conrad@Pino.com>
+
+ * filesubr.c: New (get_system_temp_dir push_env_temp_dir) functions.
+
+2005-09-25 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.footer: Add "#pragma once" in "#ifdef _MSC_VER" block.
+ Add "#define HAVE_DECL__SNPRINTF 1" macro. Add "#include <direct.h>"
+ and "#define mkdir wnt_mkdir" macro. Add "mbsinit" implementation as
+ an inline function for Microsoft Visual C++ 6.0 only.
+
+ * config.h.in.in: Remove (GLOB_PREFIX HAVE_HSTRERROR HAVE_STRCASECMP
+ HAVE_STRSTR ST_MTIM_NSEC _SYS_CDEFS_H) macros which now obsolete.
+ Change (HAVE_ATEXIT HAVE_DECL_GETENV HAVE_DUP2 HAVE_ENVIRON_DECL
+ HAVE_ERRNO_DECL HAVE_GETHOSTNAME HAVE_ISASCII HAVE_MBLEN HAVE_MBRLEN
+ HAVE_MBSRTOWCS HAVE_MBSTATE_T HAVE_MEMCHR HAVE_MEMMOVE HAVE_PTRDIFF_T
+ HAVE_SEARCH_H HAVE_STRCHR HAVE_STRTOUL HAVE_STRUCT_STAT_ST_RDEV
+ HAVE_TZNAME HAVE_TZSET HAVE_WCSLEN HAVE_WCTYPE_H HAVE_WINT_T
+ HAVE_WMEMCHR HAVE_WMEMCPY) from "#undef ..." to "#define ... 1".
+ Change from "#define HAVE_DIRECT_H 1" to "#undef HAVE_DIRECT_H" since
+ some functions aren't POSIX compliant.
+ Change (SIZEOF_CHAR SIZEOF_DOUBLE SIZEOF_FLOAT SIZEOF_INT SIZEOF_LONG
+ SIZEOF_LONG_DOUBLE SIZEOF_PTRDIFF_T SIZEOF_SHORT SIZEOF_SIZE_T
+ SIZEOF_WINT_T) from "#undef ..." to "#define ... constant" where
+ "constant" is the size in Microsoft Visual C++ 6.0 for 32-bit API.
+ Add (ALLOW_CONFIG_OVERRIDE HAVE_BP_SYM_H HAVE_DECL_GETDELIM
+ HAVE_DECL_GETLINE HAVE_FLOCKFILE HAVE_FUNLOCKFILE HAVE_GAI_STRERROR
+ HAVE_GETADDRINFO HAVE_IPV6 HAVE_ISBLANK HAVE_LANGINFO_CODESET
+ HAVE_TCGETATTR HAVE_TCSETATTR HAVE_TERMIOS_H HAVE___FSETLOCKING
+ _REGEX_LARGE_OFFSETS) as "#undef ..." macro.
+ Add (HAVE_IPV4 HAVE_LOCALE_H HAVE_WCRTOMB HAVE_WCSCOLL) as
+ "#define ... 1" macro.
+ Add "#define strcasecmp rpl_strcasecmp" macro.
+
+ * config.h config.h.in: Regenerated on UNIX for "config.h.in.footer"
+ and "config.h.in.in" changes.
+
+ * filesubr.c mkdir.c: Add "#undef mkdir" to use Microsoft function.
+
+ * unistd.h: Don't include Microsoft "mkdir" function from here, done
+ in "config.h.in.footer" file per Derek Price.
+
+2005-09-22 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.footer: Move macros to correct section in sorted order.
+
+2005-09-21 Conrad T. Pino <Conrad@Pino.com>
+
+ * fix-msvc-mak.pl: Remove "basetsd" from "../lib/libcvs.dep".
+
+2005-09-20 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): s/netdb.c/netdb.h/.
+
+ * Makefile.am (EXTRA_DIST): Add netdb.h, sys/socket.h, & sys/types.h.
+
+2005-09-20 Conrad T. Pino <Conrad@Pino.com>
+
+ * netdb.h: Add empty file since Windows doesn't provide one.
+
+2005-09-19 Conrad T. Pino <Conrad@Pino.com>
+
+ * pwd.c: Replace include of "woe32.h" with "config.h" which
+ includes "woe32.h" to fix compile error in "lib/timespec.h"
+ that depends on "config.h".
+
+2005-09-19 Conrad T. Pino <Conrad@Pino.com>
+
+ * filesubr.c: Remove "extern char *Tmpdir" reference.
+
+2005-09-19 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-ch): Sub PACKAGE_STRING rather than reconstructing
+ it. Sub PACKAGE_BUGREPORT.
+ (stamp-chi): Fix grammar in comment.
+ * config.h.in.in (PACKAGE_BUGREPORT): Define macro.
+ (PACKAGE_STRING): Use $PACKAGE_STRING directly.
+
+2005-09-04 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_PUTENV): Remove.
+
+2005-09-01 Derek Price <derek@ximbiot.com>
+
+ * README, sys/types.h: Update links and email addresses.
+
+2005-08-12 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_GETCWD): Remove this macro.
+
+2005-08-03 Jim Hyslop <jhyslop@dreampossible.ca>
+
+ * filesubr.c: don't expand "." to the name of the current directory.
+ * config.h, config.h.in, config.h.in.in: enabled HAVE_PRINTF_PTR and
+ HAVE_GETCWD.
+
+2005-07-12 Derek Price <derek@ximbiot.com>
+
+ * mkdir.c, startserver.c, woe32.c: Add copyright notices.
+
+2005-07-12 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.footer: Restore missing FIXME response.
+
+2005-07-11 Derek Price <derek@ximbiot.com>
+
+ * mkdir.c, startserver.c, woe32.c: Update license notices.
+
+2005-07-07 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.footer (WOE32): New macro.
+
+2005-06-10 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: Remove HAVE_LSTAT_EMPTY_STRING_BUG,
+ HAVE_STAT_EMPTY_STRING_BUG, stat, and lstat definitions.
+ * config.h.in.footer: Add stat & lstat definitions.
+
+2005-05-31 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h, config.h.in, stamp-chi: Regenerated on Solaris for updates
+ to config.h.in.footer and config.h.in.in committed on Windows.
+
+2005-05-31 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.in: Change macros (gid_t,pid_t,uid_t) to #undef.
+ * pwd.c, pwd.h: Prototypes now (gid_t,uid_t) instead of "int".
+ * pwd.c: Stop useing "root:root" for "uid:gid" values.
+ * unistd.h: Use "windows-NT/sys/types.h" for definitions.
+
+2005-05-31 Conrad T. Pino <Conrad@Pino.com>
+
+ * unistd.c, unistd.c: Add new "usleep" function using "my_usleep"
+ logic taken from "woe32.c" file.
+ * woe32.c, woe32.h: Add new (woe32_home_dir,woe32_shell) functions.
+ * woe32.c: Modify "woe32_nanosleep" to use "unistd.h" "usleep".
+ * filesubr.c: Modify "get_homedir" to use "woe32_home_dir".
+ * pwd.c: Modify "getpwuid" to use "woe32_home_dir" & "woe32_shell".
+ Append "USERNAME" to "login_strings" array.
+
+
+2005-05-30 Conrad T. Pino <Conrad@Pino.com>
+
+ * woe32.c, woe32.h: Move functions into alpabetical order.
+
+2005-05-30 Conrad T. Pino <Conrad@Pino.com>
+
+ * woe32.c: Remove function (getpass,getpid,sleep) implementations.
+ * unistd.c: Add function (getpass,getpid,sleep) implementations.
+
+2005-05-30 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h, config.h.in, stamp-chi: Regenerated on Solaris for updates
+ to config.h.in.footer and config.h.in.in committed on Windows.
+
+2005-05-30 Conrad T. Pino <Conrad@Pino.com>
+
+ * woe32.h: Create header file with ANSI style function prototypes.
+ * woe32.c: Use "woe32.h" header and ANSI style function prototypes.
+ Use minimal #include file set (#include "cvs.h" dropped). Rename:
+ function "init_winsock" to "woe32_init_winsock"
+ function "wnt_cleanup" to "woe32_cleanup"
+ function "nanosleep" to "woe32_nanosleep"
+ function "win32getlogin" to "woe32_getlogin"
+ Change function "sleep" return type to "unsigned int" was "unsigned".
+ * unistd.h: Move function (getpass,getpid,sleep) prototypes here.
+ * config.h.in.footer: Update 2 macros for the above changes:
+ #define SYSTEM_CLEANUP woe32_cleanup
+ #define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
+ Use "woe32.h" header file and remove function prototypes:
+ pid_t getpid (void);
+ void init_winsock (void);
+ unsigned int sleep (unsigned int);
+ void wnt_cleanup (void);
+ * config.h.in.in: Modify 3 macros:
+ #define HAVE_DECL_GETPASS 1 /* was 0 */
+ #define HAVE_DECL_NANOSLEEP 1 /* was #undef */
+ #define nanosleep woe32_nanosleep /* was #undef */
+ * pwd.c: Update to use "woe32.h" and renamed "woe32.c" function.
+
+2005-05-28 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (MISSING_SYS_CDEFS_H): Rename...
+ (_SYS_CDEFS_H): ...as this.
+
+2005-05-28 Conrad T. Pino <Conrad@Pino.com>
+
+ * run.c: Implement functions "run_add_arg_p" and "run_arg_free_p" by
+ copying from "../src/run.c" and change all K&R style function argument
+ declarations to ANSI style.
+
+2005-05-26 Derek Price <derek@ximbiot.com>
+
+ * pwd.h, pwd.c: Reformat to CVS conventions.
+
+2005-05-26 Derek Price <derek@ximbiot.com>
+
+ * ndir.h, ndir.c: Reformatting to CVS conventions.
+
+2005-05-26 Conrad T. Pino <Conrad@Pino.com>
+
+ * filesubr.c: Remove "wnt_lstat" function. Collapse static function
+ "check_statbuf" logic into "wnt_stat" function body.
+
+2005-05-26 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h, config.h.in, stamp-chi: Regenerated on Solaris for updates
+ to config.h.in.footer and config.h.in.in committed on Windows.
+
+2005-05-26 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.footer: Reorganize into 3 sections (macros, typedefs and
+ function prototypes) and alphabetize each section. Synchronize with
+ GNULib import so Windows build succeeds.
+ * config.h.in.in: Synchronize with GNULib import so Windows build
+ succeeds.
+ * unistd.h: Include standard function prototypes from Microsoft files
+ to decrease warnings in GNULib import.
+
+2005-05-25 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (_POSIX_PTHREAD_SEMANTICS): Undef on Windows.
+
+2005-05-25 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (MISSING_SYS_CDEFS_H): Guess this should be defined.
+
+2005-05-23 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (xresolvepath): Remove this function.
+
+2005-05-17 Conrad T. Pino <Conrad@Pino.com>
+
+ * pwd.c, pwd.h: Add "const" modifier to "getpwnam" & "getgrnam" function
+ "char *" argument to elminate warning in "../lib/glob.c" module.
+
+2005-05-02 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: Define LOCK_COMPATIBILITY.
+
+2005-04-25 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h.in.in: Syncronize with ../config.h.in file.
+ Added: #undef HAVE_DECL_MEMRCHR, #undef HAVE_PAM_PAM_APPL_H,
+ #undef HAVE_SECURITY_PAM_APPL_H
+ * config.h, config.h.in: Regenerated.
+
+2005-03-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.am, stdint.h: Updated from GNULIB.
+ * Makefile.in: Regenerated.
+
+2005-03-16 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (open_file): Remove this function.
+
+2005-03-09 Derek Price <derek@ximbiot.com>
+
+ * .cvsignore: Remove mkconfig & fix-msvc-mak.
+ * Makefile.am (EXTRA_DIST): Include mkconfig.pl & fix-msvc-mak.pl.
+ (stamp-chi): Call $(PERL) mkconfig.pl explicitly.
+ * plhead.pl: Remove this file.
+ * mkconfig.pl, fix-msvc-mak.pl: Turn on warnings.
+
+2005-03-07 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h, config.h.in: Regenerate for config.h.in.in change.
+
+2005-03-07 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.in: Synchronize with ../config.h.in file.
+ Removed:
+ #define HAVE_GETCWD 1
+ #define HAVE_GETCWD_NULL 1
+ #undef HAVE_MKDIR
+ #undef HAVE_RENAME
+ #undef HAVE_VALLOC
+ Added:
+ #undef D_INO_IN_DIRENT
+ #undef HAVE_CFLOCALECOPYCURRENT
+ #undef HAVE_CFPREFERENCESCOPYAPPVALUE
+ #define HAVE_CHSIZE 1
+ #define HAVE_DECL___FPENDING 0
+ #define HAVE_DECL_GETCWD 1
+ #define HAVE_ISWPRINT 1
+ #undef HAVE_MAP_ANONYMOUS
+ #define HAVE_MBRTOWC 1
+ #undef HAVE_MBSINIT
+ #undef HAVE_MEMRCHR
+ #undef HAVE_NANOTIME
+ #undef HAVE_OPENAT
+ #undef HAVE_PARTLY_WORKING_GETCWD
+ #undef HAVE_POSIX_MEMALIGN
+ #define HAVE_STRTOL 1
+ #undef HAVE___FPENDING
+ #undef MAP_ANONYMOUS
+ #define PENDING_OUTPUT_N_BYTES ( fp ? fp->_ptr - fp->_base : 0 )
+ #undef RENAME_TRAILING_SLASH_BUG
+ #undef __GETCWD_PREFIX
+ #undef __OPENAT_PREFIX
+ #undef mkdir
+ #undef rename
+ Changed:
+ #undef HAVE_WCHAR_H replaced with #define HAVE_WCHAR_H 1
+ #undef HAVE_WCHAR_T replaced with #define HAVE_WCHAR_T 1
+
+2005-03-01 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.footer: Remove obsolete timeb stuff.
+
+2005-02-22 Derek Price <derek@ximbiot.com>
+
+ * run.c: Sync with src/run.c.
+ (Patch from Conrad Pino <conrad@pino.com>.)
+
+ * run.c (run_add_arg): Some cleanup.
+
+2005-02-22 Derek Price <derek@ximbiot.com>
+
+ * run.c: Remove several unneeded declarations.
+ (Suggestion from Conrad Pino <conrad@pino.com>.)
+
+2005-01-31 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am: Update copyright notices.
+
+2004-12-14 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-chi): Comment dist stamp-chi reasoning.
+
+2004-12-14 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add stamp-chi.
+ (config.h.in, stamp-chi, DISTCLEANFILES, MAINTAINERCLEANFILES):
+ Reorganize for distributing stamp-chi.
+ * stamp-chi: Restore this file.
+
+2004-12-14 Derek Price <derek@ximbiot.com>
+
+ * stamp-chi: Remove this file - it is generated only in maintainer
+ mode.
+
+2004-11-29 Conrad T. Pino <Conrad@Pino.com>
+
+ * unistd.h: FIXME gethostname prototype for lib/xgethostname.c
+
+2004-11-17 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl (make_config_h): Use stricter regex to avoid warning of
+ the use of "#define" in comments.
+
+2004-11-17 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add JmgStat.c & JmgStat.h.
+ (Thanks to a report from Chris Bohn <cbohn@rrinc.com>.)
+
+2004-11-17 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add unistd.h.
+ (Thanks to a report from Chris Bohn <cbohn@rrinc.com>.)
+
+2004-11-17 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (getopt, getopt_long, getopt_long_only, optarg,
+ opterr, optind, optopt): Remove obsolete definitions.
+ (__GETOPT_PREFIX): Define this for GNULIB getopt.
+
+2004-11-16 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Remove stamp-chi.
+ ($(srcdir)/stamp-chi, $(srcdir)/config.h.in): Rename to...
+ (stamp-chi, config.h.in): Respectively, including associated required
+ target changes.
+
+2004-11-16 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-ch): Replace dependency on Makefile with a
+ dependency on configure.
+
+2004-11-16 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-chi, config.h.in): Rename to...
+ ($(srcdir)/stamp-chi, $(srcdir)/config.h.in): Respectively, including
+ associated required target changes.
+
+2004-11-16 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl (save_copy): Revert previous change.
+ (make_config_h): Don't output full paths to generated comment.
+
+2004-11-15 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl (save_copy): Try to deal with not having write
+ permissions.
+
+2004-11-15 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl: Improve diagnostic messages.
+ (make_config_h): Don't use dir when creating temp file.
+ (save_copy): Use File::Copy::move to portably rename the file, possibly
+ across device boundries.
+
+2004-11-15 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl (make_config_h): Improve diagnostic message.
+
+2004-11-11 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h.in.in (opterr): Define as rpl_opterr for consistency.
+ * config.h.in, config.h: Regenerated.
+
+2004-11-05 Mark D. Baushke <mdb@cvshome.org>
+
+ * filesubr.c (readlink): Removed. Use lib/readlink.c instead.
+
+2004-11-03 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h.in.in (_UINT32_T): Add from top-level config.h.in file.
+ * Makefile.in, config.h.in, config.h, stamp-chi: Regenerated.
+
+2004-11-02 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h.in.in (HAVE_DECL_FLOCKFILE, HAVE_DECL_FUNLOCKFILE,
+ HAVE_ENVIRON_DECL, HAVE_ERRNO_DECL, HAVE_SEARCH_H, HAVE_SETENV,
+ HAVE_TSEARCH, HAVE_UNSETENV, MALLOC_0_IS_NONNULL, VOID_UNSETENV):
+ Add new config options from top-level config.h.in using #undef.
+ Some of these probably exist under Windows and need to be defined.
+ (nanosleep): Move into alphabetical order.
+ (TRUST_OS_FILE_CACHE): Removed as obsolete.
+ * config.h.in, config.h, stamp-chi: Regenerated.
+
+2004-10-30 Mark D. Baushke <mdb@juniper.net>
+
+ * config.h.in.in, config.h.in, config.h: Regenerated
+
+2004-10-26 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (config.h.in): Allow this file to be built even when not
+ in maintainer mode when it is actually missing. Add comment.
+ (stamp-chi): Remove maintainer mode restriction. Add comments.
+
+2004-10-25 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_RPMATCH): Undef this irrelevant macro on WOE32.
+
+2004-10-23 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.in: Change #undef HAVE_STDINT_H to #define ... 1.
+ Change #undef HAVE_STDINT_H_WITH_UINTMAX to #define ... 1.
+ * config.h.in: Regenerated for "config.h.in.in" change.
+ * config.h Regenerated for "config.h.in.in" change.
+
+2004-10-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * .cvsignore: Ignore stamp-sh2
+
+2004-10-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.am (EXTRA_DIST): Add stdint.h.
+ * stdint.h: Regenerated.
+ * Makefile.in: Ditto.
+
+ * config.h.in.in (HAVE_SYS_INTTYPES_H): Update from GNULIB.
+ * Makefile.am (stamp-sh2): Add stdint from GNULIB.
+
+2004-10-22 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (UINT32_MAX, WORDS_BIGENDIAN, uint32_t): Guess that
+ these should all be undef on WOE32.
+
+2004-10-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h.in.footer (getpagesize): Define as 4096 because GNULIB
+ assumes it can include <sys/param.h> which is not available.
+ * config.h.in, config.h, stamp-chi: Regenerated.
+
+2004-10-21 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_OS_H): Undef this on Windoze.
+
+2004-10-20 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (select): Undef this for new sunos57-select.
+
+2004-10-20 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerate for new configure.in.
+
+2004-10-15 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_VASPRINTF): Define this for GNULIB.
+
+2004-10-11 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.in: Add #undef for "HAVE_STDIO_EXT_H", "HAVE_STRCASECMP",
+ "HAVE_STRNCASECMP", "HAVE_WMEMCHR" and "HAVE_WMEMCPY".
+
+2004-10-09 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_DECL_FREE): Remove this define.
+
+2004-10-09 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (optopt, optind, optarg): Define these for GNULIB.
+
+2004-10-07 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Remove stripslash.c.
+
+2004-10-06 Derek Price <derek@ximbiot.com>
+
+ * mkconfig.pl: Check definition is defined, not false, before deciding
+ not to print it.
+
+2004-10-06 Derek Price <derek@ximbiot.com>
+
+ Use getpass proto from getpass.h.
+ * config.h.in.in: Undo last defn.
+ * unistd.h (getpass): Remove proto.
+
+2004-10-06 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: Tell compiler we have a decl for getpass().
+
+2004-10-06 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: Define use of replacement getopt functions.
+
+2004-10-06 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: Undef HAVE_GETOPT_H and HAVE_GETOPT_LONG_ONLY. It
+ sounds like a fairly safe bet that Windoze doesn't have them.
+
+2004-10-06 Mark D. Baushke <mdb@cvshome.org>
+
+ * unistd.h: Add prototype entries for chdir and close
+
+2004-10-05 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: s/FILESYSTEM/FILE_SYSTEM/ in keeping with GNULIB.
+
+2004-10-05 Conrad T. Pino <Conrad@Pino.com>
+
+ * config.h.in.in: Add #define EOVERFLOW, HAVE_GETCWD, HAVE_GETCWD_NULL.
+ * config.h.in: Regenerated for "config.h.in.in" change.
+
+2004-10-05 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (xresolvepath): s/xgetwd/xgetcwd/.
+
+2004-10-05 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in: #undef USE_UNLOCKED_IO.
+
+2004-09-17 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Remove TRUST_OS_FILE_CACHE.
+
+2004-09-17 Derek Price <derek@ximbiot.com>
+
+ * stripslash.c: Remove file.
+
+2004-09-14 Mark D. Baushke <mdb@cvshome.org>
+
+ * filesubr.c (cvs_casecmp): Moved to src/subr.c
+
+2004-09-09 Mark D. Baushke <mdb@cvshome.org>
+
+ * filesubr.c (check_statbuf): Remove unused variables.
+
+2004-09-08 Derek Price <derek@ximbiot.com>
+
+ * JmgStat.c, JmgStat.h: Convert to use UNIX line endings on UNIX.
+ (Thanks to report from Conrad T. Pino <conrad@pino.com>.)
+
+2004-09-07 Derek Price <derek@ximbiot.com>
+
+ * JmgStat.c, JmgStat.h: New files.
+ * filesubr.c (check_statbuf): Use new Windows mod time routine.
+ (Thanks to a report from Chris Bohn <cbohn@rrinc.com>, help from J. C.
+ Hamlin <jchamlin@ibsys.com>, and a published patch from Jonathan
+ Gilligan.)
+
+2004-09-02 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (PROXY_SUPPORT, TRUST_OS_FILE_CACHE): New defines.
+
+2004-06-24 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (restrict): Define empty for Windows.
+ (Patch submitted by Conrad T. Pino <Conrad@Pino.com>.)
+
+2004-06-24 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in (HAVE_RUN_TZSET_TEST, my_strftime): Define to values
+ more appropriate for Windows.
+ (Original patch submitted by Conrad T. Pino <Conrad@Pino.com>.)
+
+2004-06-22 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Add "inline" & "SIZE_MAX" macros for "xsize.h" header.
+ * config.h: Regenerated for "config.h.in" change.
+ (Original patch from Conrad T. Pino <Conrad@Pino.com>.)
+
+2004-06-09 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Remove some files that are included by
+ virtue of appearing in configure.in rules.
+
+2004-05-20 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.footer (ssize_t): Move...
+ * config.h.in (size_t): ...here.
+ (MBLEN, MBRLEN, HAVE_RUN_TZSET_TEST, HAVE_STRFTIME,
+ TZSET_CLOBBERS_LOCALTIME_BUFFER, my_strftime, tzset): New macros.
+ * config.h.in, stamp-chi: Regenerated.
+
+2004-05-20 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-chi): Don't cross line boundries since this does
+ not work portably when @MAINTAINER_MODE_TRUE@ is replaced with a
+ comment. Add config.h.in.footer.
+ * Makefile.in: Regenerated.
+
+2004-05-19 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-chi): This should be a copy of config.h.in, not
+ config.h.
+ * mkconfig.pl: Accept a -q argument to limit verbosity.
+ * Makefile.in, stamp-chi: Regenerated.
+
+2004-05-19 Derek Price <derek@ximbiot.com>
+
+ * .cvsignore: Ignore recently removed stamp files & mkconfig.
+
+2004-05-19 Derek Price <derek@ximbiot.com>
+
+ * config.h.in.in, config.h.in.footer: New files.
+ (Original patch from Conrad Pino <conrad@pino.com>.)
+
+ * Makefile.am (config.h.in): New target.
+ (EXTRA_DIST): Add new files, fix-msvc-mak.pl, & plhead.pl. Remove
+ stamp-ch & stamp-sh.
+ (DISTCLEANFILES): Add stamp-ch & stamp-sh.
+ (MAINTAINERCLEANFILES): Add config.h.in & stamp-chi.
+ * stamp-ch, stamp-sh: Remove these files. There is no need to check in
+ targets that don't require maintainer tools to build.
+ * fix-msvc-mak-head.pl: Move to...
+ * plhead.pl: ...here.
+ * mkconfig.pl: New file.
+
+ * Makefile.in, config.h, config.h.in: Regenerated.
+
+2004-05-15 Derek Price <derek@ximbiot.com>
+
+ * ndir.c, pwd.c: Include xmalloc.h.
+ (Patch from Conrad Pino <conrad@pino.com>.)
+
+2004-05-14 Derek Price <derek@ximbiot.com>
+
+ * woe32.c (my_usleep): Declare as static.
+ (Report from Conrad Pino <conrad@pino.com>.)
+
+2004-05-14 Derek Price <derek@ximbiot.com>
+
+ * woe32.c: Fix typo in last commit.
+ (Patch from Conrad Pino <conrad@pino.com>.)
+
+2004-05-14 Derek Price <derek@ximbiot.com>
+
+ * stamp-ch: Regenerated.
+
+2004-05-14 Derek Price <derek@ximbiot.com>
+
+ * woe32.c (usleep): Remove.
+ (my_usleep, nanosleep): New functions.
+ (Reported by Conrad Pino <conrad@pino.com>.)
+
+2004-05-12 Mark D. Baushke <mdb@cvshome.org>
+
+ * unistd.h: New file (to provide a getpass prototype).
+ * config.h.in (HAVE_UNISTD_H): #define instead of #undef.
+ * config.h: Regenerated.
+ (Original from Conrad Pino <conrad@pino.com>)
+
+2004-05-11 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (last_component): s/ISDIRSEP/ISSLASH/.
+
+2004-04-27 Derek Price <derek@ximbiot.com>
+
+ * config.h.in (FILENAMES_CASE_INSENSITIVE,
+ FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX,
+ FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR, FILESYSTEM_PREFIX_LEN,
+ ISSLASH): Define these.
+ * config.h, stamp-ch: Regenerated.
+
+2004-04-26 Derek Price <derek@ximbiot.com>
+
+ * fix-msvc-mak.pl: Default to RECURSE=1 for cvsnt.mak.
+
+2004-04-25 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (stamp-sh): s/\$\(HAVE__BOOL\)/0/. Windows does not
+ HAVE__BOOL.
+ * stdbool.h, stamp-sh, Makefile.in: Regenerated.
+
+2004-04-23 Derek Price <derek@ximbiot.com>
+
+ * stamp-ch: Regenerated.
+
+2004-04-23 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add stdbool.h & stamp-sh.
+ (stdbool.h, stamp-sh): New targets.
+ * stdbool.h, stamp-sh: New files.
+ * Makefile.in: Regenerated.
+
+2004-04-23 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Don't define HAVE_ALLOCA. Let alloca_.h do it instead.
+ * config.h: Regenerated.
+
+2004-04-20 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (deep_remove_dir): Correct typo.
+
+2004-04-20 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (unlink_file_dir, deep_remove_dir): Handle errno of
+ ENOTEMPTY from dirs under Windows XP.
+ (Report and suggested fix from Ken Raeburn <raeburn@mit.edu>.)
+
+2004-04-15 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Define HAVE_ALLOCA_H and HAVE_ALLOCA to get around the
+ dain bramage of a few GNULIB modules.
+ * config.h, stamp-ch: Regenerated.
+
+2004-04-15 Derek Price <derek@ximbiot.com>
+
+ * fix-msvc-mak.pl: Remove default build configuration hooks.
+
+2004-04-15 Derek Price <derek@ximbiot.com>
+
+ * fix-msvc-mak.pl: Set default build configuration to Debug.
+
+2004-04-14 Derek Price <derek@ximbiot.com>
+
+ * cvsntfix.pl: Rename to...
+ * fix-msvc-mak.pl: ...this.
+ * fix-msvc-mak-head.pl: New file.
+ * .cvsignore: Add fix-msvc-mak.
+
+2004-04-14 Derek Price <derek@ximbiot.com>
+
+ * cvsntfix.pl: New file.
+ (Original from Conrad Pino <conrad@pino.com>.)
+
+2004-04-05 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (isabsolute): Remove this function for real.
+
+2004-04-04 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (isabsolute): Remove this function.
+
+2004-03-29 Derek Price <derek@ximbiot.com>
+
+ * README: Note makefiles geenerated with MSVC++ 5.x.
+
+2004-03-28 Derek Price <derek@ximbiot.com>
+
+ * README: Note MSVC pathing problem when exporting makefiles.
+
+2004-03-26 Derek Price <derek@ximbiot.com>
+
+ * README: Note build files generated using MSVC 6.0. Erase uneccessary
+ jab at Microsoft's inability to create a portable makefile.
+
+2004-03-25 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Define realloc to rpl_realloc to use the version from
+ lib/realloc.c.
+ * config.h: Regenerated.
+
+2004-03-20 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (mkdir_if_needed, xchmod, last_component), run.c
+ (piped_child): Comply with new prototypes.
+
+2004-03-11 Derek Price <derek@ximbiot.com>
+
+ * config.h.in (SIZE_MAX): Define.
+
+2004-02-26 Derek Price <derek@ximbiot.com>
+
+ * config.h.in: Add definition for inline for GNULIB xalloc module.
+ * config.h, stamp-ch: Regenerated.
+
+2003-12-18 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for 1.12.5.1.
+
+2003-12-18 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for release 1.12.5.
+
+2003-12-10 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am: Include code to put a warning at the beginning of the
+ generated config.h that it should not be edited and to edit config.h.in
+ instead.
+ * Makefile.in, config.h: Regenerated.
+
+2003-12-10 Derek Price <derek@ximbiot.com>
+
+ * config.h.in (SYSTEM_CLEANUP): That's because you need to change it
+ here.
+ * config.h: Regenerated.
+
+2003-12-10 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h (SYSTEM_CLEANUP): Update macro to be a name
+ replacement rather than a macro function. Note: This
+ change seems to be undone by 'autoreconf'.
+
+2003-12-10 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h (SYSTEM_CLEANUP): Update macro to be a name replacement
+ rather than a macro function.
+ (Patch from Rob Clevenger <rob@robsite.org>.)
+
+2003-12-09 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for release 1.12.4.1.
+
+2003-12-09 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for release 1.12.4.
+
+2003-12-05 Mark D. Baushke <mdb@cvshome.org>
+
+ * filesubr.c (xresolvepath): Comment out assert() call.
+
+2003-12-05 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for dev version 1.12.3.1.
+
+2003-12-04 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for release 1.12.3.
+
+2003-11-25 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerate for new configure.in.
+
+2003-10-27 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for 1.12.2.1.
+
+2003-10-27 Derek Price <derek@ximbiot.com>
+
+ * config.h, stamp-ch: Regenerated for 1.12.2.
+
+2003-10-27 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am (EXTRA_DIST): Add stamp-ch.
+ * Makefile.in: Regenerated.
+
+2003-07-30 Derek Price <derek@ximbiot.com>
+
+ * README: Correct name and links to the Cygwin project.
+ (Original patch from Max Bowsher <maxb@ukf.net>.)
+
+2003-07-17 Derek Price <derek@ximbiot.com>
+
+ * stamp-ch: Regenerated.
+
+2003-07-17 Larry Jones <lawrence.jones@eds.com>
+
+ * config.h.in (PROTOTYPES): Remove as per config.h.
+
+2003-07-16 Derek Price <derek@ximbiot.com>
+
+ * config.h (PROTOTYPES): Remove definition.
+ * filesubr.c: s/PROTO/.
+ * run.c: Ditto.
+
+2003-06-13 Derek Price <derek@ximbiot.com>
+
+ * filesubr.c (cvs_temp_file): Add a FIXME comment in regards to using
+ mkstemp() from GNULIB (already in lib/mkstemp.c).
+
+2003-06-11 Larry Jones <lawrence.jones@eds.com>
+
+ * filesubr.c (xresolvepath): Fix memory leak.
+ (Original patch from Kenneth Lorber <keni@his.com>.)
+
+2003-06-11 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerate for new configure.in.
+
+2003-07-30 Derek Price <derek@ximbiot.com>
+
+ * README: Correct name and links to the Cygwin project.
+ (Original patch from Max Bowsher <maxb@ukf.net>.)
+
+2003-06-09 Derek Price <derek@ximbiot.com>
+
+ * win32.c (gethostname): Remove this function. It has been commented
+ out since 1995-08-30 and...
+ (*): ...move the rest of the contents...
+ * woe32.c: ...to this new file in accordance with the GNU convention to
+ avoid implying that we consider the Microsoft Windows Operating
+ Environment any sort of "win".
+ * Makefile.am (EXTRA_DIST): Rename win32.c woe32.c.
+
+ * Makefile.in: Regenerated.
+
+2003-06-04 Derek Price <derek@ximbiot.com>
+
+ * config.h.in (RSH_DFLT): Replace accidentally deleted macro.
+ (USE_PROTOTYPES): Move back to...
+ (PROTOTYPES): ...here.
+ (HAVE_STDLIB_H, HAVE_SYS_TYPES_H, HAVE_SYS_STAT_H, HAVE_MALLOC,
+ HAVE_REALLOC): New defines to sync with UNIX code.
+ * filesubr.c (locate_rcs, find_file_in_dir): Remove these functions
+ since they are now available in the generic source.
+
+ * config.h: Regenerated.
+
+2003-06-04 Derek Price <derek@ximbiot.com>
+
+ * config.h: Regenerated, but move the contents...
+ * config.h.in: ...into this new file first and stick a token in...
+ (PACKAGE_STRING): ...here in place of the CVS version number.
+ * Makefile.am (all-local, stamp-ch, config.h): New targets providing
+ for dynamic generation of config.h so that I can no longer forget to
+ update the version number in config.h when I update configure.in.
+ * stamp-ch: New file.
+
+ * Makefile.in: Regenerated.
+
+2003-05-21 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerate with Automake version 1.7.5.
+
+2003-05-20 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-05-19 Derek Price <derek@ximbiot.com>
+
+ * config.h (PACKAGE_STRING): updated to 1.12.0.1;
+ changed USE_PROTOTYPES to PROTOTYPES
+ * filesubr.c: synchronized logic in deep_remove_dir() with
+ src/filesubr.c; copied xresolvepath(), cvs_casecmp(),
+ locate_file_in_dir(), and locate_rcs().
+ (Patch from Anthon Pang <apang@telus.net>.)
+
+2003-05-09 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-04-30 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-04-10 Larry Jones <lawrence.jones@eds.com>
+
+ * Makefile.in: Regenerated.
+
+2003-03-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am: Update copyright notice.
+
+ * Makefile.in: Regenerated.
+
+2003-03-19 Mark D. Baushke <mdb@cvshome.org>
+
+ * config.h (RSH_DFLT): Default to "rsh".
+
+ * Makefile.in: Regenerated.
+
+2003-03-19 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-02-25 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-01-20 Derek Price <derek@ximbiot.com>
+
+ * config.h: Update to dev version 1.11.5.1.
+
+2003-01-16 Derek Price <derek@ximbiot.com>
+
+ * config.h: Update to CVS version 1.11.5.
+
+2003-01-16 Derek Price <derek@ximbiot.com>
+
+ * config.h (PACKAGE_STRING): Update for dev version (1.11.4.1).
+
+2002-12-28 Derek Price <derek@ximbiot.com>
+
+ * config.h (PACKAGE_STRING): Add FIXME.
+
+2002-12-28 Derek Price <derek@ximbiot.com>
+
+ * config.h (PACKAGE_STRING): Define.
+ * filesubr.c (strcat_filename_onto_homedir): New function.
+ (Thanks to Stephane Rouleau <s.rouleau@videotron.ca>,
+ Cristopher Seawood <cls@seawood.org>, and
+ Frederico Costa <frederico.costa@tiscali.no> for all their hints,
+ tips, and patches for this problem.)
+
+2002-12-19 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am: Remove reference to options.h.
+ * options.h: Remove file and move relevant content...
+ * config.h: ...here.
+
+ * Makefile.in: Regenerated.
+
+2002-12-06 Derek Price <derek@ximbiot.com>
+
+ * ndir.c: Replace some calls to malloc with calls to xmalloc.
+ * pwd.c: Ditto.
+ (Reported by Dan Peterson <dbpete@aol.com>.)
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * options.h: Remove prototype of STDC exit().
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated using Automake 1.6.3.
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2002-09-24 Larry Jones <lawrence.jones@eds.com>
+
+ * options.h: Remove PATCH_PROGRAM.
+
+2002-08-16 Derek Price <derek@ximbiot.com>
+
+ * options.h: Remove RELATIVE_REPOS & move CVS_BADROOT...
+ * config.h: ...here.
+
+2002-04-30 Derek Price <oberon@umich.edu>
+
+ * Makefile.in: Regenerated with automake 1.6.
+
+2001-09-18 Derek Price <dprice@collab.net>
+
+ * win32.c: config.h should be #included with double quotes; and be the
+ first among the headers.
+ (Patch from Corey Minyard <minyard@acm.org> via
+ Alexey Mahotkin <alexm@hsys.msk.ru>.)
+
+2001-09-04 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with automake 1.5.
+
+2001-08-09 Derek Price <dprice@collab.net>
+
+ * config.h: Back out the HAVE_GETPAGESIZE thing. That was a mistake.
+
+2001-08-09 Derek Price <dprice@collab.net>
+
+ * config.h: Define ssize_t as int.
+ (Bug report and patch from "Manfred Klug" <manklu@web.de>.)
+
+2001-08-09 Derek Price <dprice@collab.net>
+
+ * config.h: Define HAVE_GETPAGESIZE under Windows.
+ (Bug report from "Manfred Klug" <manklu@web.de>.)
+
+2001-08-06 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated.
+
+2001-07-04 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with new Automake release candidate 1.4h.
+
+2001-06-28 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with new version of Automake.
+
+2001-04-25 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated using AM 1.4e as of today at 18:10 -0400.
+
+2001-03-14 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.in: Regenerated
+
+2001-02-15 Derek Price <derek.price@openavenue.com>
+ Laine Stump <laine+info-cvs@laine.org>
+
+ * config.h: Define HAVE_USLEEP and define a prototype for usleep.
+ * win32.c (usleep): New function.
+
+2000-12-22 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.in: Regenerated
+
+2000-12-21 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.am: New file needed by Automake
+ * Makefile.in: Regenerated
+
+2000-11-21 Derek Price <derek.price@openavenue.com>
+
+ * filesubr.c (check_statbuf): subtract 3600 from the times returned
+ by the stat function when daylight savings time is in effect due to a
+ bug in Windoze. Fixes a bug where CVS thinks all files have been
+ touched after a transition to or from daylight savings time.
+
+2000-11-20 Derek Price <derek.price@openavenue.com>
+
+ * filesubr.c (cvs_temp_file): add this function to match the one in
+ src/filesubr.c
+ (cvs_temp_name): wrap cvs_temp_file as in src/filesubr.c
+
+2000-10-18 Derek Price <derek.price@openavenue.com>
+
+ * config.h: Add () to a macro function to supress a warning.
+
+2000-06-26 Larry Jones <larry.jones@sdrc.com>
+
+ * config.h: Define REGEX_MALLOC and _REGEX_RE_COMP.
+
+2000-01-02 Karl Fogel <kfogel@red-bean.com>
+
+ * pwd.c (getlogin): try to find login name in environment
+ variables before asking the operating system.
+
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * options.h: Make RELATIVE_REPOS the default, as in
+ ../src/options.h.in.
+ Remove CVS_DIFFDATE; removed from CVS on 27 Jun 1996.
+
+1998-10-13 Jim Kingdon
+
+ * README: Update information about make/project files, cygwin and
+ the (lack of) need for RCS 5.7. Tweak a few more things.
+
+1998-10-03 Jim Kingdon
+
+ * win32.c: Include cvs.h and only check server_active if
+ SERVER_SUPPORT is defined.
+
+1998-10-02 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ (This was reported by someone else but I don't remember who).
+ * config.h: Define SYSTEM_CLEANUP.
+ * win32.c (wnt_cleanup): New function, implements it.
+
+1998-09-28 Johannes Stezenbach <johannes.stezenbach@propack-data.de>
+ and Jim Kingdon
+
+ * config.h (CVS_RENAME): Define.
+ * filesubr.c, config.h (wnt_rename): New function.
+ * filesubr.c (rename_file): Call CVS_RENAME not rename.
+
+1998-09-04 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * win32.c (gethostname): Expand comment about gethostname
+ vs. GetComputerName (reported by Randy Coulman).
+
+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.
+
+Tue Feb 17 02:31:41 1998 Noel Cragg <noel@swish.red-bean.com>
+
+ * filesubr.c (last_component): return the top-level directory when
+ asked about the top-level directory.
+
+Fri Jan 16 00:57:31 1998 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh: Remove. As far as I know the Windows hacks in this
+ file have been superceded by improvements to Cygwin and/or Ian's
+ recent changes to src/sanity.sh. The ones I noticed: we had been
+ working around lack of /dev/null (apprently Cygwin now has it); we
+ had been not expecting rm -rf to delete readonly files (apparently
+ it now does); there was an issue with case of arguments passed on
+ command line (it would seem like Cygwin has changed this).
+ I also notice that the file had not even been in the distribution
+ because it was missing from Makefile.in (ugh).
+
+13 Jan 1998 Jim Kingdon
+
+ * run.c (run_exec): Change parameters from char * to const char *.
+
+Tue Jan 13 16:57:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * config.h (FOLD_FN_CHAR): Don't define; instead move to
+ lib/system.h, where it is defined conditionally.
+ (FILENAMES_CASE_INSENSITIVE, ISDIRSEP): Likewise.
+ (WNT_filename_classes, fncmp, fnfold): Likewise for declarations.
+ * filesubr.c (WNT_filename_classes): Remove; now in lib/fncase.c.
+ (fncmp, fnfold): Likewise.
+
+Tue Jan 13 13:15:34 1998 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c: Adjust run_setup for new calling convention.
+
+ * config.h (DIFF): Remove; no longer used.
+ * options.h (DIFF, RCSBIN_DFLT): Remove; no longer used.
+
+Wed Dec 31 10:56:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h, filesubr.c (convert_file): Remove; no longer used
+ (except for BROKEN_READWRITE_CONVERSION which doesn't apply).
+
+Sat Dec 27 16:57:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h (HAVE_RCS5): Remove; no longer used.
+
+ * config.h (LINES_CRLF_TERMINATED): Remove; no longer used.
+
+Tue Dec 23 08:28:44 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Change bug-cvs address from prep.ai.mit.edu to gnu.org
+ per email from Martin Hamilton.
+
+Sun Nov 30 18:03:02 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c (run_args): Remove; nowhere used.
+
+Sat Nov 29 22:21:19 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Remove declaration of getwd; see lib/ChangeLog for
+ rationale.
+
+Wed, 12 Nov 1997 Jim Kingdon
+
+ * config.h: Define same_file.
+
+Sun, 9 Nov 1997 Jim Kingdon
+
+ * config.h: Define HAVE_SETMODE.
+
+Mon Nov 10 11:15:54 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c (call_diff, call_diff3): Removed, per change to
+ src/rcscmds.c.
+
+Fri Oct 31 16:52:30 1997 Abe Feldman
+
+ * config.h: Define UTIME_EXPECTS_WRITABLE.
+
+Tue Oct 28 14:50:37 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c: Also define call_diff and call_diff3.
+
+Sat Sep 13 20:13:09 1997 <Martin.Sjoelin@ubs.ch>
+ indentation/whitespace fixes by Jim Kingdon
+
+ * run.c (quote): quote any " included in argument string to
+ avoid having ci choke on message string format.
+
+Sun Sep 7 19:59:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Add section on coding standards (win32, ANSI, &c).
+
+Fri Aug 29 19:13:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (isabsolute): Add comment about interaction with
+ strip_trailing_slashes (reported by Jin S Choi <jsc@w3health.com>).
+
+Thu Aug 28 12:06:37 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (link_file): Remove #if 0'd version; the real version
+ is elsewhere in this file.
+
+Sun Aug 10 21:08:12 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * ndir.c, ndir.h, pwd.c, pwd.h: Remove $Header; we decided to
+ get rid of these some time ago.
+
+Sun Aug 3 21:14:33 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Note KLUDGE_FOR_WNT_TESTSUITE when discussing tests.
+
+Fri Jul 18 09:49:52 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Adjust discussion of makefiles to deal with Visual C++
+ 5.x. One doesn't need patch if client and server are current.
+
+10 Jul 1997 Jim Kingdon
+
+ * config.h: Define USE_SETMODE_STDOUT.
+
+8 Jul 1997 Jim Kingdon
+
+ * rcmd.c (rcmd_authenticate): With error message, print the
+ user names that we were attempting to use.
+ * win32.c (win32getlogin): If GetUserName returns "", return
+ NULL.
+
+Sun, 22 Jun 1997 Jim Kingdon
+
+ * win32.c: Also include winsock.h.
+ Include stdlib.h (for exit()).
+ * rcmd.c: Move include of cvs.h above test of HAVE_WINSOCK_H.
+
+Tue Jun 17 16:35:06 1997 Jim Kingdon (unknown@beezley)
+
+ * rcmd.c: Check HAVE_WINSOCK_H in figuring out which files
+ to include (see comment about making this portable). If not
+ HAVE_WINSOCK_H, make various #definitions.
+ * rcmd.c (init_winsock): Move from here...
+ * win32.c: ...to here.
+ * rcmd.c (bind_and_connect, resolve_address): Shut up gcc -Wall
+ (which doesn't know that error (1, ...) doesn't return).
+
+Sun Jun 8 23:43:21 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h (HAVE_MKFIFO): Remove; not used anywhere.
+
+Sat May 3 11:15:46 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * rcmd.c: Add "copyright" notice.
+
+Thu Apr 17 00:15:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in: Add sockerror.c.
+
+Wed Apr 9 15:29:45 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (expand_wild): Add comments about "." and comparing
+ NULL pointers.
+
+8 Apr 1997 Jim Kingdon
+
+ * rcmd.c: Instead of returning -1 and passing that back to
+ startserver.c which will print a very vague error message, call
+ error() right away with a specific message. This also fixes
+ some places where we had bogusly called GetLastError instead of
+ WSAGetLastError.
+ (init_winsock): Remove call to setsockopt. It was an artifact
+ from before the time that we defined NO_SOCKET_TO_FD, doesn't
+ seem to be needed any more, and fails with some non-Microsoft
+ winsock implementations.
+
+Wed Apr 2 14:08:10 1997 Vince Del Vecchio <vdelvecc@spd.analog.com>
+ and Jim Kingdon
+
+ * sockerror.c: New file.
+ * config.h (SOCK_STRERROR, SOCK_ERRNO): New macros.
+ * startserver.c: In reporting errors from socket calls, use
+ SOCK_STRERROR and SOCK_ERRNO since strerror(errno) doesn't work
+ for Win32.
+ * rcmd.c (rcmd_authenticate): Use WSASetLastError instead of
+ assigning to errno, since that is where the caller will look.
+
+Sun Apr 6 17:22:19 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (copy_file): Add comment about CopyFile.
+
+Wed Mar 26 13:13:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Also mention tar and gzip.
+
+ * README: Binaries are now under 1.9, not 1.8.3, on
+ ftp.cyclic.com. Also mention http URL.
+
+13 Mar 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (get_homedir): Allocate pathbuf; removes arbitrary
+ limit.
+
+Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (get_homedir): Expand comment about HOME
+ vs. HOMEDRIVE/HOMEPATH.
+
+ * config.h (HAVE_SETVBUF): Removed; no longer used.
+
+Thu Mar 6 19:46:53 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: tab stop setting apparently was under "Editor" in Visual
+ C++ 2.x but it is under "Tabs" in Visual C++ 4.x.
+ List number of warnings for regex.c (103, which is actually down
+ from 121 prior to the change I just made to regex.c).
+
+Sat Feb 15 15:27:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in (dist-dir): Also handle SUBDIRS.
+ (SUBDIRS): New variable.
+
+Wed Jan 29 18:28:17 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h, options.h (GREP): Remove; no longer used.
+
+Tue Jan 28 18:29:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h: Remove SIZEOF_INT and SIZEOF_LONG; no longer needed
+ with lib/md5.c changes.
+
+1997-01-08 Jim Kingdon
+
+ * filesubr.c (expand_wild): If we just find a file (that
+ is, without expanding a wildcard), return the file name
+ as specified rather than as it exists in the filesystem.
+
+Thu Jan 2 13:30:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c, ndir.c, ndir.h, pwd.c, pwd.h, run.c, stripslash.c:
+ Remove "675" paragraph; see ../ChangeLog for rationale.
+
+Wed Jan 1 22:51:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Reword comment for TMPDIR_DFLT to make it clear that
+ this isn't specific to the pserver server.
+
+Tue Dec 31 14:17:38 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Remove another mention of grep; CVS no longer uses it.
+
+Tue Dec 31 11:01:29 1996 Noel Cragg <noel@gargle.rain.org>
+
+ * README: Add note that the various support utilities can also be
+ found at the Cyclic FTP site; things move around on the net.
+
+Tue Dec 31 12:33:29 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Add note about lack of need for rsh. I don't know if
+ this is the best place to talk about this, but many people get
+ confused by it.
+
+Sat Nov 30 15:33:22 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Grep is no longer required. Specify when gzip is required.
+
+Tue Nov 19 17:19:35 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in (SOURCES): Remove strippath.c.
+ * strippath.c: Removed.
+
+Sun Nov 10 22:54:04 1996 Paul Sanders <p.sanders@dial.pipex.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c (run_popen): Save and restore file descriptors.
+
+Fri Oct 18 16:54:00 1996 Tony Brusseau <brusseau@jprc.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * strippath.c (strip_path): Leave leading "\\" unmolested for UNC.
+
+Thu Oct 17 10:57:06 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Clarify who it is who needs to be able to mount the
+ repository.
+
+Mon Oct 14 08:30:38 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Remove item about markso Win95 web site now that it is
+ merged in. Mention Win95 at beginning.
+
+Tue Oct 8 12:37:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * options.h (HAD_RCS4): Remove; no longer used.
+
+Wed Sep 25 14:31:51 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h (TMPDIR_DFLT): Change from c:\temp to c:\\temp.
+
+Tue Sep 24 14:37:29 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Add TMPDIR_DFLT.
+
+Tue Sep 10 19:20:25 1996 Mark A. Solinski <markso@mcs.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ This is said to be the last set of changes needed for Win95:
+ * rcmd.c: Include cvs.h.
+ (rcmd_authenticate): Use send/recv instead of read/write.
+ (rcmd): Don't call _open_osfhandle; just return the socket.
+ * options.h: Move NO_SOCKET_TO_FD from here...
+ * config.h: ...to here. Update comment.
+ * config.h (START_SERVER_RETURNS_SOCKET, SEND_NEVER_PARTIAL):
+ Define.
+ * startserver.c (shutdown_fd): Remove; it is unused.
+ (wnt_start_server): Don't dup the file descriptor; instead set
+ both *tofd and *fromfd to read_fd.
+ (wnt_shutdown_server): Don't call _get_osfhandle; just use the
+ argument as the socket.
+
+Wed Sep 4 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * filesubr.c (mkdir_if_needed): mkdir on NT only takes one,
+ not two, arguments.
+
+Thu Aug 29 09:47:33 1996 Mark A. Solinski <markso@mcs.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (deep_remove_dir, unlink_file_dir): ENOENT can also
+ mean that we tried to unlink a directory (Win95).
+
+Mon Aug 26 12:47:58 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (mkdir_if_needed): Added.
+
+Thu Aug 22 19:12:17 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ The following changes are said to be necessary (but not
+ sufficient) for Win95:
+ * config.h (sleep): Use "unsigned int" not just "unsigned".
+ * filesubr.c (deep_remove_dir): Treat EACCES as well as ENOTEMPTY
+ as an indication that we need to remove the directory.
+
+Fri Aug 16 16:06:22 1996 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * Makefile.in (installdirs): new (empty) target
+
+Mon Aug 12 14:45:16 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h: Remove CLIENT_ONLY; it is nowhere used.
+
+Mon Jul 15 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * README: Add note about tab stop setting.
+
+Fri Jun 7 13:07:37 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h: Change INITIALIZE_SOCKET_SUBSYSTEM to
+ SYSTEM_INITIALIZE to reflect change in ../src/main.c.
+
+Mon Jun 03 01:00:08 1996 noel <noel@BOAT_ANCHOR>
+
+ * sanity.sh: include new tests from ../src/sanity.sh.
+
+ * filesubr.c (copy_file): use open with O_CREAT instead of creat
+ so we can also use O_BINARY -- we don't want to do any LF -> CR/LF
+ translations when we copy files.
+
+Fri May 17 11:53:13 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: In a few places it used to say "server" when it meant
+ "client". Fix it. Say explicitly that there is no server on NT.
+ Fix typos (4,0 -> 4.0; CVS.system -> CVS).
+
+Thu May 16 16:52:45 1996 Noel Cragg <noel@gargle.rain.org>
+
+ * README: explain which utilities are required for client support
+ and local support in separate paragraphs.
+
+ * filesubr.c (expand_wild): rename max to cvs_max to avoid
+ conflicts with other already-defined routines.
+ (get_homedir): rename min to cvs_min.
+
+Thu May 16 01:18:22 1996 noel <noel@BOAT_ANCHOR>
+
+ * sanity.sh: Hacked version of src/sanity.sh for use under
+ CYGWIN32.
+
+ * filesubr.c (expand_wild): Since FindFirstFile and FindNextFile
+ don't return the pathname of a file, we need to keep track of it
+ ourselves.
+
+ * options.h: Fix defines for DIFF and GREP.
+
+ * run.c (run_exec): Flush stdout and stderr so we end up with the
+ correct interleaving of output for sanity.sh. This can be removed
+ later, if desired.
+
+Wed May 15 23:51:49 1996 Noel Cragg <noel@gargle.rain.org>
+
+ * README: mention that grep is mandatory.
+
+Tue May 14 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * filesubr.c (cvs_temp_name): Call _tempnam not tmpnam.
+
+Tue May 14 13:38:51 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (cvs_temp_name): New function..
+
+Wed May 01 01:28:41 1996 noel <noel@BOAT_ANCHOR>
+
+ * filesubr.c (get_homedir): use both HOMEDRIVE and HOMEPATH to
+ construct the user's home directory.
+
+Tue Apr 9 20:56:14 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Mention CRLF for src/server.c.
+
+Mon Mar 25 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * filesubr.c (expand_wild): New function.
+
+Tue Mar 19 17:55:39 1996 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * startserver.c (wnt_start_server): Cleaned up code to get port
+ (and thus made consistent with VMS and Mac)
+
+Mon Mar 18 14:54:50 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h: Don't declare gethostname; main.c already includes
+ winsock.h. Define FILENAMES_CASE_INSENSITIVE.
+
+Fri Mar 15 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * filesubr.c (fncmp): Fix typo (n1 -> n2) which had caused the
+ function to always return 0.
+
+Thu Mar 7 08:55:39 1996 Jim Blandy <jimb@totoro.cyclic.com>
+
+ * Makefile.in (HEADERS): Remove alloca.h from list.
+
+Wed Feb 28 11:08:06 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Remove AUTH_SERVER_SUPPORT; no longer should be
+ defined in options.h.
+
+ * config.h: Remove C_ALLOCA, CRAY_STACKSEG_END, HAVE_ALLOCA,
+ HAVE_ALLOCA_H, and STACK_DIRECTION to reflect alloca removal.
+ * startserver.c (wnt_start_server): Don't use alloca.
+ * alloca.h: Removed.
+
+Fri Feb 23 18:00:00 1996 Jim Kingdon <kingdon@cyclic.com>
+
+ * options.h: Define AUTH_CLIENT_SUPPORT and NO_SOCKET_TO_FD.
+ * config.h: Define HAVE_WINSOCK_H.
+ * win32.c (getpass): New function.
+ * filesubr.c (get_homedir): New function.
+
+Mon Feb 12 16:09:24 1996 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * run.c (run_popen): Changed more Popen() to run_popen()
+
+Mon Feb 12 03:33:27 1996 Benjamin J. Lee <benjamin@cyclic.com>
+
+ * run.c: Changed Popen() to run_popen() for the benefit of
+ case-insensitive linkers (VMS) which confuse Popen() with popen()
+
+Fri Feb 9 22:10:12 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in (distclean): Remove Makefile.
+
+ * config.h: Remove SYSTEM_COMMENT_TABLE.
+
+Thu Feb 1 15:09:17 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Remove RM; no longer used.
+
+ * filesubr.c: Remove rcsid.
+
+Thu Jan 11 16:01:27 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Update with information for Visual C++ 4.0, some
+ warnings that weren't mentioned, etc.
+
+Thu Jan 11 12:04:42 1996 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * options.h: remove CVS_NOADMIN
+
+Wed Jan 3 16:17:19 1996 Jon Dart <jdart@tss.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c (filter_stream_through_program): If pidp is NULL, don't
+ store to *pidp.
+ * ndir.h: Change MAXNAMLEN to 255.
+ * run.c (build_command): Deal with it if there are no arguments at
+ all.
+
+Mon Jan 1 23:40:01 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * filesubr.c (link_file): New function.
+
+ * README: Mention CRLF vs. LF in cvsnt.mak. Other minor revisions.
+
+Fri Dec 22 12:00:00 1995 Jim Kingdon <kingdon@peary.cyclic.com>
+
+ * run.c (filter_stream_through_program): On error, error() rather
+ than returning -1.
+
+Thu Dec 21 16:00:00 1995 Jim Kingdon <kingdon@peary.cyclic.com>
+
+ * options.h: Don't define NO_SOCKET_TO_FD.
+
+Mon Dec 18 09:57:29 1995 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * options.h: Explain NO_SOCKET_TO_FD some more.
+
+Sun Dec 17 21:19:18 1995 Karl Fogel <kfogel@floss.cyclic.com>
+
+ * options.h (NO_SOCKET_TO_FD): define to 1.
+
+Tue Dec 12 19:18:00 1995 Karl Fogel <kfogel@floss.cyclic.com>
+
+ * options.h (AUTH_CLIENT_SUPPORT, AUTH_SERVER_SUPPORT): these
+ replace CVS_LOGIN.
+ (RCSBIN_DFLT): expand comment.
+
+Mon Dec 11 12:43:35 1995 adamg <adamg@microsoft.com>
+
+ * config.h: Add INITIALIZE_SOCKET_SUBSYSTEM macro to ensure that
+ winsock is initialized early enough for the gethostname() in
+ main.c to succeed.
+ * rcmd.c: Remove from init_winsock(), and rcmd() code that
+ initialized winsock on demand.
+
+Thu Dec 7 14:49:16 1995 Jim Meyering (meyering@comco.com)
+
+ * filesubr.c (isaccessible): Rename from isaccessable.
+ Update callers.
+
+Mon Dec 4 10:46:31 1995 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * The following change was copied from src/filesubr.c. This is
+ because we need filesubr.c to compile, not because we are trying
+ to make set*id work on NT (if it even has set*id).
+ * filesubr.c (isaccessable): new function. Checks access-rights
+ for files like access(), but is getxid-safe. Falls back to
+ access() if SETXID_SUPPORT is not enabled.
+ (isfile): replace stat() by isaccessable(file, F_OK)
+ (isreadable): replace access() by isaccessable()
+ (iswritable): ditto
+ (make_directory): rename local variable buf to sb
+
+Fri Nov 24 11:17:16 EST 1995 Boleslaw Ciesielski <bolek@viewlogic.com>
+
+ * filesubr.c (convert_file): Pass S_IWRITE to open when creating
+ file (fixes problem with deleting temporary files).
+
+Fri Nov 24 11:12:47 1995 Boleslaw Ciesielski <bolek@viewlogic.com>
+
+ * run.c (build_command): Move len++ inside loop, to make room for
+ spaces between arguments.
+
+Thu Oct 26 10:12:51 1995 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Say that patch is required, not optional.
+
+Wed Oct 25 07:40:17 1995 Noel Cragg <noel@virtual.office.com>
+
+ * startserver.c (wnt_start_server): removed NTOHS call; since the
+ resulting number was passed as the port number to rcmd which
+ called NTOHS again, we did a complicated NOOP.
+
+Tue Oct 24 10:59:03 1995 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * Makefile.in: insert autoconf variables. This allows e.g. make
+ dist to work when configure was called from within a subdir.
+
+ * Makefile.in (dist): replace by rule which honors $(srcdir)
+
+Mon Oct 23 18:51:49 1995 Karl Fogel <kfogel@floss.cyclic.com>
+
+ * Makefile.in (clean): new rule, does nothing but satisfy
+ top-level Makefile's beliefs about what its children can do.
+
+Fri Oct 20 11:09:55 1995 Norbert Kiesel <nk@col.sw-ley.de>
+
+ * config.h: use same layout and comments as current ../config.h.in
+
+ * options.h: as above for ../src/options.h.in
+
+Tue Oct 10 16:04:18 1995 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Update to remove obsolete information (e.g. ftp
+ distributions).
+
+Thu Oct 5 17:28:52 1995 Kevin Layer <layer@franz.com>
+
+ * filesubr.c: Add semicolon after USE.
+
+Thu Sep 7 19:18:00 1995 Jim Blandy <jimb@cyclic.com>
+
+ * config.h (CVS_SUPPORT): #define this.
+
+ * ndir.c (opendir): Make the directory name argument a const
+ char *, instead of just a char *.
+ * ndir.h (opendir): Extern declaration changed to match.
+
+Thu Aug 31 12:00:08 1995 Jim Blandy <jimb@totoro.cyclic.com>
+
+ * Makefile.in (HEADERS, SOURCES): New variables.
+ (DISTFILES): Refer to them, and include README, Makefile.in, and
+ .cvsignore.
+
+ * filesubr.c (unlink_file_dir, deep_remove_dir): New functions,
+ originally added to src/filesubr.c and then adapted here for
+ Windows NT.
+
+Wed Aug 30 15:39:57 1995 Jim Blandy <jimb@totoro.cyclic.com>
+
+ * Windows NT port merged.
+ * README, config.h, filesubr.c, mkdir.c, ndir.c, ndir.h,
+ options.h, pwd.c, pwd.h, rcmd.c, rcmd.h, run.c, startserver.c,
+ strippath.c, stripslash.c, waitpid.c, win32.c: Changed or added.
+
+Thu Aug 10 13:30:00 1995 Jim Blandy <jimb@cyclic.com>
+
+ * filesubr.c, mkdir.c, pwd.c, run.c, win32.c: New source files.
+ * pwd.h: New header file.
+
+Wed Jul 19 18:00:00 1995 Jim Blandy <jimb@cyclic.com>
+
+ * alloca.h: New file.
+
+ * config.h (HAVE_IO_H): Define this.
+
+Tue Jul 18 21:18:00 1995 Jim Blandy <jimb@cyclic.com>
+
+ * config.h, options.h, pwd.h: New files.
diff --git a/windows-NT/JmgStat.c b/windows-NT/JmgStat.c
new file mode 100644
index 0000000..b339577
--- /dev/null
+++ b/windows-NT/JmgStat.c
@@ -0,0 +1,214 @@
+//
+// Original Authors: Jonathan M. Gilligan, Tony M. Hoyle
+//
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2 of the License, or (at your
+// option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// Modification History:
+// 18 May 2001, JMG -- First version
+
+#include <windows.h>
+#include <tchar.h>
+#include <time.h>
+#include <stdbool.h>
+
+#include "JmgStat.h"
+
+
+/* Tony Hoyle's function for testing whether a given volume uses UTC or
+ * local time to record file modification times
+ *
+ * Reproduced here with permission of Tony Hoyle.
+ *
+ * This code is copyright by Tony Hoyle and is licensed under the Gnu
+ * Public License. (See above)
+ *
+ * NTFS, HPFS, and OWFS store file times as UTC times.
+ * FAT stores file times as local time.
+ *
+ * INPUTS:
+ * LPCSTR name: fully qualified path
+ *
+ * OUTPUTS:
+ * Return true if the file system on the volume in question
+ * stores file times as UTC
+ */
+bool IsUTCVolume ( LPCTSTR name )
+{
+ _TCHAR szDrive[_MAX_DRIVE + 1] = _T("");
+ _TCHAR szFs[32]=_T("");
+ _tsplitpath(name, szDrive, NULL, NULL, NULL);
+
+ _tcscat(szDrive, _T("\\"));
+ GetVolumeInformation( szDrive, NULL, 0, NULL, NULL, NULL, szFs, 32 );
+ return ! ( _tcsicmp( szFs, _T("NTFS") )
+ && _tcsicmp( szFs, _T("HPFS") )
+ && _tcsicmp( szFs, _T("OWFS") ) );
+}
+
+/* Convert a file time to a Unix time_t structure. This function is as
+ * complicated as it is because it needs to ask what time system the
+ * filetime describes.
+ *
+ * INPUTS:
+ * const FILETIME * ft: A file time. It may be in UTC or in local
+ * time (see local_time, below, for details).
+ *
+ * time_t * ut: The destination for the converted time.
+ *
+ * bool local_time: TRUE if the time in *ft is in local time
+ * and I need to convert to a real UTC time.
+ *
+ * OUTPUTS:
+ * time_t * ut: Store the result in *ut.
+ */
+static bool FileTimeToUnixTime ( const FILETIME* ft, time_t* ut, bool local_time )
+{
+ bool success = FALSE;
+ if ( local_time )
+ {
+ struct tm atm;
+ SYSTEMTIME st;
+
+ success = FileTimeToSystemTime ( ft, &st );
+
+ /* Important: mktime looks at the tm_isdst field to determine
+ * whether to apply the DST correction. If this field is zero,
+ * then no DST is applied. If the field is one, then DST is
+ * applied. If the field is minus one, then DST is applied
+ * if the United States rule calls for it (DST starts at
+ * 02:00 on the first Sunday in April and ends at 02:00 on
+ * the last Sunday in October.
+ *
+ * If you are concerned about time zones that follow different
+ * rules, then you must either use GetTimeZoneInformation() to
+ * get your system's TIME_ZONE_INFO and use the information
+ * therein to figure out whether the time in question was in
+ * DST or not, or else use SystemTimeToTzSpecifiedLocalTime()
+ * to do the same.
+ *
+ * I haven't tried playing with SystemTimeToTzSpecifiedLocalTime()
+ * so I am nor sure how well it handles funky stuff.
+ */
+ atm.tm_sec = st.wSecond;
+ atm.tm_min = st.wMinute;
+ atm.tm_hour = st.wHour;
+ atm.tm_mday = st.wDay;
+ /* tm_mon is 0 based */
+ atm.tm_mon = st.wMonth - 1;
+ /* tm_year is 1900 based */
+ atm.tm_year = st.wYear>1900?st.wYear - 1900:st.wYear;
+ atm.tm_isdst = -1; /* see notes above */
+ *ut = mktime ( &atm );
+ }
+ else
+ {
+
+ /* FILETIME = number of 100-nanosecond ticks since midnight
+ * 1 Jan 1601 UTC. time_t = number of 1-second ticks since
+ * midnight 1 Jan 1970 UTC. To translate, we subtract a
+ * FILETIME representation of midnight, 1 Jan 1970 from the
+ * time in question and divide by the number of 100-ns ticks
+ * in one second.
+ */
+
+ /* One second = 10,000,000 * 100 nsec */
+ const ULONGLONG second = 10000000L;
+
+ SYSTEMTIME base_st =
+ {
+ 1970, /* wYear */
+ 1, /* wMonth */
+ 0, /* wDayOfWeek */
+ 1, /* wDay */
+ 0, /* wHour */
+ 0, /* wMinute */
+ 0, /* wSecond */
+ 0 /* wMilliseconds */
+ };
+
+ ULARGE_INTEGER itime;
+ FILETIME base_ft;
+
+ success = SystemTimeToFileTime ( &base_st, &base_ft );
+ if (success)
+ {
+ itime.QuadPart = ((ULARGE_INTEGER *)ft)->QuadPart;
+
+ itime.QuadPart -= ((ULARGE_INTEGER *)&base_ft)->QuadPart;
+ itime.QuadPart /= second;
+
+ *ut = itime.LowPart;
+ }
+ }
+ if (!success)
+ {
+ *ut = -1; /* error value used by mktime() */
+ }
+ return success;
+}
+
+/* Get file modification time using FileTimeToUnixTime()
+ *
+ * INPUTS:
+ * LPCTSTR name: the file name
+ */
+bool GetUTCFileModTime ( LPCTSTR name, time_t * utc_mod_time )
+{
+ WIN32_FIND_DATA find_buf;
+ FILETIME mod_time;
+ HANDLE find_handle;
+ bool success = FALSE;
+
+ * utc_mod_time = 0L;
+
+ find_handle = FindFirstFile ( name, &find_buf );
+ success = ( find_handle != INVALID_HANDLE_VALUE );
+ if (success)
+ {
+ /* Originally I thought that I needed to apply a correction
+ * LocalTimeToFileTime() to files from FAT volumes, but the
+ * FindFirstFile() system call thoughtfully applies this
+ * correction itself.
+ *
+ * Thus, the file time returned is allegedly in UTC.
+ *
+ * However, the correction from local to UTC is applied
+ * incorrectly (Thanks a lot, Microsoft!). As documented in the
+ * Win32 API (see MSDN or the PSDK), DST is applied if and only
+ * if the computer's system time is in DST at the time we call
+ * FindFirstFile(), irrespective or whether DST applied at the
+ * time the file was modified!
+ *
+ * Thus, we have to call FileTimeToLocalFileTime() to undo
+ * Windows's good intentions. We correctly translate the time
+ * In FileTimeToUnixTime().
+ *
+ */
+ if ( IsUTCVolume ( name ) )
+ {
+ mod_time = find_buf.ftLastWriteTime;
+ success = FileTimeToUnixTime ( &mod_time, utc_mod_time, FALSE );
+ }
+ else
+ {
+ // See notes above...
+ success = FileTimeToLocalFileTime ( &find_buf.ftLastWriteTime, &mod_time );
+ success = success && FileTimeToUnixTime ( &mod_time, utc_mod_time, TRUE );
+ }
+ }
+ FindClose ( find_handle );
+ return success;
+}
diff --git a/windows-NT/JmgStat.h b/windows-NT/JmgStat.h
new file mode 100644
index 0000000..0c6d95d
--- /dev/null
+++ b/windows-NT/JmgStat.h
@@ -0,0 +1,4 @@
+#ifndef JMGSTAT_H
+# define JMGSTAT_H
+bool GetUTCFileModTime ( LPCTSTR name, time_t * utc_mod_time );
+#endif /* !JMGSTAT_H */
diff --git a/windows-NT/Makefile.am b/windows-NT/Makefile.am
new file mode 100644
index 0000000..c40e73d
--- /dev/null
+++ b/windows-NT/Makefile.am
@@ -0,0 +1,154 @@
+## Process this file with automake to produce Makefile.in
+
+# *** Under Windows NT and Microsoft Visual C++, we use cvsnt.mak, not
+# *** this makefile. However, we need this file in order for 'make
+# *** dist' to work properly on Unix machines.
+
+# Makefile for GNU CVS windows-NT dist.
+#
+# Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+#
+# Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>,
+# and others.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+EXTRA_DIST = \
+ JmgStat.c \
+ JmgStat.h \
+ config.h \
+ config.h.in \
+ config.h.in.in \
+ config.h.in.footer \
+ stamp-chi \
+ mkconfig.pl \
+ fix-msvc-mak.pl \
+ ndir.h \
+ pwd.h \
+ rcmd.h \
+ stdbool.h \
+ stdint.h \
+ filesubr.c \
+ mkdir.c \
+ ndir.c \
+ netdb.h \
+ pwd.c \
+ rcmd.c \
+ run.c \
+ sockerror.c \
+ startserver.c \
+ arpa/inet.h \
+ netinet/in.h \
+ sys/socket.h \
+ sys/types.h \
+ unistd.c \
+ unistd.h \
+ waitpid.c \
+ woe32.c \
+ woe32.h \
+ .cvsignore
+
+SUBDIRS = SCC
+
+###
+### Maintainer targets
+###
+MAINTAINERCLEANFILES =
+DISTCLEANFILES =
+
+all-local: config.h stdbool.h stdint.h
+config.h: stamp-ch
+stamp-ch: config.h.in $(top_srcdir)/configure
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >config.tmp
+ @echo " * config.h.in file." >>config.tmp
+ @echo " *" >>config.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>config.tmp
+ @echo " *" >>config.tmp
+ @echo " * Edit config.h.in instead." >>config.tmp
+ @echo " */" >>config.tmp
+ sed -e "s/%PACKAGE_STRING%/$(PACKAGE_STRING)/" \
+ -e "s/%PACKAGE_BUGREPORT%/$(PACKAGE_BUGREPORT)/" \
+ <$(srcdir)/config.h.in >>config.tmp
+ @cmp -s config.tmp $(srcdir)/config.h \
+ || (echo "Updating config.h"; \
+ cp config.tmp $(srcdir)/config.h)
+ -@rm -f config.tmp
+ @cp $(srcdir)/config.h $@
+DISTCLEANFILES += stamp-ch
+
+# The shell portion of this target is so that this file will be regenerated
+# when it is missing, even when not in maintainer mode.
+config.h.in: @MAINTAINER_MODE_TRUE@ stamp-chi
+ @if test ! -f $(srcdir)/$@; then \
+ rm -f $(srcdir)/stamp-chi; \
+ $(MAKE) stamp-chi; \
+ else :; fi
+
+# The following target exists for two reasons. The first is so that the rule
+# for config.h.in above may be conditionally dependent on it and thus only
+# built in maintainer mode. The second reason is so that the config.h.in, and
+# thus the config.h file, only gets touched when it actually changes, which
+# could potentially save unnecessary rebuilds of many dependent files.
+#
+# This file is distributed since, without it, config.h.in will always be
+# rebuilt on the first run in maintainer mode, even if its dependencies are
+# unchanged.
+stamp-chi: $(srcdir)/mkconfig.pl $(top_srcdir)/config.h.in \
+ $(srcdir)/config.h.in.in $(srcdir)/config.h.in.footer
+ @$(PERL) mkconfig.pl -q $(top_srcdir)/config.h.in \
+ $(srcdir)/config.h.in \
+ $(srcdir)/config.h.in.in \
+ $(srcdir)/config.h.in.footer
+ @cp $(srcdir)/config.h.in $(srcdir)/$@
+MAINTAINERCLEANFILES += $(srcdir)/config.h.in $(srcdir)/stamp-chi
+
+stdbool.h: stamp-sh
+stamp-sh: $(top_srcdir)/lib/stdbool_.h
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >stdbool.tmp
+ @echo " * ../lib/stdbool_.h.in file." >>stdbool.tmp
+ @echo " *" >>stdbool.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>stdbool.tmp
+ @echo " *" >>stdbool.tmp
+ @echo " * Edit ../lib/stdbool_.h instead." >>stdbool.tmp
+ @echo " */" >>stdbool.tmp
+ sed 's/@''HAVE__BOOL''@/0/' <$(top_srcdir)/lib/stdbool_.h \
+ >>stdbool.tmp
+ @cmp -s stdbool.tmp $(srcdir)/stdbool.h \
+ || (echo "Updating stdbool.h"; \
+ cp stdbool.tmp $(srcdir)/stdbool.h)
+ -@rm -f stdbool.tmp
+ @cp $(srcdir)/stdbool.h $@
+DISTCLEANFILES += stamp-sh
+
+stdint.h: stamp-sh2
+stamp-sh2: $(top_srcdir)/lib/stdint_.h
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >stdint.tmp
+ @echo " * ../lib/stdint_.h.in file." >>stdint.tmp
+ @echo " *" >>stdint.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>stdint.tmp
+ @echo " *" >>stdint.tmp
+ @echo " * Edit ../lib/stdint_.h instead." >>stdint.tmp
+ @echo " */" >>stdint.tmp
+ sed 's/@''HAVE_LONG_64BIT''@/0/g;s/@''HAVE_LONG_LONG_64BIT@/0/g' \
+ <$(top_srcdir)/lib/stdint_.h >>stdint.tmp
+ @cmp -s stdint.tmp $(srcdir)/stdint.h \
+ || (echo "Updating stdint.h"; \
+ cp stdint.tmp $(srcdir)/stdint.h)
+ -@rm -f stdint.tmp
+ @cp $(srcdir)/stdint.h $@
+DISTCLEANFILES += stamp-sh2
+
+# for backwards compatibility with the old makefiles
+realclean: maintainer-clean
+.PHONY: realclean
diff --git a/windows-NT/Makefile.in b/windows-NT/Makefile.in
new file mode 100644
index 0000000..700573d
--- /dev/null
+++ b/windows-NT/Makefile.in
@@ -0,0 +1,708 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# *** Under Windows NT and Microsoft Visual C++, we use cvsnt.mak, not
+# *** this makefile. However, we need this file in order for 'make
+# *** dist' to work properly on Unix machines.
+
+# Makefile for GNU CVS windows-NT dist.
+#
+# Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+#
+# Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>,
+# and others.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = windows-NT
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acx_extract_cpp_defn.m4 \
+ $(top_srcdir)/m4/acx_with_external_zlib.m4 \
+ $(top_srcdir)/m4/acx_with_gssapi.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 \
+ $(top_srcdir)/m4/asx_version_compare.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/bison.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/cvs_func_printf_ptr.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/filenamecat.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/gethostname.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getlogin_r.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getnline.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
+ $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glob.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes.m4 \
+ $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/mbchar.m4 \
+ $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/md5.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/onceonly_2_57.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pagealign_alloc.m4 \
+ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/restrict.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/save-cwd.m4 \
+ $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/signed.m4 \
+ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-macros.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strstr.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/sunos57-select.m4 $(top_srcdir)/m4/time_r.m4 \
+ $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
+ $(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+ $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \
+ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xreadlink.m4 \
+ $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/yesno.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSH = @CSH@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EDITOR = @EDITOR@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FNMATCH_H = @FNMATCH_H@
+GETOPT_H = @GETOPT_H@
+GLOB_H = @GLOB_H@
+GMSGFMT = @GMSGFMT@
+HAVE_LONG_64BIT = @HAVE_LONG_64BIT@
+HAVE_LONG_LONG_64BIT = @HAVE_LONG_LONG_64BIT@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+KRB4 = @KRB4@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
+MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MKTEMP = @MKTEMP@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+PR = @PR@
+PS2PDF = @PS2PDF@
+RANLIB = @RANLIB@
+ROFF = @ROFF@
+RSH_DFLT = @RSH_DFLT@
+SENDMAIL = @SENDMAIL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZLIB_SUBDIRS = @ZLIB_SUBDIRS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_prefix_program = @ac_prefix_program@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+cvs_client_objects = @cvs_client_objects@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+with_default_rsh = @with_default_rsh@
+EXTRA_DIST = \
+ JmgStat.c \
+ JmgStat.h \
+ config.h \
+ config.h.in \
+ config.h.in.in \
+ config.h.in.footer \
+ stamp-chi \
+ mkconfig.pl \
+ fix-msvc-mak.pl \
+ ndir.h \
+ pwd.h \
+ rcmd.h \
+ stdbool.h \
+ stdint.h \
+ filesubr.c \
+ mkdir.c \
+ ndir.c \
+ netdb.h \
+ pwd.c \
+ rcmd.c \
+ run.c \
+ sockerror.c \
+ startserver.c \
+ arpa/inet.h \
+ netinet/in.h \
+ sys/socket.h \
+ sys/types.h \
+ unistd.c \
+ unistd.h \
+ waitpid.c \
+ woe32.c \
+ woe32.h \
+ .cvsignore
+
+SUBDIRS = SCC
+
+###
+### Maintainer targets
+###
+MAINTAINERCLEANFILES = $(srcdir)/config.h.in $(srcdir)/stamp-chi
+DISTCLEANFILES = stamp-ch stamp-sh stamp-sh2
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu windows-NT/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu windows-NT/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/arpa $(distdir)/netinet $(distdir)/sys
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-local check \
+ check-am clean clean-generic clean-recursive ctags \
+ ctags-recursive distclean distclean-generic \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-info-am
+
+
+all-local: config.h stdbool.h stdint.h
+config.h: stamp-ch
+stamp-ch: config.h.in $(top_srcdir)/configure
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >config.tmp
+ @echo " * config.h.in file." >>config.tmp
+ @echo " *" >>config.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>config.tmp
+ @echo " *" >>config.tmp
+ @echo " * Edit config.h.in instead." >>config.tmp
+ @echo " */" >>config.tmp
+ sed -e "s/%PACKAGE_STRING%/$(PACKAGE_STRING)/" \
+ -e "s/%PACKAGE_BUGREPORT%/$(PACKAGE_BUGREPORT)/" \
+ <$(srcdir)/config.h.in >>config.tmp
+ @cmp -s config.tmp $(srcdir)/config.h \
+ || (echo "Updating config.h"; \
+ cp config.tmp $(srcdir)/config.h)
+ -@rm -f config.tmp
+ @cp $(srcdir)/config.h $@
+
+# The shell portion of this target is so that this file will be regenerated
+# when it is missing, even when not in maintainer mode.
+config.h.in: @MAINTAINER_MODE_TRUE@ stamp-chi
+ @if test ! -f $(srcdir)/$@; then \
+ rm -f $(srcdir)/stamp-chi; \
+ $(MAKE) stamp-chi; \
+ else :; fi
+
+# The following target exists for two reasons. The first is so that the rule
+# for config.h.in above may be conditionally dependent on it and thus only
+# built in maintainer mode. The second reason is so that the config.h.in, and
+# thus the config.h file, only gets touched when it actually changes, which
+# could potentially save unnecessary rebuilds of many dependent files.
+#
+# This file is distributed since, without it, config.h.in will always be
+# rebuilt on the first run in maintainer mode, even if its dependencies are
+# unchanged.
+stamp-chi: $(srcdir)/mkconfig.pl $(top_srcdir)/config.h.in \
+ $(srcdir)/config.h.in.in $(srcdir)/config.h.in.footer
+ @$(PERL) mkconfig.pl -q $(top_srcdir)/config.h.in \
+ $(srcdir)/config.h.in \
+ $(srcdir)/config.h.in.in \
+ $(srcdir)/config.h.in.footer
+ @cp $(srcdir)/config.h.in $(srcdir)/$@
+
+stdbool.h: stamp-sh
+stamp-sh: $(top_srcdir)/lib/stdbool_.h
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >stdbool.tmp
+ @echo " * ../lib/stdbool_.h.in file." >>stdbool.tmp
+ @echo " *" >>stdbool.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>stdbool.tmp
+ @echo " *" >>stdbool.tmp
+ @echo " * Edit ../lib/stdbool_.h instead." >>stdbool.tmp
+ @echo " */" >>stdbool.tmp
+ sed 's/@''HAVE__BOOL''@/0/' <$(top_srcdir)/lib/stdbool_.h \
+ >>stdbool.tmp
+ @cmp -s stdbool.tmp $(srcdir)/stdbool.h \
+ || (echo "Updating stdbool.h"; \
+ cp stdbool.tmp $(srcdir)/stdbool.h)
+ -@rm -f stdbool.tmp
+ @cp $(srcdir)/stdbool.h $@
+
+stdint.h: stamp-sh2
+stamp-sh2: $(top_srcdir)/lib/stdint_.h
+ @echo "/* This file is generated via a rule in Makefile.am from the" \
+ >stdint.tmp
+ @echo " * ../lib/stdint_.h.in file." >>stdint.tmp
+ @echo " *" >>stdint.tmp
+ @echo " * *** DO NOT EDIT THIS FILE DIRECTLY ***" >>stdint.tmp
+ @echo " *" >>stdint.tmp
+ @echo " * Edit ../lib/stdint_.h instead." >>stdint.tmp
+ @echo " */" >>stdint.tmp
+ sed 's/@''HAVE_LONG_64BIT''@/0/g;s/@''HAVE_LONG_LONG_64BIT@/0/g' \
+ <$(top_srcdir)/lib/stdint_.h >>stdint.tmp
+ @cmp -s stdint.tmp $(srcdir)/stdint.h \
+ || (echo "Updating stdint.h"; \
+ cp stdint.tmp $(srcdir)/stdint.h)
+ -@rm -f stdint.tmp
+ @cp $(srcdir)/stdint.h $@
+
+# for backwards compatibility with the old makefiles
+realclean: maintainer-clean
+.PHONY: realclean
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/windows-NT/README b/windows-NT/README
new file mode 100644
index 0000000..23d57eb
--- /dev/null
+++ b/windows-NT/README
@@ -0,0 +1,113 @@
+ Concurrent Versions System (CVS)
+ ported to Microsoft Windows NT
+
+Check the ../INSTALL file for information on the most recent version
+of CVS which has been known to be tested with NT and/or Win95.
+
+This port implements the full set of CVS commands, both local and
+client. It does not provide a CVS server for NT. Multiple users can
+access a common CVS repository, if they can mount the repository,
+either directly or via a networked file system.
+
+We don't distribute a .ZIP source distribution partly because, as far
+as I can tell, PKZIP insists on munging long file names, which would
+confuse the makefile for Visual C++.
+
+To compile, use Microsoft Visual C++ on the file cvsnt.mak in the
+distribution's top directory. At least with the tar port I'm using,
+the sources get extracted without carriage returns and you must add
+carriage returns to the end of every line in cvsnt.mak. It doesn't
+seem to be necessary to add them to any other file. This makefile was
+generated with Visual C++ 5.x. With Visual C++ 6.x you can also try
+cvsnt.dsw. For Visual C++ 2.x you probably are in the position of
+digging through old versions of CVS for a cvsnt.mak and then updating
+it. Feel free to let us know about problems of this sort as with
+other bug reports.
+
+If you end up regenerating the MSVC makefiles and submitting a patch back to
+us, please be careful. MSVC appears to be trying to write absolute paths into
+the diff/libdiff.mak file and a relative path to a file in the local MSVC
+install in cvsnt.dep (this last only with MSVC 6.x).
+
+Send bug reports to bug-cvs@nongnu.org.
+
+As of May 1996, this port passed all of the tests in src/sanity.sh,
+save the one that deals with reserved all-upper-case tags (BASE and
+HEAD), due to a limitation in the NT command shell. sanity.sh
+provides pretty minimal feature coverage, but still gives me some
+confidence it isn't totally broken. The tests were run by defining
+KLUDGE_FOR_WNT_TESTSUITE (see src/main.c).
+
+To operate in client mode with old versions of CVS (1.9 and older),
+you will need GNU patch. To do compressed transfers with old versions
+of CVS (1.8 and older), you also need gzip. Note that you do NOT need
+an rsh client if you are using the :server: access method (which uses
+the internal rsh client), except perhaps for debugging.
+
+To operate in local mode, you should need nothing other than CVS (that
+is, you no longer need RCS, diff, &c, in order to run CVS).
+
+One useful site may be the Congruent ports of various packages to
+Windows NT, binary and source:
+
+ ftp://microlib.cc.utexas.edu/microlib/nt/gnu/
+
+In particular, microlib seems to have versions of GNU tar and gzip
+which support long file names, which you will need to unpack the CVS
+source distribution.
+
+The Cygwin project is a port of various GNU tools for NT, providing
+bash as the shell and gcc as the compiler. Basically, you don't want
+the stuff in this directory for CVS running under Cygwin; you want
+the same stuff as for unix (../configure, Makefile.in, &c). For
+Cygwin information see
+
+ http://www.cygwin.com/
+
+Morten Hindsholm's port of CVS 1.4A2 to Windows NT may be useful if
+you're modifying CVS itself:
+
+ ftp://ftp.digex.net/pub/access/schueman/cvs/cvsnt14b.zip
+
+Here are some other things which may be of interest for unix junkies:
+
+ http://www.halcyon.com/gvr/vim/ (VI clone)
+ ftp://wuarchive.wustl.edu/systems/ibmpc/gnuish/less177.zip
+
+If you want to browse/edit the sources using Visual C++, we recommend
+setting tab stops to 8 spaces, since that is what the CVS sources
+expect. The tab stop setting is in the "Editor" or "Tabs" section of
+the "Options..." dialog which is in the "Tools..." menu.
+
+The following harmless warnings are known:
+
+- regex.c: 103 warnings, mostly signed/unsigned comparison conflicts.
+ I am not going to *touch* this code. :-) I got my fill of it when I was
+ hacking GNU Emacs.
+
+.\lib\getdate.c(760) : warning C4013: 'getdate_yyparse' undefined; assuming extern returning int
+.\lib\getdate.c(1612) : warning C4102: 'yyerrlab' : unreferenced label
+.\lib\getdate.c(1612) : warning C4102: 'yynewstate' : unreferenced label
+
+Oct 1998 update: there are more now. I've gotten lax about removing
+the warnings lately :-( -kingdon.
+
+CODING STANDARDS for Windows
+
+For general coding standards, see ../HACKING.
+
+In my opinion win32 is the right API to write to. Microsoft seems to
+be better about compatibility across versions than unix vendors (on a
+good day, anyway)--the Visual C++ package I bought has not only win32
+but also win16 too (that is, they also include Visual C++ 1.x). As
+far as I know there is only one win32 (not counting win32s or win32c
+or whatever), not multiple versions.
+
+ANSI C is also good. As far as I know these calls work fairly well on
+NT.
+
+What one should avoid like the plague on NT (IMHO) is POSIX calls such
+as stat(). These tend to be very poorly supported, and tend to break
+from version to version or vendor to vendor (the latter being
+particularly an issue on OS/2, with IBM, Watcom, and EMX all having
+_very_ different C libraries).
diff --git a/windows-NT/SCC/.cvsignore b/windows-NT/SCC/.cvsignore
new file mode 100644
index 0000000..e880feb
--- /dev/null
+++ b/windows-NT/SCC/.cvsignore
@@ -0,0 +1,8 @@
+SCC.mdp
+SCC.ncb
+SCC.opt
+SCC.dsw
+SCC.plg
+Debug
+Release
+Makefile
diff --git a/windows-NT/SCC/ChangeLog b/windows-NT/SCC/ChangeLog
new file mode 100644
index 0000000..27f5bbf
--- /dev/null
+++ b/windows-NT/SCC/ChangeLog
@@ -0,0 +1,250 @@
+2005-09-01 Derek Price <derek@ximbiot.com>
+
+ * README: Update links and email addresses.
+
+2005-03-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regnerated.
+
+2003-11-25 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerate for new configure.in.
+
+2003-06-11 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerate for new configure.in.
+
+2003-05-21 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerate with Automake version 1.7.5.
+
+2003-05-20 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-05-09 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-04-30 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-04-10 Larry Jones <lawrence.jones@eds.com>
+
+ * Makefile.in: Regenerated.
+
+2003-03-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.am: Update copyright notice.
+
+ * Makefile.in: Regenerated.
+
+2003-03-19 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerated.
+
+2003-03-19 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2003-02-25 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated using Automake 1.6.3.
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2002-04-30 Derek Price <oberon@umich.edu>
+
+ * Makefile.in: Regenerated with automake 1.6.
+
+2001-09-04 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with automake 1.5.
+
+2001-08-06 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated.
+
+2001-07-04 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with new Automake release candidate 1.4h.
+
+2001-06-28 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated with new version of Automake.
+
+2001-04-25 Derek Price <dprice@collab.net>
+
+ * Makefile.in: Regenerated using AM 1.4e as of today at 18:10 -0400.
+
+2001-03-14 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.in: Regenerated
+
+2000-12-22 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.in: Regenerated
+
+2000-12-21 Derek Price <derek.price@openavenue.com>
+
+ * Makefile.am: New file needed by Automake
+ * Makefile.in: Regenerated
+
+1999-04-09 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add SCC.dsp.
+
+1998-09-21 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: Also mention HAHTsite.
+
+1998-03-22 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * pubscc.h: Describe how SccGetCommandOptions works.
+
+1998-03-10 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: Update and clarify various minor points.
+
+Tue Jan 27 12:54:05 1998 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: Update bug-cvs address to gnu.org.
+
+Thu Dec 11 22:17:45 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: Add Access to list of development environments which
+ implement SCC.
+
+Wed Oct 29 11:45:20 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: CVSwiz runs the command line CVS; it is not an
+ independent implementation of the protocol.
+
+Sun Oct 26 14:57:33 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: Add section "OTHER INTERFACES".
+
+Tue Oct 21 23:25:43 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt (TOOLS IMPLEMENTING THE SCC): Add comment about
+ Powerbuilder versions.
+
+Mon Sep 8 08:52:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt (TOOLS IMPLEMENTING THE SCC): Be a little more
+ specific about Powersoft and CodeWright.
+
+ * Makefile.in (DISTFILES): Add pubscc.h. Thanks to Frederic Van
+ Haren for pointing this out.
+
+Tue Sep 2 13:39:17 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt (SPECIFICATIONS OR OTHER DOCUMENTS DESCRIBING THE
+ SCC): New section.
+
+Mon Aug 4 10:46:59 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * pubscc.h: Add comment listing new CodeWright 5.00c functions.
+ Add comment about CodeWright calling SccQueryInfo without
+ SCC_cap_QueryInfo set. Thanks to Frederic Van Haren for
+ pointing out these issues.
+
+4 Aug 1997 Jim Kingdon
+
+ Changes for Visual C++ 5.0:
+ * SCC.dsp: New file.
+ * .cvsignore: add SCC.dsw SCC.opt SCC.plg Release.
+
+ * scc.c (SccGet): Replace #if 0'd code with a comment and
+ adjust to avoid compiler warning.
+
+Mon Aug 4 09:58:11 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * scc.c: Split out the interface declarations into a new file
+ pubscc.h. This should make it easier to handle multiple
+ scc.c-equivalents.
+
+Mon Jul 14 15:58:25 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * scc.c: Add many comments and defines to document additional
+ aspects of the SCC API.
+
+7 Jul 1997 Frederic Van Haren <Frederic.Van.Haren@lhs.be>
+
+ * scc.c (SccHistory): file_names is LPSTR * not LPSTR.
+
+Mon Jul 7 16:45:16 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * scc.c (SccGetVersion): Change arguments from () to (void).
+ Clarify context_arg. Also document 'window' arg.
+
+Sat Jul 5 13:01:51 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt: PowerJ and Power++ are also said to implement SCC.
+
+21 Mar 1997 Jim Kingdon
+
+ * scc.c (SccCheckout): Write to debuglog and return
+ -11 instead of -14. I though maybe that this may be
+ related to the crashes I've been seeing, but those
+ crashes persisted when I deinstalled the SCC DLL.
+
+14 Mar 1997 Jim Kingdon
+
+ * scc.c: Go back to using debuglog not outproc for
+ most debugging messages. Developer Studio tends to
+ erase the outproc messages on an error.
+ More playing around with projects.
+ * README.txt: Describe results of this. I am making
+ grey (source controlled) file icons appear, which is
+ exciting.
+
+4 Mar 1997 Jim Kingdon
+
+ Still some distance from being able to open a
+ project, but that's what I'm playing with:
+ * scc.c (SccOpenProject): Use outproc not debuglog
+ for debugging messages.
+ (SccGet): Add debugging messages.
+ (SccAddFromScc): Implemented.
+ (SccInitialize): Return AddFromScc in capabilities.
+ * scc.c: Change out_proc to outproc for consistency.
+
+2 Mar 1997 Jim Kingdon
+
+ * scc.c: Add a bunch of things, to SccOpenProject,
+ SccGetProjPath, and perhaps elsewhere. The project
+ stuff doesn't really work yet, but the outproc does.
+
+27 Feb 1997 Jim Kingdon
+
+ * scc.c (SCC_max_init_path, SCC_max_name): Added.
+ (SccInitialize): Set and use more arguments.
+ (SccUninitialize): Might want to check ferror here.
+ (SccOpenProject): Print to debug log if we get here.
+
+Thu Feb 27 19:02:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.txt (TOOLS IMPLEMENTING THE SCC): New section.
+
+Wed Feb 26 22:55:43 1997 David H. Hovemeyer <Hovemeyer_D@mediasoft.net>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * scc.c (SccGetVersion): Return the version number of the SCC
+ spec; we don't get to pick what to return here.
+ * README.txt: Update with current status.
+
+Sat Feb 15 15:19:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in: New file.
+
+ * README.txt: Clarify a little more what this stuff does (and more
+ the point, does not) do.
+
diff --git a/windows-NT/SCC/Makefile.am b/windows-NT/SCC/Makefile.am
new file mode 100644
index 0000000..435ff85
--- /dev/null
+++ b/windows-NT/SCC/Makefile.am
@@ -0,0 +1,33 @@
+## Process this file with automake to produce Makefile.in
+
+# *** Under Windows NT and Microsoft Visual C++, we use cvsnt.mak, not
+# *** this makefile. However, we need this file in order for 'make
+# *** dist' to work properly on Unix machines.
+
+# Makefile for GNU CVS windows-NT/SCC dist.
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+EXTRA_DIST = \
+ .cvsignore \
+ README.txt \
+ SCC.mak \
+ SCC.dsp \
+ scc.c \
+ scc.def \
+ pubscc.h
+
+# for backwards compatibility with the old makefiles
+realclean: maintainer-clean
+.PHONY: realclean
diff --git a/windows-NT/SCC/Makefile.in b/windows-NT/SCC/Makefile.in
new file mode 100644
index 0000000..aa0abbb
--- /dev/null
+++ b/windows-NT/SCC/Makefile.in
@@ -0,0 +1,431 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# *** Under Windows NT and Microsoft Visual C++, we use cvsnt.mak, not
+# *** this makefile. However, we need this file in order for 'make
+# *** dist' to work properly on Unix machines.
+
+# Makefile for GNU CVS windows-NT/SCC dist.
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = windows-NT/SCC
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acx_extract_cpp_defn.m4 \
+ $(top_srcdir)/m4/acx_with_external_zlib.m4 \
+ $(top_srcdir)/m4/acx_with_gssapi.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 \
+ $(top_srcdir)/m4/asx_version_compare.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/bison.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/cvs_func_printf_ptr.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/filenamecat.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/gethostname.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getlogin_r.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getnline.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
+ $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glob.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes.m4 \
+ $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/mbchar.m4 \
+ $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/md5.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/onceonly_2_57.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pagealign_alloc.m4 \
+ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/restrict.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/save-cwd.m4 \
+ $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/signed.m4 \
+ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-macros.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strstr.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/sunos57-select.m4 $(top_srcdir)/m4/time_r.m4 \
+ $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
+ $(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+ $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \
+ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xreadlink.m4 \
+ $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/yesno.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSH = @CSH@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EDITOR = @EDITOR@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FNMATCH_H = @FNMATCH_H@
+GETOPT_H = @GETOPT_H@
+GLOB_H = @GLOB_H@
+GMSGFMT = @GMSGFMT@
+HAVE_LONG_64BIT = @HAVE_LONG_64BIT@
+HAVE_LONG_LONG_64BIT = @HAVE_LONG_LONG_64BIT@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+KRB4 = @KRB4@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
+MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MKTEMP = @MKTEMP@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+PR = @PR@
+PS2PDF = @PS2PDF@
+RANLIB = @RANLIB@
+ROFF = @ROFF@
+RSH_DFLT = @RSH_DFLT@
+SENDMAIL = @SENDMAIL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZLIB_SUBDIRS = @ZLIB_SUBDIRS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_prefix_program = @ac_prefix_program@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+cvs_client_objects = @cvs_client_objects@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+with_default_rsh = @with_default_rsh@
+EXTRA_DIST = \
+ .cvsignore \
+ README.txt \
+ SCC.mak \
+ SCC.dsp \
+ scc.c \
+ scc.def \
+ pubscc.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu windows-NT/SCC/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu windows-NT/SCC/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+# for backwards compatibility with the old makefiles
+realclean: maintainer-clean
+.PHONY: realclean
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/windows-NT/SCC/README.txt b/windows-NT/SCC/README.txt
new file mode 100644
index 0000000..42a5db6
--- /dev/null
+++ b/windows-NT/SCC/README.txt
@@ -0,0 +1,116 @@
+This is an experimental attempt to interface to the SCC API.
+
+Note that this code doesn't (yet) do anything useful; this file
+is currently for people who want to hack on the SCC interface,
+not people who want a plug-in integration between any particular pair
+of packages.
+
+To install the test DLL, build scc.dll and then add the following
+to the registry using the registry editor:
+
+key/value what to put there
+HKEY_LOCAL_MACHINE
+ SOFTWARE
+ CVS
+ CVS
+ SCCServerName Concurrent Versions System
+ SCCServerPath <full pathname of scc.dll>
+ SourceCodeControlProvider
+ ProviderRegKey "SOFTWARE\CVS\CVS"
+ InstalledSCCProviders
+ Concurrent Versions System "SOFTWARE\CVS\CVS"
+
+Note that ProviderRegKey is the default source control
+system, and InstalledSCCProviders list _all_ installed
+source control systems. A development environment is allowed
+to use either or both, so you should set both of them.
+
+Note also that we are using "CVS" as the supplier of CVS.
+CVS is not owned by any one company, so CVS seems like the
+most appropriate string to put there.
+
+If you do this right, then "Source Control" should appear
+under the "Tools" menu (for Visual C++ 4.x; the details of course may
+vary for other development environments).
+
+NOW WHAT?
+
+Well, I haven't yet figured out _all_ the different ways
+that projects work at the SCC level. But here is what I
+have done which has worked. SPECIAL NOTE: many paths are
+hardcoded in scc.c, so you will need to fix that or put
+things the same place I did. As you try the following you
+will want to follow along in d:\debug.scc.
+
+* Create a dummy project in d:\sccwork.
+* On the Tools/Source Control menu, select "Share from CVS..."
+* This will cause SccAddFromScc to be called, which will
+ claim there are two files, foo.c and bar.c, which should
+ appear as source controlled (grey) files in the file
+ listing.
+* Now select one of the files and pick "Get Latest Version..."
+ from Tools/Source Control. You'll get a cheezy dialog (we
+ need to see why it is cheezy--by that I mean the size and
+ placement are funny), and if you say OK, then SccGet will
+ get called (which doesn't currently do anything).
+
+TOOLS IMPLEMENTING THE SCC
+
+I'm not sure whether we'll want to try to make this a comprehensive
+list, but at least for the moment it seems worthwhile to list a few of
+the programs which implement the Integrated Development Environment
+(IDE) side of the SCC. Some of this information is based on rumor or,
+worse yet, usenet posting, so it probably should be verified before
+relying on it.
+
+* Microsoft Developer Studio 4.x Professional (not Standard, not 2.x).
+* Microsoft Access V7.0
+* Powersoft's Optima++, PowerJ, and Power++
+ (not sure which versions, but this information was added in 1997 if
+ that helps. Someone on usenet reports 32 bit Powerbuilder version
+ 5.03 but not version 4, version 5.0, or 16 bit Powerbuilder.).
+* Premia's CodeWright editor
+ (versions 5.00b and 5.00c; not sure about older versions).
+* HAHTsite (not sure what versions).
+
+SPECIFICATIONS OR OTHER DOCUMENTS DESCRIBING THE SCC
+
+The only publicly available document which we are aware of is pubscc.h
+in this directory. This should be sufficient to get a start at
+playing around with the SCC, and if you have done that and then
+proceed to run into those areas which pubscc.h does not document well,
+you are encouraged to send mail to bug-cvs@nongnu.org with your
+questions.
+
+OTHER INTERFACES
+
+There are other interfaces which interface between a development
+environment (or other front-end) and a source control system. That
+is, in general terms they provide somewhat the function of the SCC,
+although they may be at a somewhat different level and systems may
+support/use several interfaces rather than it being an either/or thing.
+
+If you know of other interfaces which should be added here I guess the
+best place to make suggestions is bug-cvs@nongnu.org (although
+the following list is not intended to be particularly CVS-centric).
+
+* The CVS remote protocol is documented in doc/cvsclient.texi in the
+CVS distribution and has at least 2 implementations of the client
+(jCVS and CVS command line client), in addition to having been
+implemented at least once by a special-purpose perl script.
+
+* Microsoft's OLE Automation interface. The spec is available for
+download at http://www.microsoft.com/ssafe. I'm not sure whether this
+has been implemented by other source control systems. Metrowerks
+implements this via a module which speaks the Metrowerks API out one
+end and the OLE Automation interface out the other (the module runs on
+Windows, not Mac).
+
+* Symantec's Visual Cafe interface.
+
+* Metrowerks publishes and implements the CodeWarrior IDE Version
+Control System API. I think maybe the way to get a copy of the spec
+is as part of CodeWarrior but I'm not completely clear on that.
+
+For (some) more details on these interfaces, and others, see
+ http://www.cyclic.com/cvs/dev-int.html
diff --git a/windows-NT/SCC/SCC.dsp b/windows-NT/SCC/SCC.dsp
new file mode 100644
index 0000000..5a50f01
--- /dev/null
+++ b/windows-NT/SCC/SCC.dsp
@@ -0,0 +1,108 @@
+# Microsoft Developer Studio Project File - Name="SCC" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=SCC - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SCC.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SCC.mak" CFG="SCC - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SCC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "SCC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SCC - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\Release"
+# PROP Intermediate_Dir ".\Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "SCC - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\Debug"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+
+!ENDIF
+
+# Begin Target
+
+# Name "SCC - Win32 Release"
+# Name "SCC - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\scc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\scc.def
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/windows-NT/SCC/SCC.mak b/windows-NT/SCC/SCC.mak
new file mode 100644
index 0000000..ef4da64
--- /dev/null
+++ b/windows-NT/SCC/SCC.mak
@@ -0,0 +1,216 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 40001
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+!IF "$(CFG)" == ""
+CFG=SCC - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to SCC - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "SCC - Win32 Release" && "$(CFG)" != "SCC - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SCC.mak" CFG="SCC - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SCC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "SCC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "SCC - Win32 Debug"
+CPP=cl.exe
+RSC=rc.exe
+MTL=mktyplib.exe
+
+!IF "$(CFG)" == "SCC - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\SCC.dll"
+
+CLEAN :
+ -@erase ".\Release\SCC.dll"
+ -@erase ".\Release\scc.obj"
+ -@erase ".\Release\SCC.lib"
+ -@erase ".\Release\SCC.exp"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
+ /Fp"$(INTDIR)/SCC.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /win32
+MTL_PROJ=/nologo /D "NDEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/SCC.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/SCC.pdb" /machine:I386\
+ /def:".\scc.def" /out:"$(OUTDIR)/SCC.dll" /implib:"$(OUTDIR)/SCC.lib"
+DEF_FILE= \
+ ".\scc.def"
+LINK32_OBJS= \
+ "$(INTDIR)/scc.obj"
+
+"$(OUTDIR)\SCC.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "SCC - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\Debug
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\SCC.dll"
+
+CLEAN :
+ -@erase ".\Debug\vc40.pdb"
+ -@erase ".\Debug\vc40.idb"
+ -@erase ".\Debug\SCC.dll"
+ -@erase ".\Debug\scc.obj"
+ -@erase ".\Debug\SCC.ilk"
+ -@erase ".\Debug\SCC.lib"
+ -@erase ".\Debug\SCC.exp"
+ -@erase ".\Debug\SCC.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
+ /Fp"$(INTDIR)/SCC.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /win32
+MTL_PROJ=/nologo /D "_DEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/SCC.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)/SCC.pdb" /debug\
+ /machine:I386 /def:".\scc.def" /out:"$(OUTDIR)/SCC.dll"\
+ /implib:"$(OUTDIR)/SCC.lib"
+DEF_FILE= \
+ ".\scc.def"
+LINK32_OBJS= \
+ "$(INTDIR)/scc.obj"
+
+"$(OUTDIR)\SCC.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "SCC - Win32 Release"
+# Name "SCC - Win32 Debug"
+
+!IF "$(CFG)" == "SCC - Win32 Release"
+
+!ELSEIF "$(CFG)" == "SCC - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\scc.c
+
+"$(INTDIR)\scc.obj" : $(SOURCE) "$(INTDIR)"
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\scc.def
+
+!IF "$(CFG)" == "SCC - Win32 Release"
+
+!ELSEIF "$(CFG)" == "SCC - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/windows-NT/SCC/pubscc.h b/windows-NT/SCC/pubscc.h
new file mode 100644
index 0000000..f97d925
--- /dev/null
+++ b/windows-NT/SCC/pubscc.h
@@ -0,0 +1,546 @@
+/* This file was written by Jim Kingdon, and is hereby placed
+ in the public domain. */
+
+/* Bits of the SCC interface.
+ For paranoia's sake, I'm not using the same names as Microsoft.
+ I don't imagine copying a few names could be a credible copyright
+ case, but it seems safer to stick to only what is necessary for
+ the interface to work.
+
+ Note that some of the descriptions here have a certain amount of
+ guesswork (for example, sometimes I have tried to translate to CVS
+ terminology without actually verifying that the item means what I
+ think it does). If you find errors, please let us know according to
+ the usual procedures for reporting CVS bugs. */
+typedef long SCC_return;
+#define SCC_return_success 0
+#define SCC_return_unknown_project -2
+/* The file is not under SCC control. */
+#define SCC_return_non_scc_file -11
+/* This operation is not supported. I believe this status can only
+ be returned from SccGet, SccAdd, SccRemove, SccHistory, or
+ SccQueryInfo. I'm not really sure what happens if it is returned
+ from other calls. */
+#define SCC_return_not_supported -14
+#define SCC_return_non_specific_error -15
+
+enum SCC_command
+{
+ SCC_command_get,
+ SCC_command_checkout,
+ SCC_command_checkin,
+ SCC_command_uncheckout,
+ SCC_command_add,
+ SCC_command_remove,
+ SCC_command_diff,
+ SCC_command_history,
+ SCC_command_rename,
+ SCC_command_properties,
+ SCC_command_options
+};
+
+/* Outproc codes, for second argument to outproc. */
+#define SCC_outproc_info 1L
+#define SCC_outproc_warning 2L
+#define SCC_outproc_error 3L
+/* Codes 4-7 relate to cancels and are only supported if the
+ development environment said so with SccSetOption. */
+/* A status message, typically goes in something analogous to the emacs
+ minibuffer. For both this and SCC_outproc_nostatus, the development
+ environment returns SCC_outproc_return_cancelled if the user has
+ hit the cancel button. */
+#define SCC_outproc_status 4L
+/* Like SCC_outproc_status, but there is no message to report. */
+#define SCC_outproc_nostatus 5L
+/* Tell the development environment to offer a cancel button. */
+#define SCC_outproc_cancel_on 6L
+/* Tell the development environment to not offer a cancel button. */
+#define SCC_outproc_cancel_off 7L
+
+/* Return values from outproc. */
+#define SCC_outproc_return_success 0L
+#define SCC_outproc_return_cancelled -1L
+typedef long (*SCC_outproc) (char *, long);
+
+typedef BOOL (*SCC_popul_proc) (LPVOID callerdat, BOOL add_keep,
+ LONG status, LPCSTR file);
+
+/* Maximum sizes of various strings. These are arbitrary limits
+ which are imposed by the SCC. */
+/* Name argument to SccInitialize. */
+#define SCC_max_name 31
+/* Path argument to SccInitialize. */
+#define SCC_max_init_path 31
+/* Various paths many places in the interface. */
+#include <stdlib.h>
+#define SCC_max_path _MAX_PATH
+
+/* Status codes, as used by QueryInfo and GetEvents. */
+/* This means that we can't get status. If the status is not
+ SCC_status_error, then the status is a set of bit flags, as defined by
+ the other SCC_status_* codes. */
+#define SCC_status_error -1L
+
+/* The following status codes are things which the development environment
+ is encouraged to check to determine things like whether to allow
+ a checkin. */
+/* The current user has the file checked out (that is, under "cvs edit").
+ It may or may not be in the directory where the development
+ environment thinks it should be. */
+#define SCC_status_out_me 0x1000L
+/* Should be set only if out_me is set. The file is checked out where
+ the development environment thinks it should be. */
+#define SCC_status_out_here 2L
+/* Some other user has the file checked out. */
+#define SCC_status_out_someoneelse 4L
+/* Reserved checkouts are in effect for the file. */
+#define SCC_status_reserved 8L
+/* Reserved checkouts are not in effect for the file. Multiple users
+ can edit it. Only one of SCC_status_reserved or SCC_status_nonreserved
+ should be set. I think maybe this flag should only be set if there
+ actually is more than one copy currently checked out. */
+#define SCC_status_nonreserved 0x10L
+
+/* The following flags are intended for the development environment to
+ display the status of a file. We are allowed to support them or not
+ as we choose. */
+/* The file in the working directory is not the latest version in the
+ repository. Like when "cvs status" says "Needs Checkout". */
+#define SCC_status_needs_update 0x20L
+/* The file is no longer in the project. I think this is the case where
+ cvs update prints "file xxx is no longer pertinent" (but I don't know,
+ there are other statuses involved with removed files). */
+#define SCC_status_not_pertinent 0x40L
+/* No checkins are permitted for this file. No real CVS analogue, because
+ this sort of thing would be done by commitinfo, &c. */
+#define SCC_status_no_checkins 0x80L
+/* There was a merge, but the user hasn't yet dealt with it. I think this
+ probably should be used both if there were conflicts on the merge and
+ if there were not (not sure, though). */
+#define SCC_status_had_conflicts 0x100L
+/* This indicates something has happened to the file. I suspect it mainly
+ is intended for cases in which we detect that something happened to the
+ file behind our backs. I suppose CVS might use this for cases in which
+ sanity checks on the CVSADM files fail, or in which the file has been
+ made read/write without a "cvs edit", or that sort of thing.
+
+ Or maybe it should be set if the file has been edited in the
+ normal fashion. I'm not sure. */
+#define SCC_status_munged 0x800L
+/* The file exists in several projects. In CVS I would suppose the
+ equivalent probably would be that several modules (using features
+ like -d) are capable of checking out a given file in the repository
+ in several locations. CVS has no current ability to give a different
+ status when that has happened, but it might be cool. */
+#define SCC_status_several_projects 0x200L
+/* There is a sticky tag or date in effect. */
+#define SCC_status_stuck 0x400L
+
+/* Bits to set in the caps used by SccInitialize. Most of these are
+ relatively straightforward, for example SCC_cap_QueryInfo is set to
+ indicate that the SccQueryInfo function is supported. */
+/* CodeWright 5.00b and 5.00c seem to call SccQueryInfo regardless of whether
+ this bit is set in caps. */
+#define SCC_cap_QueryInfo 0x80L
+#define SCC_cap_GetProjPath 0x200L
+#define SCC_cap_AddFromScc 0x400L
+#define SCC_cap_want_outproc 0x8000L
+
+/* These are command options. Some of them are specific to a particular
+ command, some of them are good for more than one command. Because many
+ values are reused for different commands, look at the listed commands
+ to see what a particular value means for a particular command. */
+/* Recurse into directories. SccGet. */
+#define SCC_cmdopt_recurse 2L
+/* This means to get all the files in a directory. SccGet. */
+#define SCC_cmdopt_dir 1L
+/* Without this flag, after a checkin, files are normally not checked
+ out. This flag disables that handling, and if it is set files will
+ still be checked out after the checkin completes. SccCheckin, SccAdd. */
+#define SCC_cmdopt_no_unedit 0x1000L
+/* File is text. SccAdd. */
+#define SCC_cmdopt_text 1L
+/* File is binary. SccAdd. */
+#define SCC_cmdopt_binary 2L
+/* We are supposed to decide whether it is text or binary. We can use the
+ CVS wrappers stuff to decide based on the file name. Obviously, this
+ constant is just another way of saying that neither SCC_cmdopt_text nor
+ SCC_cmdopt_binary are set. SccAdd. */
+#define SCC_cmdopt_auto 0L
+/* Maintain only a head revision for the file, no history. SccAdd. */
+#define SCC_cmdopt_only_one 4L
+/* In addition to removing the file from the repository, also delete it
+ from the working directory. My guess is that development environments
+ would generally tend to pass this flag by default. SccRemove. */
+#define SCC_cmdopt_retain_local 1L
+/* Compare files in a case-insensitive fashion. SccDiff. */
+#define SCC_cmdopt_case_insensitive 2L
+/* Ignore whitespace in comparing files. SccDiff. */
+#define SCC_cmdopt_ignore_all_space 4L
+/* Instead of generating diffs, just say whether files are equal, based on
+ the file contents. SccDiff. */
+#define SCC_cmdopt_compare_files 0x10L
+/* Instead of generating diffs, just say whether files are equal. This may
+ use a checksum if we want, or if not, it can be the same as
+ SCC_cmdopt_compare_files. */
+#define SCC_cmdopt_consult_checksum 0x20L
+/* Instead of generating diffs, just say whether files are equal. This may
+ use a timestamp if we want, or if not, it can be the same as either
+ SCC_cmdopt_consult_checksum or SCC_cmdopt_compare_files. */
+#define SCC_cmdopt_consult_timestamp 0x40L
+
+/* Values for the flags argument to OpenProject. */
+/* If this is set, and the development environment tries to open a project
+ which doesn't exist, then create it. */
+#define SCC_open_autocreate 1L
+/* If autocreate is not set, and the development environment tries to
+ open a project which doesn't exist, and may_prompt is set, we are
+ allowed to prompt the user to create a new project. If may_prompt
+ is not set, we should just return SCC_return_unknown_project and
+ not open the project. */
+#define SCC_open_may_prompt 2L
+
+/* Constants for SccSetOption. */
+#define SCC_option_background 1L
+/* If option is SCC_option_background, then val turns background
+ processing on or off. If it is off, we can, if we need to, queue
+ up events or something which won't disturb the development
+ environment. */
+# define SCC_option_background_yes 1L
+# define SCC_option_background_no 0L
+#define SCC_option_cancel 3L
+/* If option is SCC_option_cancel, then val says whether the development
+ environment supports the SCC_outproc_* codes related to having the
+ development environment handle a cancel button. If this is not set,
+ we are allowed/encouraged to implement a cancel button ourselves. */
+# define SCC_option_cancel_on 1L
+# define SCC_option_cancel_off 0L
+/* A SCC_option_* value of 10 has also been observed (I think from
+ CodeWright 5.00). I have no idea what it means; it isn't documented
+ by the SCC API from Microsoft (version 0.99.0823). */
+
+/* The "void *context_arg" argument to most of the Scc* functions
+ stores a pointer to a structure that the version control system
+ gets to allocate, so it doesn't need any global variables. */
+
+/* In addition to context_arg, most of the Scc* functions take a
+ "HWND window" argument. This is so that we can put up dialogs.
+ The window which is passed in is the IDE's window, which we
+ should use as the parent of dialogs that we put up. */
+
+#include <windows.h>
+
+/* Return the version of the SCC spec, major version in the high word,
+ minor version in the low word. Recommended value is 0x10001 for
+ version 1.1 of the spec. */
+extern LONG SccGetVersion (void);
+
+/* Set up the version control system. This should be called before any
+ other SCC calls other than SccGetVersion. */
+extern SCC_return SccInitialize
+ (/* The version control system should allocate the context argument
+ in SccInitialize and store a pointer to it in *contextp. */
+ void **contextp,
+
+ HWND window, LPSTR caller,
+ /* Version control system should copy in the
+ name of the version control system here,
+ up to SCC_max_name bytes. */
+ LPSTR name,
+
+ /* Version control system should set *caps to indicate what it
+ supports, using bits from SCC_cap_*. */
+ LPLONG caps,
+
+ /* Version control system should copy in a string here, that the
+ development environment can put places like a makefile to
+ distinguish this version control system from others. Up to
+ SCC_max_init_path bytes. */
+ LPSTR path,
+
+ /* Version control system should set these to the maximum size for
+ checkout comments and comments. I'm not sure whether existing
+ development environments tend to allocate fixed size arrays
+ based on the return length (I would recommend that a development
+ environment not do so, but that is a different question). */
+ LPDWORD co_comment_len,
+ LPDWORD comment_len);
+
+/* The version control system should free any resources it has allocated,
+ including the context structure itself. */
+extern SCC_return SccUninitialize (void *context_arg);
+
+extern SCC_return SccOpenProject
+ (void *context_arg, HWND window, LPSTR user,
+ LPSTR project, LPSTR local_proj,
+ LPSTR aux_proj,
+ LPSTR comment,
+
+ /* This is the function which the version control system can call
+ to ask the development environment to display output, or
+ (SCC_outproc)0 if the development environment doesn't support
+ the outproc feature. */
+ SCC_outproc outproc,
+
+ /* One or more of the SCC_open_* settings. */
+ LONG flags);
+
+extern SCC_return SccCloseProject (void *context_arg);
+
+/* cvs get. */
+extern SCC_return SccGet
+ (void *context_arg, HWND window,
+
+ /* Files to get, where file_names is an array
+ of num_files names. */
+ /* As with all file names passed to us by the SCC, these file names
+ are absolute pathnames. I think they will tend to be paths
+ within the local directory specified by the local_proj argument
+ to SccOpenProject, although I don't know whether there are any
+ exceptions to that. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ /* Command options. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs edit. */
+extern SCC_return SccCheckout
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ LPSTR comment,
+
+ /* Command options. I'm not sure what command options, if any, are
+ defined for SccCheckout. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs ci. */
+extern SCC_return SccCheckin
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ LPSTR comment,
+
+ /* Command options. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs unedit. */
+extern SCC_return SccUncheckout
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ /* Command options. I'm not sure what command options, if any, are
+ defined for SccUncheckout. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs add + cvs ci, more or less, I think (but see also
+ the "keep checked out" flag in options). */
+extern SCC_return SccAdd
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ LPSTR comment,
+
+ /* Array of num_files command options, one for each file. */
+ LONG *options,
+
+ void *prov_options);
+
+/* cvs rm -f + cvs ci, I think. Should barf if SCC_REMOVE_KEEP
+ (or maybe just put the file there, as if the user had removed
+ it and then done a "copy <saved-file> <filename>". */
+extern SCC_return SccRemove
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ LPSTR comment,
+
+ /* Command options. */
+ LONG options,
+
+ void *prov_options);
+
+/* mv, cvs add, cvs rm, and cvs ci, I think. */
+extern SCC_return SccRename
+ (void *context_arg, HWND window, LPSTR old_name,
+ LPSTR new_name);
+
+/* If SCC_cmdopt_compare_files, SCC_cmdopt_consult_checksum, or
+ SCC_cmdopt_consult_timestamp, then we are supposed to silently
+ return a status, without providing any information directly to the
+ user. For no args or checksum (which we fall back to full compare)
+ basically a call to No_Diff or ? in the client case. For
+ timestamp, just a Classify_File. Now, if contents not set, then
+ want to do a cvs diff, and preferably start up WinDiff or something
+ (to be determined, for now perhaps could just return text via
+ outproc). */
+extern SCC_return SccDiff
+ (void *context_arg, HWND window, LPSTR file_name,
+
+ /* Command options. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs log, I presume. If we want to get fancier we could bring
+ up a screen more analogous to the tkCVS log window, let the user
+ do "cvs update -r", etc. */
+extern SCC_return SccHistory
+ (void *context_arg, HWND window,
+
+ /* Files to operate on, where file_names is an array of num_files
+ names. */
+ LONG num_files,
+ LPSTR *file_names,
+
+ /* Command options. I'm not sure what command options,
+ if any, are defined for SccHistory. */
+ LONG options,
+
+ void *prov_options);
+
+/* cvs status, presumably. */
+extern SCC_return SccProperties
+ (void *context_arg, HWND window, LPSTR file_name);
+
+/* Not sure what this should do. The most obvious thing is some
+ kind of front-end to "cvs admin" but I'm not actually sure that
+ is the most useful thing. */
+extern SCC_return SccRunScc
+ (void *context_arg, HWND window,
+
+ LONG num_files,
+ LPSTR *file_names);
+
+/* If the user invokes version-control-system-defined behavior
+ (typically by clicking an Advanced button in a dialog, e.g. the Get
+ dialog), and the user clicks on that button, then the development
+ environment calls SccGetCommandOptions. The version control system
+ interacts with the user and then sets *PROV_OPTIONSP to whatever it
+ wants. The development environment doesn't do anything with it,
+ but does pass it to the various commands as prov_options. If it
+ calls SccGetCommandOptions again, it will pass the same value (so
+ user choices from the previous "Advanced" click can serve as
+ defaults).
+
+ Note that "provider options" (prov_options) are unrelated to
+ "command options" (SCC_cmdopt_*). */
+
+extern SCC_return SccGetCommandOptions
+ (void *context_arg, HWND window,
+ enum SCC_command command,
+ void **prov_optionsp);
+
+/* Not existing CVS functionality, I don't think.
+ Need to be able to tell user about what files
+ are out there without actually getting them. */
+extern SCC_return SccPopulateList
+ (void *context_arg, enum SCC_command command,
+
+ LONG num_files,
+ LPSTR *file_names,
+
+ SCC_popul_proc populate,
+ void *callerdat,
+
+ /* Command options. I'm not sure what command options,
+ if any, are defined for SccPopulateList. */
+ LONG options);
+
+/* cvs status, sort of. */
+extern SCC_return SccQueryInfo
+ (void *context_arg,
+
+ LONG num_files, LPSTR *file_names,
+
+ /* This is an array of NUM_FILES entries. In each one
+ we store a SCC_status_* code. */
+ LPLONG status);
+
+/* Like QueryInfo, but fast and for only a single file. For example, the
+ development environment might call this quite frequently to keep its
+ screen display updated. Supposed to only return cached status
+ information, not go to disk or anything. I assume that
+ QueryInfo and probably the usual calls like Get would cause
+ the version control system to cache the status in the first place. */
+extern SCC_return SccGetEvents
+ (void *context_arg, LPSTR file_name,
+
+ /* Here the version control system stores the SCC_status_* code. */
+ LPLONG status,
+
+ LPLONG events_remaining);
+
+/* This is where the user gives us the CVSROOT. */
+extern SCC_return SccGetProjPath
+ (void *context_arg, HWND window, LPSTR user,
+
+ /* Version control system copies in the project name
+ here, up to SCC_max_path bytes. */
+ LPSTR proj_name,
+
+ /* If allow_change, the version control system may copy
+ into this field, up to SCC_max_path bytes. */
+ LPSTR local_proj,
+
+ /* Version control system copies into this field, up to
+ SCC_max_path bytes. */
+ LPSTR aux_proj,
+
+ BOOL allow_change, BOOL *new);
+
+/* Pretty much similar to SccPopulateList. Not sure whether this also
+ involves getting the files, or whether the development environment will
+ typically call SccGet after this function. */
+extern SCC_return SccAddFromScc
+ (void *context_arg, HWND window,
+
+ /* Version control system sets *files to the number of files and
+ *file_names to an array each element of which and contains the
+ name of one of the files. The names can be relative pathnames
+ (e.g. "foo.c"). If files is NULL, that means something different;
+ the version control system should free the memory that it allocated
+ for file_names. */
+ LONG *files,
+ char ***file_names);
+
+/* This changes several aspects of how we interact with the IDE. */
+extern SCC_return SccSetOption
+ (void *context_arg,
+ /* One of the SCC_option_* codes. */
+ LONG option,
+ /* Meaning of this will depend on the value of option. */
+ LONG val);
+
+/* New functions with CodeWright 5.00c: SccAddRef, SccRelease,
+ SccDiffToRev, SccLabel, SccLock and SccMerge. I don't have any
+ details on them. */
diff --git a/windows-NT/SCC/scc.c b/windows-NT/SCC/scc.c
new file mode 100644
index 0000000..9f74af4
--- /dev/null
+++ b/windows-NT/SCC/scc.c
@@ -0,0 +1,469 @@
+/* This file was written by Jim Kingdon, and is hereby placed
+ in the public domain. */
+
+#include <Wtypes.h>
+#include <stdio.h>
+#include <direct.h> /* For chdir */
+
+#include "pubscc.h"
+
+/* We get to put whatever we want here, and the caller will pass it
+ to us, so we don't need any global variables. This is the
+ "void *context_arg" argument to most of the Scc* functions. */
+struct context {
+ FILE *debuglog;
+ /* Value of the CVSROOT we are currently working with (that is, the
+ "open project" in SCC terminology), malloc'd, or NULL if there is
+ no project currently open. */
+ char *root;
+ /* Local directory (working directory in CVS parlance). */
+ char *local;
+ SCC_outproc outproc;
+};
+
+/* In addition to context_arg, most of the Scc* functions take a
+ "HWND window" argument. This is so that we can put up dialogs.
+ The window which is passed in is the IDE's window, which we
+ should use as the parent of dialogs that we put up. */
+
+#include <windows.h>
+
+/* Report a malloc error and return the SCC_return_* value which the
+ caller should return to the IDE. Probably this should be getting
+ the window argument too, but for the moment we don't need it.
+ Note that we only use this for errors which occur after the
+ context->outproc is set up. */
+SCC_return
+malloc_error (struct context *context)
+{
+ (*context->outproc) ("Out of memory\n", SCC_outproc_error);
+ return SCC_return_non_specific_error;
+}
+
+/* Return the version of the SCC spec, major version in the high word,
+ minor version in the low word. */
+LONG
+SccGetVersion (void)
+{
+ /* We implement version 1.1 of the spec. */
+ return 0x10001;
+}
+
+SCC_return
+SccInitialize (void **contextp, HWND window, LPSTR caller, LPSTR name,
+ LPLONG caps, LPSTR path, LPDWORD co_comment_len,
+ LPDWORD comment_len)
+{
+ struct context *context;
+ FILE *fp;
+ fp = fopen ("d:\\debug.scc", "w");
+ if (fp == NULL)
+ /* Do what? Return some error value? */
+ abort ();
+ context = malloc (sizeof (struct context));
+ if (context == NULL)
+ {
+ fprintf (fp, "Out of memory\n");
+ fclose (fp);
+ /* Do what? Return some error? */
+ abort ();
+ }
+ context->debuglog = fp;
+ context->root = NULL;
+ *contextp = context;
+ fprintf (fp, "Made it into SccInitialize!\n");
+ *caps = (SCC_cap_GetProjPath
+ | SCC_cap_AddFromScc
+ | SCC_cap_want_outproc);
+
+ /* I think maybe this should have some more CVS-like
+ name, like "CVS Root", if we decide that is what
+ a SCC "project" is. */
+ strncpy (path, "CVS Project:", SCC_max_init_path);
+ fprintf (fp, "Caller name is %s\n", caller);
+ strncpy (name, "CVS", SCC_max_name);
+ /* CVS has no limit on comment length. But I suppose
+ we need to return a value which is small enough for
+ a caller to allocate a buffer this big. Not that I
+ would write a caller that way, but..... */
+ *co_comment_len = 8192;
+ *comment_len = 8192;
+ fflush (fp);
+ return SCC_return_success;
+}
+
+SCC_return
+SccUninitialize (void *context_arg)
+{
+ struct context *context = (struct context *)context_arg;
+ if (ferror (context->debuglog))
+ /* FIXME: return error value... */
+ if (fclose (context->debuglog) == EOF)
+ /* FIXME: return error value, I think. */
+ ;
+ free (context);
+ return SCC_return_success;
+}
+
+SCC_return
+SccOpenProject (void *context_arg, HWND window, LPSTR user,
+ LPSTR project, LPSTR local_proj, LPSTR aux_proj,
+ LPSTR comment, SCC_outproc outproc,
+ LONG flags)
+{
+ struct context *context = (struct context *)context_arg;
+
+ /* This can happen if the IDE opens a project which is not under
+ CVS control. I'm not sure whether checking for aux_proj
+ being "" is the right way to detect this case, but it seems
+ it should work because I think that the source code control
+ system is what has control over the contents of aux_proj. */
+ if (aux_proj[0] == '\0')
+ return SCC_return_unknown_project;
+
+ context->root = malloc (strlen (aux_proj) + 5);
+ if (context->root == NULL)
+ return SCC_return_non_specific_error;
+ strcpy (context->root, aux_proj);
+ /* Since we don't yet support creating projects, we don't
+ do anything with flags. */
+
+ if (outproc == 0)
+ {
+ /* This supposedly can happen if the IDE chooses not to implement
+ the outproc feature. */
+ fprintf (context->debuglog, "Uh oh. outproc is a null pointer\n");
+ context->root = NULL;
+ fflush (context->debuglog);
+ return SCC_return_non_specific_error;
+ }
+ context->outproc = outproc;
+
+ fprintf (context->debuglog, "SccOpenProject (aux_proj=%s)\n", aux_proj);
+
+ context->local = malloc (strlen (local_proj) + 5);
+ if (context->local == NULL)
+ return malloc_error (context);
+ strcpy (context->local, local_proj);
+
+ fflush (context->debuglog);
+ return SCC_return_success;
+}
+
+SCC_return
+SccCloseProject (void *context_arg)
+{
+ struct context *context = (struct context *)context_arg;
+ fprintf (context->debuglog, "SccCloseProject\n");
+ fflush (context->debuglog);
+ if (context->root != NULL)
+ free (context->root);
+ context->root = NULL;
+ return SCC_return_success;
+}
+
+/* cvs get. */
+SCC_return
+SccGet (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names,
+ LONG options,
+ void *prov_options)
+{
+ struct context *context = (struct context *)context_arg;
+ int i;
+ char *fname;
+
+ fprintf (context->debuglog, "SccGet: %d; files:", num_files);
+#if 1
+ for (i = 0; i < num_files; ++i)
+ {
+ fprintf (context->debuglog, "%s ", file_names[i]);
+ }
+#endif
+ fprintf (context->debuglog, "\n");
+ if (options & SCC_cmdopt_dir)
+ fprintf (context->debuglog, " Get all\n");
+ /* Should be using this flag to set -R vs. -l. */
+ if (options & SCC_cmdopt_recurse)
+ fprintf (context->debuglog, " recurse\n");
+
+ for (i = 0; i < num_files; ++i)
+ {
+ /* As with all file names passed to us by the SCC, these
+ file names are absolute pathnames. I think they will
+ tend to be paths within context->local, although I
+ don't know whether there are any exceptions to that. */
+ fname = file_names[i];
+ fprintf (context->debuglog, "%s ", fname);
+ /* Here we would write to the file named fname. */
+ }
+ fprintf (context->debuglog, "\nExiting SccGet\n");
+ fflush (context->debuglog);
+ return SCC_return_success;
+}
+
+/* cvs edit. */
+SCC_return
+SccCheckout (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names, LPSTR comment,
+ LONG options,
+ void *prov_options)
+{
+ struct context *context = (struct context *)context_arg;
+ fprintf (context->debuglog, "SccCheckout num_files=%ld\n", num_files);
+ fflush (context->debuglog);
+ /* For the moment we say that all files are not ours. I'm not sure
+ whether this is ever necessary; that is, whether the IDE will call
+ us except where we have told the IDE that a file is under source
+ control. */
+ /* I'm not sure what we would do if num_files > 1 and we wanted to
+ return different statuses for different files. */
+ return SCC_return_non_scc_file;
+}
+
+/* cvs ci. */
+SCC_return
+SccCheckin (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names, LPSTR comment,
+ LONG options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* cvs unedit. */
+SCC_return
+SccUncheckout (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names,
+ LONG options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* cvs add + cvs ci, more or less, I think (but see also
+ the "keep checked out" flag in options). */
+SCC_return
+SccAdd (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names, LPSTR comment,
+ LONG *options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* cvs rm -f + cvs ci, I think. Should barf if SCC_REMOVE_KEEP
+ (or maybe just put the file there, as if the user had removed
+ it and then done a "copy <saved-file> <filename>". */
+SCC_return
+SccRemove (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names, LPSTR comment,
+ LONG options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* mv, cvs add, cvs rm, and cvs ci, I think. */
+SCC_return
+SccRename (void *context_arg, HWND window, LPSTR old_name,
+ LPSTR new_name)
+{
+ return SCC_return_not_supported;
+}
+
+/* If SCC_cmdopt_compare_files, SCC_cmdopt_consult_checksum, or
+ SCC_cmdopt_consult_timestamp, then we are supposed to silently
+ return a status, without providing any information directly to the
+ user. For no args or checksum (which we fall back to full compare)
+ basically a call to No_Diff or ? in the client case. For
+ timestamp, just a Classify_File. Now, if contents not set, then
+ want to do a cvs diff, and preferably start up WinDiff or something
+ (to be determined, for now perhaps could just return text via
+ outproc). */
+SCC_return
+SccDiff (void *context_arg, HWND window, LPSTR file_name,
+ LONG options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* cvs log, I presume. If we want to get fancier we could bring
+ up a screen more analogous to the tkCVS log window, let the user
+ do "cvs update -r", etc. */
+SCC_return
+SccHistory (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names,
+ LONG options,
+ void *prov_options)
+{
+ return SCC_return_not_supported;
+}
+
+/* cvs status, presumably. */
+SCC_return
+SccProperties (void *context_arg, HWND window, LPSTR file_name)
+{
+ return SCC_return_not_supported;
+}
+
+/* Not sure what this should do. The most obvious thing is some
+ kind of front-end to "cvs admin" but I'm not actually sure that
+ is the most useful thing. */
+SCC_return
+SccRunScc (void *context_arg, HWND window, LONG num_files,
+ LPSTR *file_names)
+{
+ return SCC_return_not_supported;
+}
+
+/* Lots of things that we could do here. Options to get/update
+ such as -r -D -k etc. just for starters. Note that the terminology is
+ a little confusing here. This function relates to "provider options"
+ (prov_options) which are a way for us to provide extra dialogs beyond
+ the basic ones for a particular command. It is unrelated to "command
+ options" (SCC_cmdopt_*). */
+SCC_return
+SccGetCommandOptions (void *context_arg, HWND window,
+ enum SCC_command command,
+ void **prov_optionsp)
+{
+ return SCC_return_not_supported;
+}
+
+/* Not existing CVS functionality, I don't think.
+ Need to be able to tell user about what files
+ are out there without actually getting them. */
+SCC_return
+SccPopulateList (void *context_arg, enum SCC_command command,
+ LONG num_files,
+ LPSTR *file_names, SCC_popul_proc populate,
+ void *callerdat,
+ LONG options)
+{
+ return SCC_return_success;
+}
+
+/* cvs status, sort of. */
+SCC_return
+SccQueryInfo (void *context_arg, LONG num_files, LPSTR *file_names,
+ LPLONG status)
+{
+ return SCC_return_not_supported;
+}
+
+/* Like QueryInfo, but fast and for only a single file. For example, the
+ development environment might call this quite frequently to keep its
+ screen display updated. */
+SCC_return
+SccGetEvents (void *context_arg, LPSTR file_name,
+ LPLONG status,
+ LPLONG events_remaining)
+{
+ /* They say this is supposed to only return cached status
+ information, not go to disk or anything. I assume that
+ QueryInfo and probably the usual calls like Get would cause
+ us to cache the status in the first place. */
+ return SCC_return_success;
+}
+
+/* This is where the user gives us the CVSROOT. */
+SCC_return
+SccGetProjPath (void *context_arg, HWND window, LPSTR user,
+ LPSTR proj_name, LPSTR local_proj, LPSTR aux_proj,
+ BOOL allow_change, BOOL *new)
+{
+ /* For now we just hardcode the CVSROOT. In the future we will
+ of course prompt the user for it (simple implementation would
+ have them supply a string; potentially better implementation
+ would have menus or something for access methods and so on,
+ although it might also have a way of bypassing that in case
+ CVS supports new features that the GUI code doesn't
+ understand). We probably will also at some point want a
+ "project" to encompass both a CVSROOT and a directory or
+ module name within that CVSROOT, but we don't try to handle
+ that yet either. We also will want to be able to use "user"
+ instead of having the username encoded in the aux_proj or
+ proj_name, probably. */
+
+ struct context *context = (struct context *)context_arg;
+ fprintf (context->debuglog, "SccGetProjPath called\n");
+
+ /* At least for now we leave the proj_name alone, and just use
+ the aux_proj. */
+ strncpy (proj_name, "zwork", SCC_max_path);
+ strncpy (aux_proj, ":server:harvey:/home/kingdon/zwork/cvsroot",
+ SCC_max_path);
+ if (local_proj[0] == '\0' && allow_change)
+ strncpy (local_proj, "d:\\sccwork", SCC_max_path);
+ /* I don't think I saw anything in the spec about this,
+ but let's see if it helps. */
+ if (_chdir (local_proj) < 0)
+ fprintf (context->debuglog, "Error in chdir: %s", strerror (errno));
+
+ if (*new)
+ /* It is OK for us to prompt the user for creating a new
+ project. */
+ /* We will say that the user said to create a new one. */
+ *new = 1;
+
+ fflush (context->debuglog);
+ return SCC_return_success;
+}
+
+/* Pretty much similar to SccPopulateList. */
+SCC_return
+SccAddFromScc (void *context_arg, HWND window, LONG *files,
+ char ***file_names)
+{
+ struct context *context = (struct context *)context_arg;
+
+ /* For now we have hardcoded the notion that there are two files,
+ foo.c and bar.c. */
+#define NUM_FILES 2
+ if (files == NULL)
+ {
+ char **p;
+
+ /* This means to free the memory that is allocated for
+ file_names. */
+ for (p = *file_names; *p != NULL; ++p)
+ {
+ fprintf (context->debuglog, "Freeing %s\n", *p);
+ free (*p);
+ }
+ }
+ else
+ {
+ *file_names = malloc ((NUM_FILES + 1) * sizeof (char **));
+ if (*file_names == NULL)
+ return malloc_error (context);
+ (*file_names)[0] = malloc (80);
+ if ((*file_names)[0] == NULL)
+ return malloc_error (context);
+ strcpy ((*file_names)[0], "foo.c");
+ (*file_names)[1] = malloc (80);
+ if ((*file_names)[1] == NULL)
+ return malloc_error (context);
+ strcpy ((*file_names)[1], "bar.c");
+ (*file_names)[2] = NULL;
+ *files = 2;
+
+ /* Are we supposed to also Get the files? Or is the IDE
+ next going to call SccGet on each one? The spec doesn't
+ say explicitly. */
+ }
+ fprintf (context->debuglog, "Success in SccAddFromScc\n");
+ fflush (context->debuglog);
+ return SCC_return_success;
+}
+
+/* This changes several aspects of how we interact with the IDE. */
+SCC_return
+SccSetOption (void *context_arg,
+ LONG option,
+ LONG val)
+{
+ return SCC_return_success;
+}
diff --git a/windows-NT/SCC/scc.def b/windows-NT/SCC/scc.def
new file mode 100644
index 0000000..cf4eded
--- /dev/null
+++ b/windows-NT/SCC/scc.def
@@ -0,0 +1,25 @@
+LIBRARY SCC
+EXPORTS
+ SccInitialize @1
+ SccUninitialize @2
+ SccOpenProject @3
+ SccCloseProject @4
+ SccGet @5
+ SccCheckout @6
+ SccUncheckout @7
+ SccCheckin @8
+ SccAdd @9
+ SccRemove @10
+ SccRename @11
+ SccDiff @12
+ SccHistory @13
+ SccProperties @14
+ SccRunScc @15
+ SccGetCommandOptions @16
+ SccQueryInfo @17
+ SccGetEvents @18
+ SccGetProjPath @19
+ SccPopulateList @20
+ SccAddFromScc @21
+ SccSetOption @22
+ SccGetVersion @23
diff --git a/windows-NT/arpa/inet.h b/windows-NT/arpa/inet.h
new file mode 100644
index 0000000..fa882cb
--- /dev/null
+++ b/windows-NT/arpa/inet.h
@@ -0,0 +1 @@
+/* empty file */
diff --git a/windows-NT/config.h b/windows-NT/config.h
new file mode 100644
index 0000000..da2335f
--- /dev/null
+++ b/windows-NT/config.h
@@ -0,0 +1,1452 @@
+/* This file is generated via a rule in Makefile.am from the
+ * config.h.in file.
+ *
+ * *** DO NOT EDIT THIS FILE DIRECTLY ***
+ *
+ * Edit config.h.in instead.
+ */
+/***
+ *** config.h.in, generated by mkconfig.pl:
+ ***
+ *** (config.h.in.in
+ *** + ../config.h.in)
+ *** . config.h.in.footer
+ *** --> config.h.in
+ ***
+ *** ***** DO NOT ALTER THIS FILE!!! *****
+ ***
+ *** Changes to this file will be overwritten by automatic script runs.
+ *** Changes should be made to the config.h.in.in & config.h.in.footer
+ *** files instead.
+ ***/
+
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define this to a NULL terminated list of allowed path prefixes (for
+ directories) and paths to files the CVS server will allow configuration to
+ be read from when specified from the command line. */
+#undef ALLOW_CONFIG_OVERRIDE
+
+/* Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access method in
+ the CVS client (default) */
+#define AUTH_CLIENT_SUPPORT 1
+
+/* Define if you want to use the password authenticated server. */
+#undef AUTH_SERVER_SUPPORT
+
+/* Define if you want CVS to be able to be a remote repository client. */
+#define CLIENT_SUPPORT
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* define if cross compiling */
+#undef CROSS_COMPILING
+
+/* The CVS admin command is restricted to the members of the group
+ CVS_ADMIN_GROUP. If this group does not exist, all users are allowed to run
+ CVS admin. To disable the CVS admin command for all users, create an empty
+ CVS_ADMIN_GROUP by running configure with the --with-cvs-admin-group=
+ option. To disable access control for CVS admin, run configure with the
+ --without-cvs-admin-group option in order to comment out the define below.
+ */
+#undef CVS_ADMIN_GROUP
+
+/* When committing a permanent change, CVS and RCS make a log entry of who
+ committed the change. If you are committing the change logged in as "root"
+ (not under "su" or other root-priv giving program), CVS/RCS cannot
+ determine who is actually making the change. As such, by default, CVS
+ prohibits changes committed by users logged in as "root". You can disable
+ checking by passing the "--enable-rootcommit" option to configure or by
+ commenting out the lines below. */
+#undef CVS_BADROOT
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#undef D_INO_IN_DIRENT
+
+/* The default editor to use, if one does not specify the "-e" option to cvs,
+ or does not have an EDITOR environment variable. If this is not set to an
+ absolute path to an executable, use the shell to find where the editor
+ actually is. This allows sites with /usr/bin/vi or /usr/ucb/vi to work
+ equally well (assuming that their PATH is reasonable). */
+#define EDITOR_DFLT "notepad"
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to enable encryption support. */
+#undef ENCRYPTION
+
+/* Define as good substitute value for EOVERFLOW. */
+#define EOVERFLOW EINVAL
+
+/* Define if this executable will be running on case insensitive file systems.
+ In the client case, this means that it will request that the server pretend
+ to be case insensitive if it isn't already. */
+#define FILENAMES_CASE_INSENSITIVE 1
+
+/* Define on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 1
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 1
+
+#if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+ ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0)
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+#endif
+
+/* When committing or importing files, you must enter a log message. Normally,
+ you can do this either via the -m flag on the command line, the -F flag on
+ the command line, or an editor will be started for you. If you like to use
+ logging templates (the rcsinfo file within the $CVSROOT/CVSROOT directory),
+ you might want to force people to use the editor even if they specify a
+ message with -m or -F. Enabling FORCE_USE_EDITOR will cause the -m or -F
+ message to be appended to the temp file when the editor is started. */
+#undef FORCE_USE_EDITOR
+
+/* Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined
+ in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only
+ relevant when using GSSAPI. */
+#undef GSS_C_NT_HOSTBASED_SERVICE
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have `alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the `atexit' function. */
+#define HAVE_ATEXIT 1
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the `chsize' function. */
+#define HAVE_CHSIZE 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if you have the connect function. */
+#define HAVE_CONNECT
+
+/* Define if you have the crypt function. */
+#undef HAVE_CRYPT
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FERROR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FREAD_UNLOCKED
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FWRITE_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETCWD 1
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getlogin', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN
+
+/* Define to 1 if you have the declaration of `getlogin_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN_R
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+ don't. */
+#define HAVE_DECL_GETPASS 1
+
+/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
+ don't. */
+#undef HAVE_DECL_MEMRCHR
+
+/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you
+ don't. */
+#define HAVE_DECL_NANOSLEEP 1
+
+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+ */
+#define HAVE_DECL_STRDUP 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+ don't. */
+#define HAVE_DECL___FPENDING 0
+
+/* Define to 1 if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define if you have the declaration of environ. */
+#define HAVE_ENVIRON_DECL 1
+
+/* Define if you have the declaration of errno. */
+#define HAVE_ERRNO_DECL 1
+
+/* Define to 1 if you have the `fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `geteuid' function. */
+#undef HAVE_GETEUID
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `getlogin_r' function. */
+#undef HAVE_GETLOGIN_R
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define if you have the getspnam function. */
+#undef HAVE_GETSPNAM
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define if you have GSSAPI with Kerberos version 5 available. */
+#undef HAVE_GSSAPI
+
+/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
+
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_H
+
+/* Define to 1 if you have the <gssapi.h> header file. */
+#undef HAVE_GSSAPI_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET. */
+#define HAVE_IPV4 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
+#undef HAVE_IPV6
+
+/* Define to 1 if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswprint' function. */
+#define HAVE_ISWPRINT 1
+
+/* Define if you have MIT Kerberos version 4 available. */
+#undef HAVE_KERBEROS
+
+/* Define to 1 if you have the <krb5.h> header file. */
+#undef HAVE_KRB5_H
+
+/* Define to 1 if you have the `krb_get_err_text' function. */
+#undef HAVE_KRB_GET_ERR_TEXT
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `krb' library (-lkrb). */
+#undef HAVE_LIBKRB
+
+/* Define to 1 if you have the `krb4' library (-lkrb4). */
+#undef HAVE_LIBKRB4
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `login' function. */
+#undef HAVE_LOGIN
+
+/* Define to 1 if you have the `logout' function. */
+#undef HAVE_LOGOUT
+
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mblen' function. */
+#define HAVE_MBLEN 1
+
+/* Define to 1 if you have the `mbrlen' function. */
+#define HAVE_MBRLEN 1
+
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+#define HAVE_MBRTOWC 1
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if you have the `mbsrtowcs' function. */
+#define HAVE_MBSRTOWCS 1
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#define HAVE_MBSTATE_T 1
+
+/* Define if you have memchr (always for CVS). */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
+#define HAVE_MINMAX_IN_LIMITS_H 1
+
+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_SYS_PARAM_H
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `nanotime' function. */
+#undef HAVE_NANOTIME
+
+/* Define to 1 if you have the <ndbm.h> header file. */
+#undef HAVE_NDBM_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#define HAVE_NDIR_H 1
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to enable system authentication with PAM instead of using the simple
+ getpwnam interface. This allows authentication (in theory) with any PAM
+ module, e.g. on systems with shadow passwords or via LDAP */
+#undef HAVE_PAM
+
+/* Define to 1 if pam/pam_appl.h is available */
+#undef HAVE_PAM_PAM_APPL_H
+
+/* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
+ defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
+ */
+#undef HAVE_PARTLY_WORKING_GETCWD
+
+/* Define to 1 if you have the `posix_memalign' function. */
+#undef HAVE_POSIX_MEMALIGN
+
+/* Define to 1 if the `printf' function supports the %p format for printing
+ pointers. */
+#define HAVE_PRINTF_PTR 1
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `regcomp' function. */
+#undef HAVE_REGCOMP
+
+/* Define to 1 if you have the `regerror' function. */
+#undef HAVE_REGERROR
+
+/* Define to 1 if you have the `regexec' function. */
+#undef HAVE_REGEXEC
+
+/* Define to 1 if you have the `regfree' function. */
+#undef HAVE_REGFREE
+
+/* Define to 1 if you have the `resolvepath' function. */
+#undef HAVE_RESOLVEPATH
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have run the test for working tzset. */
+#define HAVE_RUN_TZSET_TEST 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if security/pam_appl.h is available */
+#undef HAVE_SECURITY_PAM_APPL_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define if the diff library should use setmode for binary files. */
+#define HAVE_SETMODE 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigblock' function. */
+#undef HAVE_SIGBLOCK
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define to 1 if you have the `sigsetmask' function. */
+#undef HAVE_SIGSETMASK
+
+/* Define to 1 if you have the `sigvec' function. */
+#undef HAVE_SIGVEC
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have strchr (always for CVS). */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define if there is a member named d_type in the struct describing directory
+ headers. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_rdev' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define if struct timespec is declared in <time.h>. */
+#undef HAVE_STRUCT_TIMESPEC
+
+/* Define to 1 if `tm_zone' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/bsdtypes.h> header file. */
+#undef HAVE_SYS_BSDTYPES_H
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `timezone' function. */
+#undef HAVE_TIMEZONE
+
+/* Define to 1 if localtime_r, etc. have the type signatures that POSIX
+ requires. */
+#undef HAVE_TIME_R_POSIX
+
+/* Define if struct tm has the tm_gmtoff member. */
+#undef HAVE_TM_GMTOFF
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#define HAVE_TZNAME 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define if you have the 'unsigned long long' type. */
+#undef HAVE_UNSIGNED_LONG_LONG
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#define HAVE_UTIME_NULL 1
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#define HAVE_WCRTOMB 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define if you have the 'wint_t' type. */
+#define HAVE_WINT_T 1
+
+/* Define to 1 if you have the `wmemchr' function. */
+#define HAVE_WMEMCHR 1
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#define HAVE_WMEMCPY 1
+
+/* Define to 1 if you have the `wmempcpy' function. */
+#undef HAVE_WMEMPCPY
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#undef HAVE_ZLIB_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define to 1 if you have the `__secure_getenv' function. */
+#undef HAVE___SECURE_GETENV
+
+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+/* Define to include locking code which prevents versions of CVS earlier than
+ 1.12.4 directly accessing the same repositiory as this executable from
+ ignoring this executable's promotable read locks. If only CVS versions
+ 1.12.4 and later will be accessing your repository directly (as a server or
+ locally), you can safely disable this option in return for fewer disk
+ accesses and a small speed increase. Disabling this option when versions of
+ CVS earlier than 1,12,4 _will_ be accessing your repository, however, is
+ *VERY* *VERY* *VERY* dangerous and could result in data loss. As such, by
+ default, CVS is compiled with this code enabled. If you are sure you would
+ like this code disabled, you can disable it by passing the
+ "--disable-lock-compatibility" option to configure or by commenting out the
+ lines below. */
+#define LOCK_COMPATIBILITY
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* By default, CVS stores its modules and other such items in flat text files
+ (MY_NDBM enables this). Turning off MY_NDBM causes CVS to look for a
+ system-supplied ndbm database library and use it instead. That may speed
+ things up, but the default setting generally works fine too. */
+#define MY_NDBM
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-cvs@nongnu.org"
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Concurrent Versions System (CVS) 1.12.13"
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to set a service name for PAM. This must be defined. Define to
+ `program_name', without the quotes, to use whatever name CVS was invoked
+ as. Otherwise, define to a double-quoted literal string, such as `"cvs"'.
+ */
+#undef PAM_SERVICE_NAME
+
+/* the number of pending output bytes on stream `fp' */
+#define PENDING_OUTPUT_N_BYTES ( fp ? fp->_ptr - fp->_base : 0 )
+
+/* Define if you want CVS to be able to serve as a transparent proxy for write
+ operations. Disabling this may produce a slight performance gain on some
+ systems, at the expense of write proxy support. */
+#undef PROXY_SUPPORT
+
+/* Path to the pr utility */
+#undef PR_PROGRAM
+
+/* Define to force lib/regex.c to use malloc instead of alloca. */
+#define REGEX_MALLOC 1
+
+/* Define if rename does not work for source file names with a trailing slash,
+ like the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The default remote shell to use, if one does not specify the CVS_RSH
+ environment variable. */
+#define RSH_DFLT "rsh"
+
+/* If you are working with a large remote repository and a 'cvs checkout' is
+ swamping your network and memory, define these to enable flow control. You
+ will end up with even less probability of a consistent checkout (see
+ Concurrency in cvs.texinfo), but CVS doesn't try to guarantee that anyway.
+ The master server process will monitor how far it is getting behind, if it
+ reaches the high water mark, it will signal the child process to stop
+ generating data when convenient (ie: no locks are held, currently at the
+ beginning of a new directory). Once the buffer has drained sufficiently to
+ reach the low water mark, it will be signalled to start again. */
+#undef SERVER_FLOWCONTROL
+
+/* The high water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_HI_WATER
+
+/* The low water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_LO_WATER
+
+/* Define if you want CVS to be able to serve repositories to remote clients.
+ */
+#undef SERVER_SUPPORT
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of a `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `intmax_t', as computed by sizeof. */
+#undef SIZEOF_INTMAX_T
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 8
+
+/* The size of a `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of a `ptrdiff_t', as computed by sizeof. */
+#define SIZEOF_PTRDIFF_T 4
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `wint_t', as computed by sizeof. */
+#define SIZEOF_WINT_T 2
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#define SIZE_MAX (~(size_t)0)
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#define STAT_MACROS_BROKEN 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Enable support for the pre 1.12.1 *info scripting hook format strings.
+ Disable this option for a smaller executable once your scripting hooks have
+ been updated to use the new *info format strings by passing
+ "--disable-old-info-format-support" option to configure or by commenting
+ out the line below. */
+#undef SUPPORT_OLD_INFO_FMT_STRINGS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Directory used for storing temporary files, if not overridden by
+ environment variables or the -T global option. There should be little need
+ to change this (-T is a better mechanism if you need to use a different
+ directory for temporary files). */
+#define TMPDIR_DFLT "c:\\temp"
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if tzset clobbers localtime's static buffer. */
+#undef TZSET_CLOBBERS_LOCALTIME_BUFFER
+
+/* Define to its maximum value if an unsigned integer type of width exactly 32
+ bits exists and the standard includes do not define UINT32_MAX. */
+#undef UINT32_MAX
+
+/* The default umask to use when creating or otherwise setting file or
+ directory permissions in the repository. Must be a value in the range of 0
+ through 0777. For example, a value of 002 allows group rwx access and world
+ rx access; a value of 007 allows group rwx access but no world access. This
+ value is overridden by the value of the CVSUMASK environment variable,
+ which is interpreted as an octal number. */
+#define UMASK_DFLT 002
+
+/* Define if double is the first floating point type detected with its size.
+ */
+#undef UNIQUE_FLOAT_TYPE_DOUBLE
+
+/* Define if float is the first floating point type detected with its size. */
+#undef UNIQUE_FLOAT_TYPE_FLOAT
+
+/* Define if long double is the first floating point type detected with its
+ size. */
+#undef UNIQUE_FLOAT_TYPE_LONG_DOUBLE
+
+/* Define if char is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_CHAR
+
+/* Define if int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INT
+
+/* Define if intmax_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INTMAX_T
+
+/* Define if long int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG
+
+/* Define if long long is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG_LONG
+
+/* Define if ptrdiff_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_PTRDIFF_T
+
+/* Define if short is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SHORT
+
+/* Define if size_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SIZE_T
+
+/* Define if wint_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_WINT_T
+
+/* Define if setmode is required when writing binary data to stdout. */
+#define USE_SETMODE_STDOUT 1
+
+/* Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps, but it is not
+ safe for multithreaded apps. */
+#undef USE_UNLOCKED_IO
+
+/* Define if utime requires write access to the file (true on Windows, but not
+ Unix). */
+#define UTIME_EXPECTS_WRITABLE
+
+/* Define if unsetenv() returns void, not int. */
+#undef VOID_UNSETENV
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Define to force lib/regex.c to define re_comp et al. */
+#define _REGEX_RE_COMP 1
+
+/* Define for Solaris 2.5.1 so uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+
+/* Define to rpl_ if the getcwd replacement function should be used. */
+#undef __GETCWD_PREFIX
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#define __GETOPT_PREFIX rpl_
+
+/* Define to rpl_ if the openat replacement function should be used. */
+#undef __OPENAT_PREFIX
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a replacement function name for fnmatch(). */
+#undef fnmatch
+
+/* Define to a replacement function name for getline(). */
+#undef getline
+
+/* Define to a replacement function name for getpass(). */
+#undef getpass
+
+/* Define to rpl_gettimeofday if the replacement function should be used. */
+#undef gettimeofday
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+#undef intmax_t
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_mkdir if the replacement function should be used. */
+#undef mkdir
+
+/* Define to rpl_mkstemp if the replacement function should be used. */
+#undef mkstemp
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#undef mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define mode_t int
+
+/* Define to the name of the strftime replacement function. */
+#define my_strftime nstrftime
+
+/* Define to rpl_nanosleep if the replacement function should be used. */
+#define nanosleep woe32_nanosleep
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#define realloc rpl_realloc
+
+/* Define to rpl_rename if the replacement function should be used. */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#define restrict
+
+/* Define to rpl_select if the replacement function should be used. */
+#undef select
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#define ssize_t int
+
+/* Define to rpl_strcasecmp always. */
+#define strcasecmp rpl_strcasecmp
+
+/* Define to rpl_tzset if the wrapper function should be used. */
+#undef tzset
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of a unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to unsigned long or unsigned long long if <stdint.h> and
+ <inttypes.h> don't define. */
+#undef uintmax_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
+/*============================================================================*/
+/* config.h.in.footer: configuration file for Windows NT
+ Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
+
+/* This file lives in the windows-NT subdirectory, which is only included
+ in your header search path if you're working under Microsoft Visual C++,
+ and use ../cvsnt.mak for your project. Thus, this is the right place to
+ put configuration information for Windows NT. */
+
+/* This file is getting chaotic and will be organized as follows:
+
+ Macros appears first alphabetized in case sensitive order.
+ Typedefs appear next alphabetized in case sensitive order.
+ Function prototypes alphabetized in case sensitive order.
+
+ Reorgnized by Conrad T. Pino <Conrad@Pino.com> May 25, 2005 */
+
+/* just one time please */
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+/* ======================= Macro Definnitions Follow ====================== */
+
+/* Under Windows NT, mkdir only takes one argument. */
+#define CVS_MKDIR wnt_mkdir
+
+#define CVS_RENAME wnt_rename
+
+/* This is where old bits go to die under Windows NT. */
+#define DEVNULL "nul"
+
+/* Windows has no ELOOP value in errno.h */
+#define ELOOP EMLINK
+
+/* Windows has _snprintf function.
+ HAVE_DECL__SNPRINTF used in ../lib/vasnprintf.c */
+#define HAVE_DECL__SNPRINTF 1
+
+#define HAVE_WINSOCK_H
+
+/* This tells the client that it must use send()/recv() to talk to the
+ server if it is connected to the server via a socket; Win95 needs
+ it because _open_osfhandle doesn't work. */
+#define NO_SOCKET_TO_FD 1
+
+/* Is this true on NT? Seems like I remember reports that NT 3.51 has
+ problems with 200K writes (of course, the issue of large writes is
+ moot since the use of buffer.c ensures that writes will only be as big
+ as the buffers). */
+#define SEND_NEVER_PARTIAL 1
+
+/* Stop server macro */
+#define SHUTDOWN_SERVER wnt_shutdown_server
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not available through errno.
+ Instead, this macro should be used to obtain an error code. */
+#define SOCK_ERRNO (WSAGetLastError ())
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not known to strerror. Instead,
+ this macro should be used to convert the error codes to strings. */
+#define SOCK_STRERROR sock_strerror
+
+/* Start server macro */
+#define START_SERVER wnt_start_server
+
+/* The internal rsh client uses sockets not file descriptors. Note
+ that as the code stands now, it often takes values from a SOCKET and
+ puts them in an int. This is ugly but it seems like sizeof
+ (SOCKET) <= sizeof (int) on win32, even the 64-bit variants. */
+#define START_SERVER_RETURNS_SOCKET 1
+
+/* Macro name tells the story */
+#define SYSTEM_CLEANUP woe32_cleanup
+
+/* Macro name tells the story */
+#define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
+
+/*
+ * According to GNU conventions, we should avoid referencing any macro
+ * containing "WIN" as a reference to Microsoft Windows, as we would like to
+ * avoid any implication that we consider Microsoft Windows any sort of "win".
+ *
+ * FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
+ * defining a configure macro to define WOE32 appropriately. If they ever do
+ * write such a beast, we should use it, though in most cases it would be
+ * preferable to avoid referencing any OS or compiler anyhow, per Autoconf
+ * convention, and reference only tested features of the system.
+ *
+ * re FIXME: This definition would still be necessary since systems which run
+ * configure do not use this config.h and vice-versa.
+ */
+#define WOE32 1
+
+/* Define POSIX name to Microsoft name */
+#define dup _dup
+
+/* getpagesize is missing on Windows, 4096 does the right thing. */
+#define getpagesize() 4096
+
+/* Define to a substitute for the `lstat' function. */
+#define lstat stat
+
+/* Define POSIX name to Microsoft name */
+#define popen _popen
+
+/* Define POSIX name to Microsoft name */
+#define pclose _pclose
+
+/* Diff needs us to define this. I think it could always be
+ -1 for CVS, because we pass temporary files to diff, but
+ config.h seems like the easiest place to put this, so for
+ now we put it here. */
+#define same_file(s,t) (-1)
+
+/* Define to a substitute for the stat function. */
+#define stat wnt_stat
+
+/* ====================== Typedef Declarations Follow ===================== */
+
+/* ====================== Function Prototypes Follow ====================== */
+
+#include <woe32.h>
+
+/* #define SOCK_STRERROR sock_strerror */
+char *sock_strerror (int errnum);
+
+/* #define CVS_MKDIR wnt_mkdir */
+int wnt_mkdir (const char *PATH, int MODE);
+
+/* #define CVS_RENAME wnt_rename */
+int wnt_rename (const char *, const char *);
+
+/* #define SHUTDOWN_SERVER wnt_shutdown_server */
+void wnt_shutdown_server (int fd);
+
+/* #define START_SERVER wnt_start_server */
+void wnt_start_server (int *tofd, int *fromfd,
+ char *client_user,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot);
+
+/* #define stat wnt_stat and #define lstat wnt_stat */
+int wnt_stat (const char *file, struct wnt_stat *sb);
+
+/* =============== Special mkdir Prototype Handling Follows =============== */
+
+#include <direct.h>
+#define mkdir wnt_mkdir
+
+/* ===================== Special Function Definitions ===================== */
+
+/*
+ Microsoft defines "mbinit" in <wchar.h> for C++ code only.
+
+ Expect link errors for versions:
+
+ earlier than Visual C++ 5.0
+
+ later than Visual C++ .NET 2003
+
+ and Visual C++ .NET is just a guess which might be wrong.
+*/
+
+#if _MSC_VER >= 1100 && _MSC_VER <= 1200
+
+/* If within Visual C++ 5.0 to Visual C++ 6.0 */
+
+inline int mbsinit (const void * arg)
+ { return 1; }
+
+#elif _MSC_VER >= 1300 && _MSC_VER <= 1310
+
+/* If within Visual C++ .NET to Visual C++ .NET 2003 */
+
+inline int mbsinit (const int * arg)
+ { return arg == NULL || ! *arg; }
+
+#endif
+
+/* =========================== End Of This File =========================== */
diff --git a/windows-NT/config.h.in b/windows-NT/config.h.in
new file mode 100644
index 0000000..c5bc371
--- /dev/null
+++ b/windows-NT/config.h.in
@@ -0,0 +1,1445 @@
+/***
+ *** config.h.in, generated by mkconfig.pl:
+ ***
+ *** (config.h.in.in
+ *** + ../config.h.in)
+ *** . config.h.in.footer
+ *** --> config.h.in
+ ***
+ *** ***** DO NOT ALTER THIS FILE!!! *****
+ ***
+ *** Changes to this file will be overwritten by automatic script runs.
+ *** Changes should be made to the config.h.in.in & config.h.in.footer
+ *** files instead.
+ ***/
+
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define this to a NULL terminated list of allowed path prefixes (for
+ directories) and paths to files the CVS server will allow configuration to
+ be read from when specified from the command line. */
+#undef ALLOW_CONFIG_OVERRIDE
+
+/* Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access method in
+ the CVS client (default) */
+#define AUTH_CLIENT_SUPPORT 1
+
+/* Define if you want to use the password authenticated server. */
+#undef AUTH_SERVER_SUPPORT
+
+/* Define if you want CVS to be able to be a remote repository client. */
+#define CLIENT_SUPPORT
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* define if cross compiling */
+#undef CROSS_COMPILING
+
+/* The CVS admin command is restricted to the members of the group
+ CVS_ADMIN_GROUP. If this group does not exist, all users are allowed to run
+ CVS admin. To disable the CVS admin command for all users, create an empty
+ CVS_ADMIN_GROUP by running configure with the --with-cvs-admin-group=
+ option. To disable access control for CVS admin, run configure with the
+ --without-cvs-admin-group option in order to comment out the define below.
+ */
+#undef CVS_ADMIN_GROUP
+
+/* When committing a permanent change, CVS and RCS make a log entry of who
+ committed the change. If you are committing the change logged in as "root"
+ (not under "su" or other root-priv giving program), CVS/RCS cannot
+ determine who is actually making the change. As such, by default, CVS
+ prohibits changes committed by users logged in as "root". You can disable
+ checking by passing the "--enable-rootcommit" option to configure or by
+ commenting out the lines below. */
+#undef CVS_BADROOT
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#undef D_INO_IN_DIRENT
+
+/* The default editor to use, if one does not specify the "-e" option to cvs,
+ or does not have an EDITOR environment variable. If this is not set to an
+ absolute path to an executable, use the shell to find where the editor
+ actually is. This allows sites with /usr/bin/vi or /usr/ucb/vi to work
+ equally well (assuming that their PATH is reasonable). */
+#define EDITOR_DFLT "notepad"
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to enable encryption support. */
+#undef ENCRYPTION
+
+/* Define as good substitute value for EOVERFLOW. */
+#define EOVERFLOW EINVAL
+
+/* Define if this executable will be running on case insensitive file systems.
+ In the client case, this means that it will request that the server pretend
+ to be case insensitive if it isn't already. */
+#define FILENAMES_CASE_INSENSITIVE 1
+
+/* Define on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 1
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 1
+
+#if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+ ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0)
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+#endif
+
+/* When committing or importing files, you must enter a log message. Normally,
+ you can do this either via the -m flag on the command line, the -F flag on
+ the command line, or an editor will be started for you. If you like to use
+ logging templates (the rcsinfo file within the $CVSROOT/CVSROOT directory),
+ you might want to force people to use the editor even if they specify a
+ message with -m or -F. Enabling FORCE_USE_EDITOR will cause the -m or -F
+ message to be appended to the temp file when the editor is started. */
+#undef FORCE_USE_EDITOR
+
+/* Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined
+ in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only
+ relevant when using GSSAPI. */
+#undef GSS_C_NT_HOSTBASED_SERVICE
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have `alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the `atexit' function. */
+#define HAVE_ATEXIT 1
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the `chsize' function. */
+#define HAVE_CHSIZE 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if you have the connect function. */
+#define HAVE_CONNECT
+
+/* Define if you have the crypt function. */
+#undef HAVE_CRYPT
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FERROR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FREAD_UNLOCKED
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FWRITE_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETCWD 1
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getlogin', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN
+
+/* Define to 1 if you have the declaration of `getlogin_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN_R
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+ don't. */
+#define HAVE_DECL_GETPASS 1
+
+/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
+ don't. */
+#undef HAVE_DECL_MEMRCHR
+
+/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you
+ don't. */
+#define HAVE_DECL_NANOSLEEP 1
+
+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+ */
+#define HAVE_DECL_STRDUP 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+ don't. */
+#define HAVE_DECL___FPENDING 0
+
+/* Define to 1 if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define if you have the declaration of environ. */
+#define HAVE_ENVIRON_DECL 1
+
+/* Define if you have the declaration of errno. */
+#define HAVE_ERRNO_DECL 1
+
+/* Define to 1 if you have the `fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `geteuid' function. */
+#undef HAVE_GETEUID
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `getlogin_r' function. */
+#undef HAVE_GETLOGIN_R
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define if you have the getspnam function. */
+#undef HAVE_GETSPNAM
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define if you have GSSAPI with Kerberos version 5 available. */
+#undef HAVE_GSSAPI
+
+/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
+
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_H
+
+/* Define to 1 if you have the <gssapi.h> header file. */
+#undef HAVE_GSSAPI_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET. */
+#define HAVE_IPV4 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
+#undef HAVE_IPV6
+
+/* Define to 1 if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswprint' function. */
+#define HAVE_ISWPRINT 1
+
+/* Define if you have MIT Kerberos version 4 available. */
+#undef HAVE_KERBEROS
+
+/* Define to 1 if you have the <krb5.h> header file. */
+#undef HAVE_KRB5_H
+
+/* Define to 1 if you have the `krb_get_err_text' function. */
+#undef HAVE_KRB_GET_ERR_TEXT
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `krb' library (-lkrb). */
+#undef HAVE_LIBKRB
+
+/* Define to 1 if you have the `krb4' library (-lkrb4). */
+#undef HAVE_LIBKRB4
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `login' function. */
+#undef HAVE_LOGIN
+
+/* Define to 1 if you have the `logout' function. */
+#undef HAVE_LOGOUT
+
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mblen' function. */
+#define HAVE_MBLEN 1
+
+/* Define to 1 if you have the `mbrlen' function. */
+#define HAVE_MBRLEN 1
+
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+#define HAVE_MBRTOWC 1
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if you have the `mbsrtowcs' function. */
+#define HAVE_MBSRTOWCS 1
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#define HAVE_MBSTATE_T 1
+
+/* Define if you have memchr (always for CVS). */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
+#define HAVE_MINMAX_IN_LIMITS_H 1
+
+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_SYS_PARAM_H
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `nanotime' function. */
+#undef HAVE_NANOTIME
+
+/* Define to 1 if you have the <ndbm.h> header file. */
+#undef HAVE_NDBM_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#define HAVE_NDIR_H 1
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to enable system authentication with PAM instead of using the simple
+ getpwnam interface. This allows authentication (in theory) with any PAM
+ module, e.g. on systems with shadow passwords or via LDAP */
+#undef HAVE_PAM
+
+/* Define to 1 if pam/pam_appl.h is available */
+#undef HAVE_PAM_PAM_APPL_H
+
+/* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
+ defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
+ */
+#undef HAVE_PARTLY_WORKING_GETCWD
+
+/* Define to 1 if you have the `posix_memalign' function. */
+#undef HAVE_POSIX_MEMALIGN
+
+/* Define to 1 if the `printf' function supports the %p format for printing
+ pointers. */
+#define HAVE_PRINTF_PTR 1
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `regcomp' function. */
+#undef HAVE_REGCOMP
+
+/* Define to 1 if you have the `regerror' function. */
+#undef HAVE_REGERROR
+
+/* Define to 1 if you have the `regexec' function. */
+#undef HAVE_REGEXEC
+
+/* Define to 1 if you have the `regfree' function. */
+#undef HAVE_REGFREE
+
+/* Define to 1 if you have the `resolvepath' function. */
+#undef HAVE_RESOLVEPATH
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have run the test for working tzset. */
+#define HAVE_RUN_TZSET_TEST 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if security/pam_appl.h is available */
+#undef HAVE_SECURITY_PAM_APPL_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define if the diff library should use setmode for binary files. */
+#define HAVE_SETMODE 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigblock' function. */
+#undef HAVE_SIGBLOCK
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define to 1 if you have the `sigsetmask' function. */
+#undef HAVE_SIGSETMASK
+
+/* Define to 1 if you have the `sigvec' function. */
+#undef HAVE_SIGVEC
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have strchr (always for CVS). */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define if there is a member named d_type in the struct describing directory
+ headers. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_rdev' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define if struct timespec is declared in <time.h>. */
+#undef HAVE_STRUCT_TIMESPEC
+
+/* Define to 1 if `tm_zone' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/bsdtypes.h> header file. */
+#undef HAVE_SYS_BSDTYPES_H
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `timezone' function. */
+#undef HAVE_TIMEZONE
+
+/* Define to 1 if localtime_r, etc. have the type signatures that POSIX
+ requires. */
+#undef HAVE_TIME_R_POSIX
+
+/* Define if struct tm has the tm_gmtoff member. */
+#undef HAVE_TM_GMTOFF
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#define HAVE_TZNAME 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define if you have the 'unsigned long long' type. */
+#undef HAVE_UNSIGNED_LONG_LONG
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#define HAVE_UTIME_NULL 1
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#define HAVE_WCRTOMB 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define if you have the 'wint_t' type. */
+#define HAVE_WINT_T 1
+
+/* Define to 1 if you have the `wmemchr' function. */
+#define HAVE_WMEMCHR 1
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#define HAVE_WMEMCPY 1
+
+/* Define to 1 if you have the `wmempcpy' function. */
+#undef HAVE_WMEMPCPY
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#undef HAVE_ZLIB_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define to 1 if you have the `__secure_getenv' function. */
+#undef HAVE___SECURE_GETENV
+
+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+/* Define to include locking code which prevents versions of CVS earlier than
+ 1.12.4 directly accessing the same repositiory as this executable from
+ ignoring this executable's promotable read locks. If only CVS versions
+ 1.12.4 and later will be accessing your repository directly (as a server or
+ locally), you can safely disable this option in return for fewer disk
+ accesses and a small speed increase. Disabling this option when versions of
+ CVS earlier than 1,12,4 _will_ be accessing your repository, however, is
+ *VERY* *VERY* *VERY* dangerous and could result in data loss. As such, by
+ default, CVS is compiled with this code enabled. If you are sure you would
+ like this code disabled, you can disable it by passing the
+ "--disable-lock-compatibility" option to configure or by commenting out the
+ lines below. */
+#define LOCK_COMPATIBILITY
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* By default, CVS stores its modules and other such items in flat text files
+ (MY_NDBM enables this). Turning off MY_NDBM causes CVS to look for a
+ system-supplied ndbm database library and use it instead. That may speed
+ things up, but the default setting generally works fine too. */
+#define MY_NDBM
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "%PACKAGE_BUGREPORT%"
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "%PACKAGE_STRING%"
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to set a service name for PAM. This must be defined. Define to
+ `program_name', without the quotes, to use whatever name CVS was invoked
+ as. Otherwise, define to a double-quoted literal string, such as `"cvs"'.
+ */
+#undef PAM_SERVICE_NAME
+
+/* the number of pending output bytes on stream `fp' */
+#define PENDING_OUTPUT_N_BYTES ( fp ? fp->_ptr - fp->_base : 0 )
+
+/* Define if you want CVS to be able to serve as a transparent proxy for write
+ operations. Disabling this may produce a slight performance gain on some
+ systems, at the expense of write proxy support. */
+#undef PROXY_SUPPORT
+
+/* Path to the pr utility */
+#undef PR_PROGRAM
+
+/* Define to force lib/regex.c to use malloc instead of alloca. */
+#define REGEX_MALLOC 1
+
+/* Define if rename does not work for source file names with a trailing slash,
+ like the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The default remote shell to use, if one does not specify the CVS_RSH
+ environment variable. */
+#define RSH_DFLT "rsh"
+
+/* If you are working with a large remote repository and a 'cvs checkout' is
+ swamping your network and memory, define these to enable flow control. You
+ will end up with even less probability of a consistent checkout (see
+ Concurrency in cvs.texinfo), but CVS doesn't try to guarantee that anyway.
+ The master server process will monitor how far it is getting behind, if it
+ reaches the high water mark, it will signal the child process to stop
+ generating data when convenient (ie: no locks are held, currently at the
+ beginning of a new directory). Once the buffer has drained sufficiently to
+ reach the low water mark, it will be signalled to start again. */
+#undef SERVER_FLOWCONTROL
+
+/* The high water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_HI_WATER
+
+/* The low water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_LO_WATER
+
+/* Define if you want CVS to be able to serve repositories to remote clients.
+ */
+#undef SERVER_SUPPORT
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of a `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `intmax_t', as computed by sizeof. */
+#undef SIZEOF_INTMAX_T
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 8
+
+/* The size of a `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of a `ptrdiff_t', as computed by sizeof. */
+#define SIZEOF_PTRDIFF_T 4
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `wint_t', as computed by sizeof. */
+#define SIZEOF_WINT_T 2
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#define SIZE_MAX (~(size_t)0)
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#define STAT_MACROS_BROKEN 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Enable support for the pre 1.12.1 *info scripting hook format strings.
+ Disable this option for a smaller executable once your scripting hooks have
+ been updated to use the new *info format strings by passing
+ "--disable-old-info-format-support" option to configure or by commenting
+ out the line below. */
+#undef SUPPORT_OLD_INFO_FMT_STRINGS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Directory used for storing temporary files, if not overridden by
+ environment variables or the -T global option. There should be little need
+ to change this (-T is a better mechanism if you need to use a different
+ directory for temporary files). */
+#define TMPDIR_DFLT "c:\\temp"
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if tzset clobbers localtime's static buffer. */
+#undef TZSET_CLOBBERS_LOCALTIME_BUFFER
+
+/* Define to its maximum value if an unsigned integer type of width exactly 32
+ bits exists and the standard includes do not define UINT32_MAX. */
+#undef UINT32_MAX
+
+/* The default umask to use when creating or otherwise setting file or
+ directory permissions in the repository. Must be a value in the range of 0
+ through 0777. For example, a value of 002 allows group rwx access and world
+ rx access; a value of 007 allows group rwx access but no world access. This
+ value is overridden by the value of the CVSUMASK environment variable,
+ which is interpreted as an octal number. */
+#define UMASK_DFLT 002
+
+/* Define if double is the first floating point type detected with its size.
+ */
+#undef UNIQUE_FLOAT_TYPE_DOUBLE
+
+/* Define if float is the first floating point type detected with its size. */
+#undef UNIQUE_FLOAT_TYPE_FLOAT
+
+/* Define if long double is the first floating point type detected with its
+ size. */
+#undef UNIQUE_FLOAT_TYPE_LONG_DOUBLE
+
+/* Define if char is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_CHAR
+
+/* Define if int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INT
+
+/* Define if intmax_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INTMAX_T
+
+/* Define if long int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG
+
+/* Define if long long is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG_LONG
+
+/* Define if ptrdiff_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_PTRDIFF_T
+
+/* Define if short is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SHORT
+
+/* Define if size_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SIZE_T
+
+/* Define if wint_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_WINT_T
+
+/* Define if setmode is required when writing binary data to stdout. */
+#define USE_SETMODE_STDOUT 1
+
+/* Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps, but it is not
+ safe for multithreaded apps. */
+#undef USE_UNLOCKED_IO
+
+/* Define if utime requires write access to the file (true on Windows, but not
+ Unix). */
+#define UTIME_EXPECTS_WRITABLE
+
+/* Define if unsetenv() returns void, not int. */
+#undef VOID_UNSETENV
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Define to force lib/regex.c to define re_comp et al. */
+#define _REGEX_RE_COMP 1
+
+/* Define for Solaris 2.5.1 so uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+
+/* Define to rpl_ if the getcwd replacement function should be used. */
+#undef __GETCWD_PREFIX
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#define __GETOPT_PREFIX rpl_
+
+/* Define to rpl_ if the openat replacement function should be used. */
+#undef __OPENAT_PREFIX
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a replacement function name for fnmatch(). */
+#undef fnmatch
+
+/* Define to a replacement function name for getline(). */
+#undef getline
+
+/* Define to a replacement function name for getpass(). */
+#undef getpass
+
+/* Define to rpl_gettimeofday if the replacement function should be used. */
+#undef gettimeofday
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+#undef intmax_t
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_mkdir if the replacement function should be used. */
+#undef mkdir
+
+/* Define to rpl_mkstemp if the replacement function should be used. */
+#undef mkstemp
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#undef mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define mode_t int
+
+/* Define to the name of the strftime replacement function. */
+#define my_strftime nstrftime
+
+/* Define to rpl_nanosleep if the replacement function should be used. */
+#define nanosleep woe32_nanosleep
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#define realloc rpl_realloc
+
+/* Define to rpl_rename if the replacement function should be used. */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#define restrict
+
+/* Define to rpl_select if the replacement function should be used. */
+#undef select
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#define ssize_t int
+
+/* Define to rpl_strcasecmp always. */
+#define strcasecmp rpl_strcasecmp
+
+/* Define to rpl_tzset if the wrapper function should be used. */
+#undef tzset
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of a unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to unsigned long or unsigned long long if <stdint.h> and
+ <inttypes.h> don't define. */
+#undef uintmax_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
+/*============================================================================*/
+/* config.h.in.footer: configuration file for Windows NT
+ Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
+
+/* This file lives in the windows-NT subdirectory, which is only included
+ in your header search path if you're working under Microsoft Visual C++,
+ and use ../cvsnt.mak for your project. Thus, this is the right place to
+ put configuration information for Windows NT. */
+
+/* This file is getting chaotic and will be organized as follows:
+
+ Macros appears first alphabetized in case sensitive order.
+ Typedefs appear next alphabetized in case sensitive order.
+ Function prototypes alphabetized in case sensitive order.
+
+ Reorgnized by Conrad T. Pino <Conrad@Pino.com> May 25, 2005 */
+
+/* just one time please */
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+/* ======================= Macro Definnitions Follow ====================== */
+
+/* Under Windows NT, mkdir only takes one argument. */
+#define CVS_MKDIR wnt_mkdir
+
+#define CVS_RENAME wnt_rename
+
+/* This is where old bits go to die under Windows NT. */
+#define DEVNULL "nul"
+
+/* Windows has no ELOOP value in errno.h */
+#define ELOOP EMLINK
+
+/* Windows has _snprintf function.
+ HAVE_DECL__SNPRINTF used in ../lib/vasnprintf.c */
+#define HAVE_DECL__SNPRINTF 1
+
+#define HAVE_WINSOCK_H
+
+/* This tells the client that it must use send()/recv() to talk to the
+ server if it is connected to the server via a socket; Win95 needs
+ it because _open_osfhandle doesn't work. */
+#define NO_SOCKET_TO_FD 1
+
+/* Is this true on NT? Seems like I remember reports that NT 3.51 has
+ problems with 200K writes (of course, the issue of large writes is
+ moot since the use of buffer.c ensures that writes will only be as big
+ as the buffers). */
+#define SEND_NEVER_PARTIAL 1
+
+/* Stop server macro */
+#define SHUTDOWN_SERVER wnt_shutdown_server
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not available through errno.
+ Instead, this macro should be used to obtain an error code. */
+#define SOCK_ERRNO (WSAGetLastError ())
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not known to strerror. Instead,
+ this macro should be used to convert the error codes to strings. */
+#define SOCK_STRERROR sock_strerror
+
+/* Start server macro */
+#define START_SERVER wnt_start_server
+
+/* The internal rsh client uses sockets not file descriptors. Note
+ that as the code stands now, it often takes values from a SOCKET and
+ puts them in an int. This is ugly but it seems like sizeof
+ (SOCKET) <= sizeof (int) on win32, even the 64-bit variants. */
+#define START_SERVER_RETURNS_SOCKET 1
+
+/* Macro name tells the story */
+#define SYSTEM_CLEANUP woe32_cleanup
+
+/* Macro name tells the story */
+#define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
+
+/*
+ * According to GNU conventions, we should avoid referencing any macro
+ * containing "WIN" as a reference to Microsoft Windows, as we would like to
+ * avoid any implication that we consider Microsoft Windows any sort of "win".
+ *
+ * FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
+ * defining a configure macro to define WOE32 appropriately. If they ever do
+ * write such a beast, we should use it, though in most cases it would be
+ * preferable to avoid referencing any OS or compiler anyhow, per Autoconf
+ * convention, and reference only tested features of the system.
+ *
+ * re FIXME: This definition would still be necessary since systems which run
+ * configure do not use this config.h and vice-versa.
+ */
+#define WOE32 1
+
+/* Define POSIX name to Microsoft name */
+#define dup _dup
+
+/* getpagesize is missing on Windows, 4096 does the right thing. */
+#define getpagesize() 4096
+
+/* Define to a substitute for the `lstat' function. */
+#define lstat stat
+
+/* Define POSIX name to Microsoft name */
+#define popen _popen
+
+/* Define POSIX name to Microsoft name */
+#define pclose _pclose
+
+/* Diff needs us to define this. I think it could always be
+ -1 for CVS, because we pass temporary files to diff, but
+ config.h seems like the easiest place to put this, so for
+ now we put it here. */
+#define same_file(s,t) (-1)
+
+/* Define to a substitute for the stat function. */
+#define stat wnt_stat
+
+/* ====================== Typedef Declarations Follow ===================== */
+
+/* ====================== Function Prototypes Follow ====================== */
+
+#include <woe32.h>
+
+/* #define SOCK_STRERROR sock_strerror */
+char *sock_strerror (int errnum);
+
+/* #define CVS_MKDIR wnt_mkdir */
+int wnt_mkdir (const char *PATH, int MODE);
+
+/* #define CVS_RENAME wnt_rename */
+int wnt_rename (const char *, const char *);
+
+/* #define SHUTDOWN_SERVER wnt_shutdown_server */
+void wnt_shutdown_server (int fd);
+
+/* #define START_SERVER wnt_start_server */
+void wnt_start_server (int *tofd, int *fromfd,
+ char *client_user,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot);
+
+/* #define stat wnt_stat and #define lstat wnt_stat */
+int wnt_stat (const char *file, struct wnt_stat *sb);
+
+/* =============== Special mkdir Prototype Handling Follows =============== */
+
+#include <direct.h>
+#define mkdir wnt_mkdir
+
+/* ===================== Special Function Definitions ===================== */
+
+/*
+ Microsoft defines "mbinit" in <wchar.h> for C++ code only.
+
+ Expect link errors for versions:
+
+ earlier than Visual C++ 5.0
+
+ later than Visual C++ .NET 2003
+
+ and Visual C++ .NET is just a guess which might be wrong.
+*/
+
+#if _MSC_VER >= 1100 && _MSC_VER <= 1200
+
+/* If within Visual C++ 5.0 to Visual C++ 6.0 */
+
+inline int mbsinit (const void * arg)
+ { return 1; }
+
+#elif _MSC_VER >= 1300 && _MSC_VER <= 1310
+
+/* If within Visual C++ .NET to Visual C++ .NET 2003 */
+
+inline int mbsinit (const int * arg)
+ { return arg == NULL || ! *arg; }
+
+#endif
+
+/* =========================== End Of This File =========================== */
diff --git a/windows-NT/config.h.in.footer b/windows-NT/config.h.in.footer
new file mode 100644
index 0000000..8c10d4d
--- /dev/null
+++ b/windows-NT/config.h.in.footer
@@ -0,0 +1,186 @@
+/*============================================================================*/
+/* config.h.in.footer: configuration file for Windows NT
+ Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
+
+/* This file lives in the windows-NT subdirectory, which is only included
+ in your header search path if you're working under Microsoft Visual C++,
+ and use ../cvsnt.mak for your project. Thus, this is the right place to
+ put configuration information for Windows NT. */
+
+/* This file is getting chaotic and will be organized as follows:
+
+ Macros appears first alphabetized in case sensitive order.
+ Typedefs appear next alphabetized in case sensitive order.
+ Function prototypes alphabetized in case sensitive order.
+
+ Reorgnized by Conrad T. Pino <Conrad@Pino.com> May 25, 2005 */
+
+/* just one time please */
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+/* ======================= Macro Definnitions Follow ====================== */
+
+/* Under Windows NT, mkdir only takes one argument. */
+#define CVS_MKDIR wnt_mkdir
+
+#define CVS_RENAME wnt_rename
+
+/* This is where old bits go to die under Windows NT. */
+#define DEVNULL "nul"
+
+/* Windows has no ELOOP value in errno.h */
+#define ELOOP EMLINK
+
+/* Windows has _snprintf function.
+ HAVE_DECL__SNPRINTF used in ../lib/vasnprintf.c */
+#define HAVE_DECL__SNPRINTF 1
+
+#define HAVE_WINSOCK_H
+
+/* This tells the client that it must use send()/recv() to talk to the
+ server if it is connected to the server via a socket; Win95 needs
+ it because _open_osfhandle doesn't work. */
+#define NO_SOCKET_TO_FD 1
+
+/* Is this true on NT? Seems like I remember reports that NT 3.51 has
+ problems with 200K writes (of course, the issue of large writes is
+ moot since the use of buffer.c ensures that writes will only be as big
+ as the buffers). */
+#define SEND_NEVER_PARTIAL 1
+
+/* Stop server macro */
+#define SHUTDOWN_SERVER wnt_shutdown_server
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not available through errno.
+ Instead, this macro should be used to obtain an error code. */
+#define SOCK_ERRNO (WSAGetLastError ())
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not known to strerror. Instead,
+ this macro should be used to convert the error codes to strings. */
+#define SOCK_STRERROR sock_strerror
+
+/* Start server macro */
+#define START_SERVER wnt_start_server
+
+/* The internal rsh client uses sockets not file descriptors. Note
+ that as the code stands now, it often takes values from a SOCKET and
+ puts them in an int. This is ugly but it seems like sizeof
+ (SOCKET) <= sizeof (int) on win32, even the 64-bit variants. */
+#define START_SERVER_RETURNS_SOCKET 1
+
+/* Macro name tells the story */
+#define SYSTEM_CLEANUP woe32_cleanup
+
+/* Macro name tells the story */
+#define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
+
+/*
+ * According to GNU conventions, we should avoid referencing any macro
+ * containing "WIN" as a reference to Microsoft Windows, as we would like to
+ * avoid any implication that we consider Microsoft Windows any sort of "win".
+ *
+ * FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
+ * defining a configure macro to define WOE32 appropriately. If they ever do
+ * write such a beast, we should use it, though in most cases it would be
+ * preferable to avoid referencing any OS or compiler anyhow, per Autoconf
+ * convention, and reference only tested features of the system.
+ *
+ * re FIXME: This definition would still be necessary since systems which run
+ * configure do not use this config.h and vice-versa.
+ */
+#define WOE32 1
+
+/* Define POSIX name to Microsoft name */
+#define dup _dup
+
+/* getpagesize is missing on Windows, 4096 does the right thing. */
+#define getpagesize() 4096
+
+/* Define to a substitute for the `lstat' function. */
+#define lstat stat
+
+/* Define POSIX name to Microsoft name */
+#define popen _popen
+
+/* Define POSIX name to Microsoft name */
+#define pclose _pclose
+
+/* Diff needs us to define this. I think it could always be
+ -1 for CVS, because we pass temporary files to diff, but
+ config.h seems like the easiest place to put this, so for
+ now we put it here. */
+#define same_file(s,t) (-1)
+
+/* Define to a substitute for the stat function. */
+#define stat wnt_stat
+
+/* ====================== Typedef Declarations Follow ===================== */
+
+/* ====================== Function Prototypes Follow ====================== */
+
+#include <woe32.h>
+
+/* #define SOCK_STRERROR sock_strerror */
+char *sock_strerror (int errnum);
+
+/* #define CVS_MKDIR wnt_mkdir */
+int wnt_mkdir (const char *PATH, int MODE);
+
+/* #define CVS_RENAME wnt_rename */
+int wnt_rename (const char *, const char *);
+
+/* #define SHUTDOWN_SERVER wnt_shutdown_server */
+void wnt_shutdown_server (int fd);
+
+/* #define START_SERVER wnt_start_server */
+void wnt_start_server (int *tofd, int *fromfd,
+ char *client_user,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot);
+
+/* #define stat wnt_stat and #define lstat wnt_stat */
+int wnt_stat (const char *file, struct wnt_stat *sb);
+
+/* =============== Special mkdir Prototype Handling Follows =============== */
+
+#include <direct.h>
+#define mkdir wnt_mkdir
+
+/* ===================== Special Function Definitions ===================== */
+
+/*
+ Microsoft defines "mbinit" in <wchar.h> for C++ code only.
+
+ Expect link errors for versions:
+
+ earlier than Visual C++ 5.0
+
+ later than Visual C++ .NET 2003
+
+ and Visual C++ .NET is just a guess which might be wrong.
+*/
+
+#if _MSC_VER >= 1100 && _MSC_VER <= 1200
+
+/* If within Visual C++ 5.0 to Visual C++ 6.0 */
+
+inline int mbsinit (const void * arg)
+ { return 1; }
+
+#elif _MSC_VER >= 1300 && _MSC_VER <= 1310
+
+/* If within Visual C++ .NET to Visual C++ .NET 2003 */
+
+inline int mbsinit (const int * arg)
+ { return arg == NULL || ! *arg; }
+
+#endif
+
+/* =========================== End Of This File =========================== */
diff --git a/windows-NT/config.h.in.in b/windows-NT/config.h.in.in
new file mode 100644
index 0000000..08bae9b
--- /dev/null
+++ b/windows-NT/config.h.in.in
@@ -0,0 +1,1240 @@
+/* config.h.in.in: configuration file for Windows NT
+ Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
+
+/* This file lives in the windows-NT subdirectory, which is only included
+ in your header search path if you're working under Microsoft Visual C++,
+ and use ../cvsnt.mak for your project. Thus, this is the right place to
+ put configuration information for Windows NT. */
+
+/* Define this to a NULL terminated list of allowed path prefixes (for
+ directories) and paths to files the CVS server will allow configuration to
+ be read from when specified from the command line. */
+#undef ALLOW_CONFIG_OVERRIDE
+
+/* Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access method in
+ the CVS client (default) */
+#define AUTH_CLIENT_SUPPORT 1
+
+/* Define if you want to use the password authenticated server. */
+#undef AUTH_SERVER_SUPPORT
+
+/* Define if you want CVS to be able to be a remote repository client. */
+#define CLIENT_SUPPORT
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* define if cross compiling */
+#undef CROSS_COMPILING
+
+/* The CVS admin command is restricted to the members of the group
+ CVS_ADMIN_GROUP. If this group does not exist, all users are allowed to run
+ CVS admin. To disable the CVS admin command for all users, create an empty
+ CVS_ADMIN_GROUP by running configure with the --with-cvs-admin-group=
+ option. To disable access control for CVS admin, run configure with the
+ --without-cvs-admin-group option in order to comment out the define below.
+ */
+#undef CVS_ADMIN_GROUP
+
+/* When committing a permanent change, CVS and RCS make a log entry of who
+ committed the change. If you are committing the change logged in as "root"
+ (not under "su" or other root-priv giving program), CVS/RCS cannot
+ determine who is actually making the change. As such, by default, CVS
+ prohibits changes committed by users logged in as "root". You can disable
+ checking by passing the "--enable-rootcommit" option to configure or by
+ commenting out the lines below. */
+#undef CVS_BADROOT
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#undef D_INO_IN_DIRENT
+
+/* The default editor to use, if one does not specify the "-e" option to cvs,
+ or does not have an EDITOR environment variable. If this is not set to an
+ absolute path to an executable, use the shell to find where the editor
+ actually is. This allows sites with /usr/bin/vi or /usr/ucb/vi to work
+ equally well (assuming that their PATH is reasonable). */
+#define EDITOR_DFLT "notepad"
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to enable encryption support. */
+#undef ENCRYPTION
+
+/* Define as good substitute value for EOVERFLOW. */
+#define EOVERFLOW EINVAL
+
+/* Define if this executable will be running on case insensitive file systems.
+ In the client case, this means that it will request that the server pretend
+ to be case insensitive if it isn't already. */
+#define FILENAMES_CASE_INSENSITIVE 1
+
+/* Define on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 1
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 1
+
+/* When committing or importing files, you must enter a log message. Normally,
+ you can do this either via the -m flag on the command line, the -F flag on
+ the command line, or an editor will be started for you. If you like to use
+ logging templates (the rcsinfo file within the $CVSROOT/CVSROOT directory),
+ you might want to force people to use the editor even if they specify a
+ message with -m or -F. Enabling FORCE_USE_EDITOR will cause the -m or -F
+ message to be appended to the temp file when the editor is started. */
+#undef FORCE_USE_EDITOR
+
+/* Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined
+ in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only
+ relevant when using GSSAPI. */
+#undef GSS_C_NT_HOSTBASED_SERVICE
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have `alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the `atexit' function. */
+#define HAVE_ATEXIT 1
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the `chsize' function. */
+#define HAVE_CHSIZE 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if you have the connect function. */
+#define HAVE_CONNECT
+
+/* Define if you have the crypt function. */
+#undef HAVE_CRYPT
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+ don't. */
+#define HAVE_DECL___FPENDING 0
+
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FERROR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FREAD_UNLOCKED
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FWRITE_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETCWD 1
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getlogin', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN
+
+/* Define to 1 if you have the declaration of `getlogin_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN_R
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+ don't. */
+#define HAVE_DECL_GETPASS 1
+
+/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
+ don't. */
+#undef HAVE_DECL_MEMRCHR
+
+/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you
+ don't. */
+#define HAVE_DECL_NANOSLEEP 1
+
+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+ */
+#define HAVE_DECL_STRDUP 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the <direct.h> header file. */
+/* Windows has <direct.h> but some functions aren't POSIX compliant */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define if you have the declaration of environ. */
+#define HAVE_ENVIRON_DECL 1
+
+/* Define if you have the declaration of errno. */
+#define HAVE_ERRNO_DECL 1
+
+/* Define to 1 if you have the `fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `geteuid' function. */
+#undef HAVE_GETEUID
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `getlogin_r' function. */
+#undef HAVE_GETLOGIN_R
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define if you have the getspnam function. */
+#undef HAVE_GETSPNAM
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define if you have GSSAPI with Kerberos version 5 available. */
+#undef HAVE_GSSAPI
+
+/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
+
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_H
+
+/* Define to 1 if you have the <gssapi.h> header file. */
+#undef HAVE_GSSAPI_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET. */
+#define HAVE_IPV4 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
+#undef HAVE_IPV6
+
+/* Define to 1 if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswprint' function. */
+#define HAVE_ISWPRINT 1
+
+/* Define if you have MIT Kerberos version 4 available. */
+#undef HAVE_KERBEROS
+
+/* Define to 1 if you have the <krb5.h> header file. */
+#undef HAVE_KRB5_H
+
+/* Define to 1 if you have the `krb_get_err_text' function. */
+#undef HAVE_KRB_GET_ERR_TEXT
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `krb' library (-lkrb). */
+#undef HAVE_LIBKRB
+
+/* Define to 1 if you have the `krb4' library (-lkrb4). */
+#undef HAVE_LIBKRB4
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `login' function. */
+#undef HAVE_LOGIN
+
+/* Define to 1 if you have the `logout' function. */
+#undef HAVE_LOGOUT
+
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mblen' function. */
+#define HAVE_MBLEN 1
+
+/* Define to 1 if you have the `mbrlen' function. */
+#define HAVE_MBRLEN 1
+
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+#define HAVE_MBRTOWC 1
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if you have the `mbsrtowcs' function. */
+#define HAVE_MBSRTOWCS 1
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#define HAVE_MBSTATE_T 1
+
+/* Define if you have memchr (always for CVS). */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
+#define HAVE_MINMAX_IN_LIMITS_H 1
+
+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_SYS_PARAM_H
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `nanotime' function. */
+#undef HAVE_NANOTIME
+
+/* Define to 1 if you have the <ndbm.h> header file. */
+#undef HAVE_NDBM_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#define HAVE_NDIR_H 1
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to enable system authentication with PAM instead of using the simple
+ getpwnam interface. This allows authentication (in theory) with any PAM
+ module, e.g. on systems with shadow passwords or via LDAP */
+#undef HAVE_PAM
+
+/* Define to 1 if pam/pam_appl.h is available */
+#undef HAVE_PAM_PAM_APPL_H
+
+/* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
+ defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
+ */
+#undef HAVE_PARTLY_WORKING_GETCWD
+
+/* Define to 1 if you have the `posix_memalign' function. */
+#undef HAVE_POSIX_MEMALIGN
+
+/* Define to 1 if the `printf' function supports the %p format for printing
+ pointers. */
+#define HAVE_PRINTF_PTR 1
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `regcomp' function. */
+#undef HAVE_REGCOMP
+
+/* Define to 1 if you have the `regerror' function. */
+#undef HAVE_REGERROR
+
+/* Define to 1 if you have the `regexec' function. */
+#undef HAVE_REGEXEC
+
+/* Define to 1 if you have the `regfree' function. */
+#undef HAVE_REGFREE
+
+/* Define to 1 if you have the `resolvepath' function. */
+#undef HAVE_RESOLVEPATH
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have run the test for working tzset. */
+#define HAVE_RUN_TZSET_TEST 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if security/pam_appl.h is available */
+#undef HAVE_SECURITY_PAM_APPL_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define if the diff library should use setmode for binary files. */
+#define HAVE_SETMODE 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigblock' function. */
+#undef HAVE_SIGBLOCK
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define to 1 if you have the `sigsetmask' function. */
+#undef HAVE_SIGSETMASK
+
+/* Define to 1 if you have the `sigvec' function. */
+#undef HAVE_SIGVEC
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have strchr (always for CVS). */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define if there is a member named d_type in the struct describing directory
+ headers. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_rdev' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define if struct timespec is declared in <time.h>. */
+#undef HAVE_STRUCT_TIMESPEC
+
+/* Define to 1 if `tm_zone' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/bsdtypes.h> header file. */
+#undef HAVE_SYS_BSDTYPES_H
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `timezone' function. */
+#undef HAVE_TIMEZONE
+
+/* Define to 1 if localtime_r, etc. have the type signatures that POSIX
+ requires. */
+#undef HAVE_TIME_R_POSIX
+
+/* Define if struct tm has the tm_gmtoff member. */
+#undef HAVE_TM_GMTOFF
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#define HAVE_TZNAME 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define if you have the 'unsigned long long' type. */
+#undef HAVE_UNSIGNED_LONG_LONG
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#define HAVE_UTIME_NULL 1
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#define HAVE_WCRTOMB 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define if you have the 'wint_t' type. */
+#define HAVE_WINT_T 1
+
+/* Define to 1 if you have the `wmemchr' function. */
+#define HAVE_WMEMCHR 1
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#define HAVE_WMEMCPY 1
+
+/* Define to 1 if you have the `wmempcpy' function. */
+#undef HAVE_WMEMPCPY
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#undef HAVE_ZLIB_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define to 1 if you have the `__secure_getenv' function. */
+#undef HAVE___SECURE_GETENV
+
+/* Define to include locking code which prevents versions of CVS earlier than
+ 1.12.4 directly accessing the same repositiory as this executable from
+ ignoring this executable's promotable read locks. If only CVS versions
+ 1.12.4 and later will be accessing your repository directly (as a server or
+ locally), you can safely disable this option in return for fewer disk
+ accesses and a small speed increase. Disabling this option when versions of
+ CVS earlier than 1,12,4 _will_ be accessing your repository, however, is
+ *VERY* *VERY* *VERY* dangerous and could result in data loss. As such, by
+ default, CVS is compiled with this code enabled. If you are sure you would
+ like this code disabled, you can disable it by passing the
+ "--disable-lock-compatibility" option to configure or by commenting out the
+ lines below. */
+#define LOCK_COMPATIBILITY
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* By default, CVS stores its modules and other such items in flat text files
+ (MY_NDBM enables this). Turning off MY_NDBM causes CVS to look for a
+ system-supplied ndbm database library and use it instead. That may speed
+ things up, but the default setting generally works fine too. */
+#define MY_NDBM
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "%PACKAGE_BUGREPORT%"
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "%PACKAGE_STRING%"
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to set a service name for PAM. This must be defined. Define to
+ `program_name', without the quotes, to use whatever name CVS was invoked
+ as. Otherwise, define to a double-quoted literal string, such as `"cvs"'.
+ */
+#undef PAM_SERVICE_NAME
+
+/* the number of pending output bytes on stream `fp' */
+#define PENDING_OUTPUT_N_BYTES ( fp ? fp->_ptr - fp->_base : 0 )
+
+/* Define if you want CVS to be able to serve as a transparent proxy for write
+ operations. Disabling this may produce a slight performance gain on some
+ systems, at the expense of write proxy support. */
+#undef PROXY_SUPPORT
+
+/* Path to the pr utility */
+#undef PR_PROGRAM
+
+/* Define to force lib/regex.c to use malloc instead of alloca. */
+#define REGEX_MALLOC 1
+
+/* Define if rename does not work for source paths with a trailing slash, like
+ the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The default remote shell to use, if one does not specify the CVS_RSH
+ environment variable. */
+#define RSH_DFLT "rsh"
+
+/* If you are working with a large remote repository and a 'cvs checkout' is
+ swamping your network and memory, define these to enable flow control. You
+ will end up with even less probability of a consistent checkout (see
+ Concurrency in cvs.texinfo), but CVS doesn't try to guarantee that anyway.
+ The master server process will monitor how far it is getting behind, if it
+ reaches the high water mark, it will signal the child process to stop
+ generating data when convenient (ie: no locks are held, currently at the
+ beginning of a new directory). Once the buffer has drained sufficiently to
+ reach the low water mark, it will be signalled to start again. */
+#undef SERVER_FLOWCONTROL
+
+/* The high water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_HI_WATER
+
+/* The low water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_LO_WATER
+
+/* Define if you want CVS to be able to serve repositories to remote clients.
+ */
+#undef SERVER_SUPPORT
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of a `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `intmax_t', as computed by sizeof. */
+#undef SIZEOF_INTMAX_T
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 8
+
+/* The size of a `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of a `ptrdiff_t', as computed by sizeof. */
+#define SIZEOF_PTRDIFF_T 4
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `wint_t', as computed by sizeof. */
+#define SIZEOF_WINT_T 2
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#define SIZE_MAX (~(size_t)0)
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#define STAT_MACROS_BROKEN 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Enable support for the pre 1.12.1 *info scripting hook format strings.
+ Disable this option for a smaller executable once your scripting hooks have
+ been updated to use the new *info format strings by passing
+ "--disable-old-info-format-support" option to configure or by commenting
+ out the line below. */
+#undef SUPPORT_OLD_INFO_FMT_STRINGS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Directory used for storing temporary files, if not overridden by
+ environment variables or the -T global option. There should be little need
+ to change this (-T is a better mechanism if you need to use a different
+ directory for temporary files). */
+#define TMPDIR_DFLT "c:\\temp"
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if tzset clobbers localtime's static buffer. */
+#undef TZSET_CLOBBERS_LOCALTIME_BUFFER
+
+/* Define to its maximum value if an unsigned integer type of width exactly 32
+ bits exists and the standard includes do not define UINT32_MAX. */
+#undef UINT32_MAX
+
+/* The default umask to use when creating or otherwise setting file or
+ directory permissions in the repository. Must be a value in the range of 0
+ through 0777. For example, a value of 002 allows group rwx access and world
+ rx access; a value of 007 allows group rwx access but no world access. This
+ value is overridden by the value of the CVSUMASK environment variable,
+ which is interpreted as an octal number. */
+#define UMASK_DFLT 002
+
+/* Define if double is the first floating point type detected with its size.
+ */
+#undef UNIQUE_FLOAT_TYPE_DOUBLE
+
+/* Define if float is the first floating point type detected with its size. */
+#undef UNIQUE_FLOAT_TYPE_FLOAT
+
+/* Define if long double is the first floating point type detected with its
+ size. */
+#undef UNIQUE_FLOAT_TYPE_LONG_DOUBLE
+
+/* Define if char is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_CHAR
+
+/* Define if int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INT
+
+/* Define if intmax_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INTMAX_T
+
+/* Define if long int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG
+
+/* Define if long long is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG_LONG
+
+/* Define if ptrdiff_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_PTRDIFF_T
+
+/* Define if short is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SHORT
+
+/* Define if size_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SIZE_T
+
+/* Define if wint_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_WINT_T
+
+/* Define if setmode is required when writing binary data to stdout. */
+#define USE_SETMODE_STDOUT 1
+
+/* Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps, but it is not
+ safe for multithreaded apps. */
+#undef USE_UNLOCKED_IO
+
+/* Define if utime requires write access to the file (true on Windows, but not
+ Unix). */
+#define UTIME_EXPECTS_WRITABLE
+
+/* Define if unsetenv() returns void, not int. */
+#undef VOID_UNSETENV
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Define to force lib/regex.c to define re_comp et al. */
+#define _REGEX_RE_COMP 1
+
+/* Define for Solaris 2.5.1 so uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+
+/* Define to rpl_ if the getcwd replacement function should be used. */
+#undef __GETCWD_PREFIX
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#define __GETOPT_PREFIX rpl_
+
+/* Define to rpl_ if the openat replacement function should be used. */
+#undef __OPENAT_PREFIX
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a replacement function name for fnmatch(). */
+#undef fnmatch
+
+/* Define to a replacement function name for getline(). */
+#undef getline
+
+/* We want to always use the GNULIB version of getpass which we have in lib,
+ so define getpass to something that won't conflict with any existing system
+ declarations. */
+#undef getpass
+
+/* Define to rpl_gettimeofday if the replacement function should be used. */
+#undef gettimeofday
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+#undef intmax_t
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_mkdir if the replacement function should be used. */
+#undef mkdir
+
+/* Define to rpl_mkstemp if the replacement function should be used. */
+#undef mkstemp
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#undef mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define mode_t int
+
+/* Define to the name of the strftime replacement function. */
+#define my_strftime nstrftime
+
+/* Define to rpl_nanosleep if the replacement function should be used. */
+#define nanosleep woe32_nanosleep
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#define realloc rpl_realloc
+
+/* Define to rpl_rename if the replacement function should be used. */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#define restrict
+
+/* Define to rpl_select if the replacement function should be used. */
+#undef select
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#define ssize_t int
+
+/* Define to rpl_strcasecmp always. */
+#define strcasecmp rpl_strcasecmp
+
+/* Define to rpl_tzset if the wrapper function should be used. */
+#undef tzset
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of a unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to unsigned long or unsigned long long if <stdint.h> and
+ <inttypes.h> don't define. */
+#undef uintmax_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff --git a/windows-NT/filesubr.c b/windows-NT/filesubr.c
new file mode 100644
index 0000000..55d57de
--- /dev/null
+++ b/windows-NT/filesubr.c
@@ -0,0 +1,1029 @@
+/* filesubr.c --- subroutines for dealing with files
+ Jim Blandy <jimb@cyclic.com>
+
+ This file is part of GNU CVS.
+
+ GNU CVS is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+/* These functions were moved out of subr.c because they need different
+ definitions under operating systems (like, say, Windows NT) with different
+ file system semantics. */
+
+#include <assert.h>
+#include <io.h>
+#include <sys/socket.h> /* This does: #include <windows.h> */
+
+#include "cvs.h"
+#include "setenv.h"
+
+#include "JmgStat.h"
+
+#undef mkdir
+
+static int deep_remove_dir( const char *path );
+
+/* Copies "from" to "to". Note that the functionality here is similar
+ to the win32 function CopyFile, but (1) we copy LastAccessTime and
+ CopyFile doesn't, (2) we set file attributes to the default set by
+ the C library and CopyFile copies them. Neither #1 nor #2 was intentional
+ as far as I know, but changing them could be confusing, unless there
+ is some reason they should be changed (this would need more
+ investigation). */
+void
+copy_file (from, to)
+ const char *from;
+ const char *to;
+{
+ struct stat sb;
+ struct utimbuf t;
+ int fdin, fdout;
+
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> copy(%s,%s)\n",
+ (server_active) ? 'S' : ' ', from, to);
+#else
+ (void) fprintf (stderr, "-> copy(%s,%s)\n", from, to);
+#endif
+ if (noexec)
+ return;
+
+ if ((fdin = open (from, O_RDONLY | O_BINARY)) < 0)
+ error (1, errno, "cannot open %s for copying", from);
+ if (fstat (fdin, &sb) < 0)
+ error (1, errno, "cannot fstat %s", from);
+ if ((fdout = open (to, O_CREAT | O_TRUNC | O_RDWR | O_BINARY,
+ (int) sb.st_mode & 07777)) < 0)
+ error (1, errno, "cannot create %s for copying", to);
+ if (sb.st_size > 0)
+ {
+ char buf[BUFSIZ];
+ int n;
+
+ for (;;)
+ {
+ n = read (fdin, buf, sizeof(buf));
+ if (n == -1)
+ {
+#ifdef EINTR
+ if (errno == EINTR)
+ continue;
+#endif
+ error (1, errno, "cannot read file %s for copying", from);
+ }
+ else if (n == 0)
+ break;
+
+ if (write(fdout, buf, n) != n) {
+ error (1, errno, "cannot write file %s for copying", to);
+ }
+ }
+
+#ifdef HAVE_FSYNC
+ if (fsync (fdout))
+ error (1, errno, "cannot fsync file %s after copying", to);
+#endif
+ }
+
+ if (close (fdin) < 0)
+ error (0, errno, "cannot close %s", from);
+ if (close (fdout) < 0)
+ error (1, errno, "cannot close %s", to);
+
+ /* now, set the times for the copied file to match those of the original */
+ memset ((char *) &t, 0, sizeof (t));
+ t.actime = sb.st_atime;
+ t.modtime = sb.st_mtime;
+ (void) utime (to, &t);
+}
+
+
+static char *tmpdir_env;
+/*
+ * Return seperator (\) terminated path to system temporary directory.
+ */
+const char *
+get_system_temp_dir (void)
+{
+ if (! tmpdir_env)
+ {
+ DWORD dwBufferSize, dwReturn;
+
+ dwReturn = 0;
+ dwBufferSize = 64;
+ do {
+ if (dwReturn >= dwBufferSize)
+ {
+ dwBufferSize = dwReturn + 4;
+ }
+
+ tmpdir_env = xrealloc (tmpdir_env, dwBufferSize);
+ if (tmpdir_env)
+ {
+ dwReturn = GetTempPath (dwBufferSize, tmpdir_env);
+ if (dwReturn <= 0)
+ {
+ free (tmpdir_env);
+ tmpdir_env = NULL;
+ }
+ }
+ } while (tmpdir_env && dwReturn >= dwBufferSize);
+ }
+
+ return tmpdir_env;
+}
+
+
+void
+push_env_temp_dir (void)
+{
+ const char *tmpdir = get_cvs_tmp_dir ();
+
+ if (tmpdir_env && strcmp (tmpdir_env, tmpdir))
+ setenv ("TMP", tmpdir, 1);
+}
+
+
+/* FIXME-krp: these functions would benefit from caching the char * &
+ stat buf. */
+
+/*
+ * Returns non-zero if the argument file is a directory, or is a symbolic
+ * link which points to a directory.
+ */
+int
+isdir (file)
+ const char *file;
+{
+ struct stat sb;
+
+ if (stat (file, &sb) < 0)
+ return (0);
+ return (S_ISDIR (sb.st_mode));
+}
+
+/*
+ * Returns non-zero if the argument file is a symbolic link.
+ */
+int
+islink (file)
+ const char *file;
+{
+#ifdef S_ISLNK
+ struct stat sb;
+
+ if (lstat (file, &sb) < 0)
+ return (0);
+ return (S_ISLNK (sb.st_mode));
+#else
+ return (0);
+#endif
+}
+
+/*
+ * Returns non-zero if the argument file exists.
+ */
+int
+isfile (file)
+ const char *file;
+{
+ return isaccessible(file, F_OK);
+}
+
+/*
+ * Returns non-zero if the argument file is readable.
+ */
+int
+isreadable (file)
+ const char *file;
+{
+ return isaccessible(file, R_OK);
+}
+
+/*
+ * Returns non-zero if the argument file is writable.
+ */
+int
+iswritable (file)
+ const char *file;
+{
+ return isaccessible(file, W_OK);
+}
+
+/*
+ * Returns non-zero if the argument file is accessable according to
+ * mode. If compiled with SETXID_SUPPORT also works if cvs has setxid
+ * bits set.
+ */
+int
+isaccessible (file, mode)
+ const char *file;
+ const int mode;
+{
+#ifdef SETXID_SUPPORT
+ struct stat sb;
+ int umask = 0;
+ int gmask = 0;
+ int omask = 0;
+ int uid;
+
+ if (stat(file, &sb) == -1)
+ return 0;
+ if (mode == F_OK)
+ return 1;
+
+ uid = geteuid();
+ if (uid == 0) /* superuser */
+ {
+ if (mode & X_OK)
+ return sb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH);
+ else
+ return 1;
+ }
+
+ if (mode & R_OK)
+ {
+ umask |= S_IRUSR;
+ gmask |= S_IRGRP;
+ omask |= S_IROTH;
+ }
+ if (mode & W_OK)
+ {
+ umask |= S_IWUSR;
+ gmask |= S_IWGRP;
+ omask |= S_IWOTH;
+ }
+ if (mode & X_OK)
+ {
+ umask |= S_IXUSR;
+ gmask |= S_IXGRP;
+ omask |= S_IXOTH;
+ }
+
+ if (sb.st_uid == uid)
+ return (sb.st_mode & umask) == umask;
+ else if (sb.st_gid == getegid())
+ return (sb.st_mode & gmask) == gmask;
+ else
+ return (sb.st_mode & omask) == omask;
+#else
+ return access(file, mode) == 0;
+#endif
+}
+
+
+
+/*
+ * Make a directory and die if it fails
+ */
+void
+make_directory (name)
+ const char *name;
+{
+ struct stat sb;
+
+ if (stat (name, &sb) == 0 && (!S_ISDIR (sb.st_mode)))
+ error (0, 0, "%s already exists but is not a directory", name);
+ if (!noexec && mkdir (name) < 0)
+ error (1, errno, "cannot make directory %s", name);
+}
+
+/*
+ * Make a path to the argument directory, printing a message if something
+ * goes wrong.
+ */
+void
+make_directories (name)
+ const char *name;
+{
+ char *cp;
+
+ if (noexec)
+ return;
+
+ if (mkdir (name) == 0 || errno == EEXIST)
+ return;
+ if (errno != ENOENT)
+ {
+ error (0, errno, "cannot make path to %s", name);
+ return;
+ }
+ if ((cp = strrchr (name, '/')) == NULL)
+ return;
+ *cp = '\0';
+ make_directories (name);
+ *cp++ = '/';
+ if (*cp == '\0')
+ return;
+ (void) mkdir (name);
+}
+
+/* Create directory NAME if it does not already exist; fatal error for
+ other errors. Returns 0 if directory was created; 1 if it already
+ existed. */
+int
+mkdir_if_needed (name)
+ const char *name;
+{
+ if (mkdir (name) < 0)
+ {
+ if (errno != EEXIST
+#ifdef EACCESS
+ /* This was copied over from the OS/2 code; I would guess it
+ isn't needed here but that has not been verified. */
+ && errno != EACCESS
+#endif
+#ifdef EACCES
+ /* This is said to be needed by NT on Alpha or PowerPC
+ (not sure what version) --August, 1996. */
+ && errno != EACCES
+#endif
+ )
+ error (1, errno, "cannot make directory %s", name);
+ return 1;
+ }
+ return 0;
+}
+
+/*
+ * Change the mode of a file, either adding write permissions, or removing
+ * all write permissions. Adding write permissions honors the current umask
+ * setting.
+ */
+void
+xchmod (fname, writable)
+ const char *fname;
+ int writable;
+{
+ struct stat sb;
+ mode_t mode, oumask;
+
+ if (stat (fname, &sb) < 0)
+ {
+ if (!noexec)
+ error (0, errno, "cannot stat %s", fname);
+ return;
+ }
+ if (writable)
+ {
+ oumask = umask (0);
+ (void) umask (oumask);
+ mode = sb.st_mode | ~oumask & (((sb.st_mode & S_IRUSR) ? S_IWUSR : 0) |
+ ((sb.st_mode & S_IRGRP) ? S_IWGRP : 0) |
+ ((sb.st_mode & S_IROTH) ? S_IWOTH : 0));
+ }
+ else
+ {
+ mode = sb.st_mode & ~(S_IWRITE | S_IWGRP | S_IWOTH);
+ }
+
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> chmod(%s,%o)\n",
+ (server_active) ? 'S' : ' ', fname, mode);
+#else
+ (void) fprintf (stderr, "-> chmod(%s,%o)\n", fname, mode);
+#endif
+ if (noexec)
+ return;
+
+ if (chmod (fname, mode) < 0)
+ error (0, errno, "cannot change mode of file %s", fname);
+}
+
+
+/* Rename for NT which works for read only files. Apparently if we are
+ accessing FROM and TO via a Novell network, this is an issue. */
+int
+wnt_rename (from, to)
+ const char *from;
+ const char *to;
+{
+ int result, save_errno;
+ int readonly = !iswritable (from);
+
+ if (readonly)
+ {
+ if (chmod (from, S_IWRITE) < 0)
+ return -1;
+ }
+ result = rename (from, to);
+ save_errno = errno;
+ if (readonly)
+ {
+ if (result == 0)
+ {
+ if (chmod (to, S_IREAD) < 0)
+ return -1;
+ }
+ else
+ {
+ /* We have a choice of which error to report, if there is
+ one here too; report the one from rename (). */
+ chmod (from, S_IREAD);
+ }
+ errno = save_errno;
+ }
+ return result;
+}
+
+/*
+ * Rename a file and die if it fails
+ */
+void
+rename_file (from, to)
+ const char *from;
+ const char *to;
+{
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> rename(%s,%s)\n",
+ (server_active) ? 'S' : ' ', from, to);
+#else
+ (void) fprintf (stderr, "-> rename(%s,%s)\n", from, to);
+#endif
+ if (noexec)
+ return;
+
+ /* Win32 unlink is stupid --- it fails if the file is read-only */
+ chmod(to, S_IWRITE);
+ unlink(to);
+ if (CVS_RENAME (from, to) < 0)
+ error (1, errno, "cannot rename file %s to %s", from, to);
+}
+
+/*
+ * unlink a file, if possible.
+ */
+int
+unlink_file (f)
+ const char *f;
+{
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> unlink(%s)\n",
+ (server_active) ? 'S' : ' ', f);
+#else
+ (void) fprintf (stderr, "-> unlink(%s)\n", f);
+#endif
+ if (noexec)
+ return (0);
+
+ /* Win32 unlink is stupid - it fails if the file is read-only */
+ chmod (f, _S_IWRITE);
+ return (unlink (f));
+}
+
+/*
+ * Unlink a file or dir, if possible. If it is a directory do a deep
+ * removal of all of the files in the directory. Return -1 on error
+ * (in which case errno is set).
+ */
+int
+unlink_file_dir (f)
+ const char *f;
+{
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> unlink_file_dir(%s)\n",
+ (server_active) ? 'S' : ' ', f);
+#else
+ (void) fprintf (stderr, "-> unlink_file_dir(%s)\n", f);
+#endif
+ if (noexec)
+ return (0);
+
+ /* Win32 unlink is stupid - it fails if the file is read-only */
+ chmod (f, _S_IWRITE);
+ if (unlink (f) != 0)
+ {
+ /* Under Windows NT, unlink returns EACCES if the path
+ is a directory. Under Windows 95, it returns ENOENT.
+ Under Windows XP, it can return ENOTEMPTY. */
+ if (errno == EISDIR || errno == EACCES || errno == ENOENT
+ || errno == ENOTEMPTY)
+ return deep_remove_dir (f);
+ else
+ /* The file wasn't a directory and some other
+ * error occured
+ */
+ return -1;
+ }
+ /* We were able to remove the file from the disk */
+ return 0;
+}
+
+/* Remove a directory and everything it contains. Returns 0 for
+ * success, -1 for failure (in which case errno is set).
+ */
+
+static int
+deep_remove_dir (path)
+ const char *path;
+{
+ DIR *dirp;
+ struct dirent *dp;
+ char buf[PATH_MAX];
+
+ /* ENOTEMPTY for NT (obvious) but EACCES for Win95 (not obvious) */
+ if (rmdir (path) != 0)
+ {
+ if (errno == ENOTEMPTY || errno == EACCES)
+ {
+ if ((dirp = CVS_OPENDIR (path)) == NULL)
+ /* If unable to open the directory return
+ * an error
+ */
+ return -1;
+
+ while ((dp = CVS_READDIR (dirp)) != NULL)
+ {
+ if (strcmp (dp->d_name, ".") == 0 ||
+ strcmp (dp->d_name, "..") == 0)
+ continue;
+
+ sprintf (buf, "%s/%s", path, dp->d_name);
+
+ /* Win32 unlink is stupid - it fails if the file is read-only */
+ chmod (buf, _S_IWRITE);
+ if (unlink (buf) != 0 )
+ {
+ /* Under Windows NT, unlink returns EACCES if the path
+ * is a directory. Under Windows 95, it returns ENOENT.
+ * Under Windows XP, it can return ENOTEMPTY. It
+ * isn't really clear to me whether checking errno is
+ * better or worse than using _stat to check for a
+ * directory.
+ * We aren't really trying to prevent race conditions here
+ * (e.g. what if something changes between readdir and
+ * unlink?)
+ */
+ if (errno == EISDIR || errno == EACCES || errno == ENOENT
+ || errno == ENOTEMPTY)
+ {
+ if (deep_remove_dir (buf))
+ {
+ closedir (dirp);
+ return -1;
+ }
+ }
+ else
+ {
+ /* buf isn't a directory, or there are
+ * some sort of permision problems
+ */
+ CVS_CLOSEDIR (dirp);
+ return -1;
+ }
+ }
+ }
+ CVS_CLOSEDIR (dirp);
+ return rmdir (path);
+ }
+ else
+ return -1;
+ }
+ /* Was able to remove the directory return 0 */
+ return 0;
+}
+
+/* Read NCHARS bytes from descriptor FD into BUF.
+ Return the number of characters successfully read.
+ The number returned is always NCHARS unless end-of-file or error. */
+static size_t
+block_read (fd, buf, nchars)
+ int fd;
+ char *buf;
+ size_t nchars;
+{
+ char *bp = buf;
+ size_t nread;
+
+ do
+ {
+ nread = read (fd, bp, nchars);
+ if (nread == (size_t)-1)
+ {
+#ifdef EINTR
+ if (errno == EINTR)
+ continue;
+#endif
+ return (size_t)-1;
+ }
+
+ if (nread == 0)
+ break;
+
+ bp += nread;
+ nchars -= nread;
+ } while (nchars != 0);
+
+ return bp - buf;
+}
+
+
+/*
+ * Compare "file1" to "file2". Return non-zero if they don't compare exactly.
+ */
+int
+xcmp (file1, file2)
+ const char *file1;
+ const char *file2;
+{
+ char *buf1, *buf2;
+ struct stat sb1, sb2;
+ int fd1, fd2;
+ int ret;
+
+ if ((fd1 = open (file1, O_RDONLY | O_BINARY)) < 0)
+ error (1, errno, "cannot open file %s for comparing", file1);
+ if ((fd2 = open (file2, O_RDONLY | O_BINARY)) < 0)
+ error (1, errno, "cannot open file %s for comparing", file2);
+ if (fstat (fd1, &sb1) < 0)
+ error (1, errno, "cannot fstat %s", file1);
+ if (fstat (fd2, &sb2) < 0)
+ error (1, errno, "cannot fstat %s", file2);
+
+ /* A generic file compare routine might compare st_dev & st_ino here
+ to see if the two files being compared are actually the same file.
+ But that won't happen in CVS, so we won't bother. */
+
+ if (sb1.st_size != sb2.st_size)
+ ret = 1;
+ else if (sb1.st_size == 0)
+ ret = 0;
+ else
+ {
+ /* FIXME: compute the optimal buffer size by computing the least
+ common multiple of the files st_blocks field */
+ size_t buf_size = 8 * 1024;
+ size_t read1;
+ size_t read2;
+
+ buf1 = xmalloc (buf_size);
+ buf2 = xmalloc (buf_size);
+
+ do
+ {
+ read1 = block_read (fd1, buf1, buf_size);
+ if (read1 == (size_t)-1)
+ error (1, errno, "cannot read file %s for comparing", file1);
+
+ read2 = block_read (fd2, buf2, buf_size);
+ if (read2 == (size_t)-1)
+ error (1, errno, "cannot read file %s for comparing", file2);
+
+ /* assert (read1 == read2); */
+
+ ret = memcmp(buf1, buf2, read1);
+ } while (ret == 0 && read1 == buf_size);
+
+ free (buf1);
+ free (buf2);
+ }
+
+ (void) close (fd1);
+ (void) close (fd2);
+ return (ret);
+}
+
+/* Generate a unique temporary filename. Returns a pointer to a newly
+ * malloc'd string containing the name. Returns successfully or not at
+ * all.
+ *
+ * THIS FUNCTION IS DEPRECATED!!! USE cvs_temp_file INSTEAD!!!
+ *
+ * and yes, I know about the way the rcs commands use temp files. I think
+ * they should be converted too but I don't have time to look into it right
+ * now.
+ */
+char *
+cvs_temp_name ()
+{
+ char *fn;
+ FILE *fp;
+
+ fp = cvs_temp_file (&fn);
+ if (fp == NULL)
+ error (1, errno, "Failed to create temporary file");
+ if (fclose (fp) == EOF)
+ error (0, errno, "Failed to close temporary file %s", fn);
+ return fn;
+}
+
+/* Generate a unique temporary filename and return an open file stream
+ * to the truncated file by that name
+ *
+ * INPUTS
+ * filename where to place the pointer to the newly allocated file
+ * name string
+ *
+ * OUTPUTS
+ * filename dereferenced, will point to the newly allocated file
+ * name string. This value is undefined if the function
+ * returns an error.
+ *
+ * RETURNS
+ * An open file pointer to a read/write mode empty temporary file with the
+ * unique file name or NULL on failure.
+ *
+ * ERRORS
+ * on error, errno will be set to some value either by CVS_FOPEN or
+ * whatever system function is called to generate the temporary file name
+ */
+/* FIXME: This should use the mkstemp() function from the lib/mkstemp.c file
+ * from the GNULIB project.
+ */
+FILE *cvs_temp_file (char ** filename)
+{
+ char *fn;
+ FILE *fp;
+
+ /* FIXME - I'd like to be returning NULL here in noexec mode, but I think
+ * some of the rcs & diff functions which rely on a temp file run in
+ * noexec mode too.
+ */
+
+ /* assert (filename != NULL); */
+
+ fn = _tempnam (getenv("TEMP"), "cvs");
+ if (fn == NULL) fp = NULL;
+ else
+ if ((fp = CVS_FOPEN (fn, "w+")) == NULL)
+ {
+ free (fn);
+ fn = NULL;
+ }
+
+ /* tempnam returns a pointer to a newly malloc'd string, so there's
+ * no need for a xstrdup
+ */
+
+ *filename = fn;
+ return fp;
+}
+
+
+
+/* Return a pointer into PATH's last component. */
+const char *
+last_component (const char *path)
+{
+ const char *scan;
+ const char *last = 0;
+
+ for (scan = path; *scan; scan++)
+ if (ISSLASH (*scan))
+ last = scan;
+
+ if (last && (last != path))
+ return last + 1;
+ else
+ return path;
+}
+
+
+/* NT has two evironment variables, HOMEPATH and HOMEDRIVE, which,
+ when combined as ${HOMEDRIVE}${HOMEPATH}, give the unix equivalent
+ of HOME. Some NT users are just too unixy, though, and set the
+ HOME variable themselves. Therefore, we check for HOME first, and
+ then try to combine the other two if that fails.
+
+ Looking for HOME strikes me as bogus, particularly if the only reason
+ is to cater to "unixy users". On the other hand, if the reasoning is
+ there should be a single variable, rather than requiring people to
+ set both HOMEDRIVE and HOMEPATH, then it starts to make a little more
+ sense.
+
+ Win95: The system doesn't set HOME, HOMEDRIVE, or HOMEPATH (at
+ least if you set it up as the "all users under one user ID" or
+ whatever the name of that option is). Based on thing overheard on
+ the net, it seems that users of the pserver client have gotten in
+ the habit of setting HOME (if you don't use pserver, you can
+ probably get away without having a reasonable return from
+ get_homedir. Of course you lose .cvsrc and .cvsignore, but many
+ users won't notice). So it would seem that we should be somewhat
+ careful if we try to change the current behavior.
+
+ NT 3.51 or NT 4.0: I haven't checked this myself, but I am told
+ that HOME gets set, but not to the user's home directory. It is
+ said to be set to c:\users\default by default. */
+
+char *
+get_homedir (void)
+{
+ char *homedir;
+
+ homedir = getenv ("HOME");
+
+ if (homedir == NULL)
+ homedir = woe32_home_dir ();
+
+ return homedir;
+}
+
+/* Compose a path to a file in the home directory. This is necessary because
+ * of different behavior on UNIX, Windows, and VMS. See more notes in
+ * vms/filesubr.c.
+ *
+ * A more clean solution would be something more along the lines of a
+ * "join a directory to a filename" kind of thing which was not specific to
+ * the homedir. This should aid portability between UNIX, Mac, Windows, VMS,
+ * and possibly others. This is already handled by Perl - it might be
+ * interesting to see how much of the code was written in C since Perl is under
+ * the GPL and the Artistic license - we might be able to use it.
+ */
+char *
+strcat_filename_onto_homedir (dir, file)
+ const char *dir;
+ const char *file;
+{
+ char *path = xmalloc (strlen (dir) + 1 + strlen(file) + 1);
+ sprintf (path, "%s\\%s", dir, file);
+ return path;
+}
+
+/* See cvs.h for description. */
+void
+expand_wild (argc, argv, pargc, pargv)
+ int argc;
+ char **argv;
+ int *pargc;
+ char ***pargv;
+{
+ int i;
+ int new_argc;
+ char **new_argv;
+ /* Allocated size of new_argv. We arrange it so there is always room for
+ one more element. */
+ int max_new_argc;
+
+ new_argc = 0;
+ /* Add one so this is never zero. */
+ max_new_argc = argc + 1;
+ new_argv = (char **) xmalloc (max_new_argc * sizeof (char *));
+ for (i = 0; i < argc; ++i)
+ {
+ HANDLE h;
+ WIN32_FIND_DATA fdata;
+
+ /* These variables help us extract the directory name from the
+ given pathname. */
+
+ char *last_forw_slash, *last_back_slash, *end_of_dirname;
+ int dirname_length = 0;
+
+ if ( strcmp( argv[i], "." ) == 0 )
+ {
+ new_argv[new_argc] = (char *) xmalloc ( 2 );
+ strcpy( new_argv[ new_argc++ ], "." );
+ continue;
+ }
+
+ /* FindFirstFile doesn't return pathnames, so we have to do
+ this ourselves. Luckily, it's no big deal, since globbing
+ characters under Win32s can only occur in the last segment
+ of the path. For example,
+ /a/path/q*.h valid
+ /w32/q*.dir/cant/do/this/q*.h invalid */
+
+ /* Win32 can handle both forward and backward slashes as
+ filenames -- check for both. */
+
+ last_forw_slash = strrchr (argv[i], '/');
+ last_back_slash = strrchr (argv[i], '\\');
+
+#define cvs_max(x,y) ((x >= y) ? (x) : (y))
+
+ /* FIXME: this comparing a NULL pointer to a non-NULL one is
+ extremely ugly, and I strongly suspect *NOT* sanctioned by
+ ANSI C. The code should just use last_component instead. */
+ end_of_dirname = cvs_max (last_forw_slash, last_back_slash);
+
+ if (end_of_dirname == NULL)
+ dirname_length = 0; /* no directory name */
+ else
+ dirname_length = end_of_dirname - argv[i] + 1; /* include slash */
+
+ h = FindFirstFile (argv[i], &fdata);
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ if (GetLastError () == ENOENT)
+ {
+ /* No match. The file specified didn't contain a wildcard (in which case
+ we clearly should return it unchanged), or it contained a wildcard which
+ didn't match (in which case it might be better for it to be an error,
+ but we don't try to do that). */
+ new_argv [new_argc++] = xstrdup (argv[i]);
+ if (new_argc == max_new_argc)
+ {
+ max_new_argc *= 2;
+ new_argv = xrealloc (new_argv, max_new_argc * sizeof (char *));
+ }
+ }
+ else
+ {
+ error (1, errno, "cannot find %s", argv[i]);
+ }
+ }
+ else
+ {
+ while (1)
+ {
+ new_argv[new_argc] =
+ (char *) xmalloc (strlen (fdata.cFileName) + 1
+ + dirname_length);
+
+ /* Copy the directory name, if there is one. */
+
+ if (dirname_length)
+ {
+ strncpy (new_argv[new_argc], argv[i], dirname_length);
+ new_argv[new_argc][dirname_length] = '\0';
+ }
+ else
+ new_argv[new_argc][0] = '\0';
+
+ /* Copy the file name. */
+
+ if (fncmp (argv[i] + dirname_length, fdata.cFileName) == 0)
+ /* We didn't expand a wildcard; we just matched a filename.
+ Use the file name as specified rather than the filename
+ which exists in the directory (they may differ in case).
+ This is needed to make cvs add on a directory consistently
+ use the name specified on the command line, but it is
+ probably a good idea in other contexts too. */
+ strcpy (new_argv[new_argc], argv[i]);
+ else
+ strcat (new_argv[new_argc], fdata.cFileName);
+
+ new_argc++;
+
+ if (new_argc == max_new_argc)
+ {
+ max_new_argc *= 2;
+ new_argv = xrealloc (new_argv, max_new_argc * sizeof (char *));
+ }
+ if (!FindNextFile (h, &fdata))
+ {
+ if (GetLastError () == ERROR_NO_MORE_FILES)
+ break;
+ else
+ error (1, errno, "cannot find %s", argv[i]);
+ }
+ }
+ if (!FindClose (h))
+ error (1, GetLastError (), "cannot close %s", argv[i]);
+ }
+ }
+ *pargc = new_argc;
+ *pargv = new_argv;
+}
+
+/* undo config.h stat macro */
+#undef stat
+extern int stat (const char *file, struct wnt_stat *sb);
+
+/* see config.h stat macro */
+int
+wnt_stat (const char *file, struct wnt_stat *sb)
+{
+ int retval;
+
+ retval = stat (file, sb);
+ if (retval < 0)
+ return retval;
+
+ /* 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);
+
+ if (!GetUTCFileModTime (file, &sb->st_mtime))
+ error (1, 0, "Failed to retrieve modification time for %s", file);
+
+ return retval;
+}
diff --git a/windows-NT/fix-msvc-mak.pl b/windows-NT/fix-msvc-mak.pl
new file mode 100644
index 0000000..28c0cf0
--- /dev/null
+++ b/windows-NT/fix-msvc-mak.pl
@@ -0,0 +1,99 @@
+#! perl -w
+
+use strict;
+
+
+
+sub save_edit {
+ my ($found, $file_name, $temp_name) = @_;
+
+ if ($found <= 0) {
+ unlink $temp_name;
+ print "no change: ", $file_name, "\n";
+ } else {
+ rename $temp_name, $file_name;
+ print "save edit: ", $file_name, "\n";
+ }
+}
+
+
+
+sub fix_basetsd_dep {
+ my ($file_name) = @_;
+ my $temp_name = $file_name . ".tmp";
+
+ open FINP, "< " . $file_name or die "open error: ", $file_name;
+ open FOUT, "> " . $temp_name or die "open error: ", $temp_name;
+
+ my $found = 0;
+ while (<FINP>) {
+ if (/basetsd\.h/) {
+ $found += 1;
+ } else {
+ print FOUT $_;
+ }
+ }
+
+ close FOUT;
+ close FINP;
+
+ save_edit $found, $file_name, $temp_name;
+}
+
+
+
+sub fix_cvsnt_mak {
+ my $file_name = "cvsnt.mak";
+ my $temp_name = $file_name . ".tmp";
+
+ open FINP, "< " . $file_name or die "open error: ", $file_name;
+ open FOUT, "> " . $temp_name or die "open error: ", $temp_name;
+
+ my $found = 0;
+ while (<FINP>) {
+ if ($. == 2 && !/RECURSE/) {
+ $found += 1;
+ print FOUT qq/!IF "\$(RECURSE)" == ""\n/;
+ print FOUT "RECURSE=1\n";
+ print FOUT "!ENDIF\n";
+ }
+ print FOUT $_;
+ }
+
+ close FOUT;
+ close FINP;
+
+ save_edit $found, $file_name, $temp_name;
+}
+
+
+
+sub fix_libdiff_mak {
+ my $file_name = "diff/libdiff.mak";
+ my $temp_name = $file_name . ".tmp";
+
+ open FINP, "< " . $file_name or die "open error: ", $file_name;
+ open FOUT, "> " . $temp_name or die "open error: ", $temp_name;
+
+ my $found = 0;
+ while (<FINP>) {
+ if (/^[ \t]+cd[ \t]+"\\.*\\[Ll][Ii][Bb]"$/) {
+ $found += 1;
+ s/cd[ \t]+.*/cd "..\\lib"/;
+ }
+ print FOUT $_;
+ }
+
+ close FOUT;
+ close FINP;
+
+ save_edit $found, $file_name, $temp_name;
+}
+
+
+
+
+fix_basetsd_dep "cvsnt.dep";
+fix_basetsd_dep "lib/libcvs.dep";
+fix_cvsnt_mak;
+fix_libdiff_mak;
diff --git a/windows-NT/mkconfig.pl b/windows-NT/mkconfig.pl
new file mode 100644
index 0000000..3a478e4
--- /dev/null
+++ b/windows-NT/mkconfig.pl
@@ -0,0 +1,314 @@
+#! perl -w
+
+use strict;
+
+# For the `mv' function which is smart enough to cross device boundries.
+use File::Copy qw{mv};
+# For the `basename' function.
+use File::Basename;
+
+
+
+###
+### FUNCTIONS
+###
+sub save_edit
+{
+ my ($same, $file_name, $temp_name) = @_;
+
+ if ($same)
+ {
+ unlink $temp_name
+ or warn "Failed to unlink ", $temp_name, ": $!";
+ print "no change: ", $file_name, "\n";
+ }
+ else
+ {
+ mv $temp_name, $file_name
+ or die "Failed to rename ", $temp_name, " to ", $file_name, ": $!";
+
+ print "save edit: ", $file_name, "\n";
+ }
+}
+
+sub get_default
+{
+ my ($value, $default) = @_;
+
+ if ($value eq "")
+ {
+ $value = $default;
+ }
+
+ return $value;
+}
+
+
+
+sub show_repeat
+{
+ my ($file, $new_no, $old_no, $line) = @_;
+
+ print $file, " line ", $new_no, " duplicates line ", $old_no, ": ", $line;
+}
+
+
+
+sub show_orphan
+{
+ my ($case, $that, $this, $this_key, %this_macros) = @_;
+ my $type = $this_macros{$this_key}[1];
+
+ if ($case eq 0)
+ {
+ # roots file has extra macro statement
+ # tell only of #undef
+ return if $type eq "d";
+ }
+ elsif ($case eq 1)
+ {
+ # build file has extra macro statement
+ # tell only of #define
+ return if $type eq "u";
+ }
+ else
+ {
+ die "Internal script error";
+ }
+
+ if ($type eq "d")
+ {
+ $type = "#define";
+ }
+ elsif ($type eq "u")
+ {
+ $type = "#undef";
+ }
+ else
+ {
+ die "Internal script error";
+ }
+
+ print $this, " line ", $this_macros{$this_key}[0], " has ", $type, " ",
+ $this_key, " not found in ", $that, "\n";
+}
+
+
+
+sub make_config_h
+{
+ my $quiet;
+ if ($_[0] eq "-q")
+ {
+ $quiet = 1;
+ shift;
+ }
+
+ my ($ph_name, $out_name, $inp_name, $end_name) = @_;
+
+ $ph_name = get_default $ph_name, "../config.h.in";
+ $out_name = get_default $out_name, "config.h.in";
+ $inp_name = get_default $inp_name, $out_name . ".in";
+ $end_name = get_default $end_name, $out_name . ".footer";
+
+ print STDERR "($inp_name + $ph_name) . $end_name --> $out_name\n"
+ if !$quiet;
+
+ #==========================================================================
+ # scan build level configuration to collect define/undef values
+ #==========================================================================
+
+ open FINP, "< $inp_name"
+ or die "error opening ", $inp_name, " for read: $!";
+ my %build_macros;
+ while (<FINP>)
+ {
+ if (/^#\s*define\s*(\w+)(\s+(.+))?$/)
+ {
+ if (exists $build_macros{$1})
+ {
+ show_repeat $inp_name, $., $build_macros{$1}[0], $_;
+ }
+ else
+ {
+ $build_macros{$1} = [$., "d", $3];
+ }
+ }
+ elsif (/^\s*#\s*undef\s+(\w+)/)
+ {
+ if (exists $build_macros{$1})
+ {
+ show_repeat $inp_name, $., $build_macros{$1}[0], $_;
+ }
+ else
+ {
+ $build_macros{$1} = [$., "u"];
+ }
+ }
+ }
+ close FINP;
+ #==========================================================================
+
+ #==========================================================================
+ # temporary output file
+ #==========================================================================
+ my $temp_name = basename($out_name) . ".tmp";
+
+ open FOUT, "> $temp_name"
+ or die "error opening ", $temp_name, " for write: $!";
+
+ #==========================================================================
+ # copy build level configuration append file to output file
+ #==========================================================================
+ my $base_out = basename $out_name;
+ my $base_prog = basename $0;
+ my $base_inp = basename $inp_name;
+ my $base_ph = basename $ph_name;
+ my $base_end = basename $end_name;
+
+ print FOUT <<EOF;
+/***
+ *** $base_out, generated by $base_prog:
+ ***
+ *** ($base_inp
+ *** + ../$base_ph)
+ *** . $base_end
+ *** --> $base_out
+ ***
+ *** ***** DO NOT ALTER THIS FILE!!! *****
+ ***
+ *** Changes to this file will be overwritten by automatic script runs.
+ *** Changes should be made to the $base_inp & $base_end
+ *** files instead.
+ ***/
+
+EOF
+
+ #==========================================================================
+ # copy root level configuration to output file
+ # while keeping track of conditional compile nesting level
+ #==========================================================================
+ open FINP, "< $ph_name"
+ or die "error opening ", $ph_name, " for read: $!";
+ my %ph_macros;
+ while (<FINP>)
+ {
+
+ my $out_line = $_;
+
+ if (/^\s*#\s*undef\s+(\w+)/)
+ {
+ if (exists $ph_macros{$1})
+ {
+ show_repeat $ph_name, $., $ph_macros{$1}[0], $_;
+ }
+ else
+ {
+ $ph_macros{$1} = [$., "u"];
+ }
+
+ if (exists $build_macros{$1}
+ and $build_macros{$1}[1] eq "d")
+ {
+ $out_line = "#define $1";
+
+ $out_line .= " " . $build_macros{$1}[2]
+ if defined $build_macros{$1}[2];
+
+ $out_line .= "\n";
+ }
+ }
+ print FOUT $out_line;
+ }
+ close FINP;
+ #==========================================================================
+
+ #==========================================================================
+ # copy build level configuration append file to output file
+ #==========================================================================
+ if (open FINP, "< $end_name")
+ {
+ while (<FINP>)
+ {
+ print FOUT $_;
+ }
+ close FINP;
+ }
+ #==========================================================================
+ close FOUT;
+ #==========================================================================
+
+ #==========================================================================
+ # determine whether output (if any) has changed from last run
+ #==========================================================================
+ my $same = 0;
+
+ if (open FINP, "< $out_name")
+ {
+ open FOUT, "< $temp_name"
+ or die "error opening ", $temp_name, " for read: $!";
+
+ $same = 1;
+ while ($same)
+ {
+ last if eof FINP and eof FOUT;
+ if (eof FINP or eof FOUT or <FINP> ne <FOUT>)
+ {
+ $same = 0;
+ last;
+ }
+ }
+ close FOUT;
+ close FINP;
+ }
+
+ #==========================================================================
+ # nag the guilty
+ #==========================================================================
+ my @keys_build = sort keys %build_macros;
+ my @keys_roots = sort keys %ph_macros;
+ my ($idx_build, $idx_roots) = (0, 0);
+ while ($idx_build < @keys_build or $idx_roots < @keys_roots) {
+ if ($idx_build >= @keys_build)
+ {
+ show_orphan 0, $inp_name, $ph_name, $keys_roots[$idx_roots],
+ %ph_macros;
+ $idx_roots++;
+ }
+ elsif ($idx_roots >= @keys_roots)
+ {
+ show_orphan 1, $ph_name, $inp_name, $keys_build[$idx_build],
+ %build_macros;
+ $idx_build++;
+ }
+ elsif ($keys_build[$idx_build] gt $keys_roots[$idx_roots])
+ {
+ show_orphan 0, $inp_name, $ph_name, $keys_roots[$idx_roots],
+ %ph_macros;
+ $idx_roots++;
+ }
+ elsif ($keys_roots[$idx_roots] gt $keys_build[$idx_build])
+ {
+ show_orphan 1, $ph_name, $inp_name, $keys_build[$idx_build],
+ %build_macros;
+ $idx_build++;
+ }
+ else
+ {
+ $idx_build++;
+ $idx_roots++;
+ }
+ }
+
+ #==========================================================================
+ # save output only if changed
+ #==========================================================================
+ save_edit $same, $out_name, $temp_name;
+}
+
+
+
+###
+### MAIN
+###
+make_config_h @ARGV;
diff --git a/windows-NT/mkdir.c b/windows-NT/mkdir.c
new file mode 100644
index 0000000..cd17f74
--- /dev/null
+++ b/windows-NT/mkdir.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 1995-2005 The Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/* mkdir.c --- mkdir for Windows NT
+ Jim Blandy <jimb@cyclic.com> --- July 1995 */
+
+#include <assert.h>
+
+#include "cvs.h"
+
+#undef mkdir
+
+int
+wnt_mkdir (const char *path, int mode)
+{
+ /* This is true for all extant calls to CVS_MKDIR. If
+ someone adds a call that uses something else later,
+ we should tweak this function to handle that. */
+ assert (mode == 0777);
+
+ return mkdir (path);
+}
diff --git a/windows-NT/ndir.c b/windows-NT/ndir.c
new file mode 100644
index 0000000..8b32e4f
--- /dev/null
+++ b/windows-NT/ndir.c
@@ -0,0 +1,214 @@
+/* msd_dir.c - portable directory routines
+ Copyright (C) 1990 by Thorsten Ohl, td12@ddagsi3.bitnet
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+/* Everything non trivial in this code is from: @(#)msd_dir.c 1.4
+ 87/11/06. A public domain implementation of BSD directory routines
+ for MS-DOS. Written by Michael Rendell ({uunet,utai}michael@garfield),
+ August 1897 */
+
+
+#include <io.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <dos.h>
+
+#include <ndir.h>
+#include "xalloc.h"
+
+static void free_dircontents (struct _dircontents *);
+
+/* find ALL files! */
+#define ATTRIBUTES (_A_RDONLY | _A_HIDDEN | _A_SYSTEM | _A_SUBDIR)
+
+
+
+DIR *
+opendir (const char *name)
+{
+ struct _finddata_t find_buf;
+ DIR *dirp;
+ struct _dircontents *dp;
+ char name_buf[_MAX_PATH + 1];
+ char *slash = "";
+ long hFile;
+
+ if (!name)
+ name = "";
+ else if (*name)
+ {
+ const char *s;
+ int l = strlen (name);
+
+ s = name + l - 1;
+ if ( !(l == 2 && *s == ':') && *s != '\\' && *s != '/')
+ slash = "/"; /* save to insert slash between path and "*.*" */
+ }
+
+ strcat (strcat (strcpy (name_buf, name), slash), "*.*");
+
+ dirp = xmalloc (sizeof (DIR));
+ if (!dirp) return NULL;
+
+ dirp->dd_loc = 0;
+ dirp->dd_contents = dirp->dd_cp = NULL;
+
+ if ((hFile = _findfirst (name_buf, &find_buf)) < 0)
+ {
+ free (dirp);
+ return NULL;
+ }
+
+ do
+ {
+ dp = xmalloc (sizeof (struct _dircontents));
+ if (!dp)
+ {
+ free_dircontents (dirp->dd_contents);
+ return NULL;
+ }
+
+ dp->_d_entry = xmalloc (strlen (find_buf.name) + 1);
+ if (!dp->_d_entry)
+ {
+ free (dp);
+ free_dircontents (dirp->dd_contents);
+ return NULL;
+ }
+
+ if (dirp->dd_contents)
+ dirp->dd_cp = dirp->dd_cp->_d_next = dp;
+ else
+ dirp->dd_contents = dirp->dd_cp = dp;
+
+ strcpy (dp->_d_entry, find_buf.name);
+
+ dp->_d_next = NULL;
+
+ } while (!_findnext (hFile, &find_buf));
+
+ dirp->dd_cp = dirp->dd_contents;
+
+ _findclose(hFile);
+
+ return dirp;
+}
+
+
+void
+closedir (DIR *dirp)
+{
+ free_dircontents (dirp->dd_contents);
+ free (dirp);
+}
+
+
+struct direct *
+readdir (DIR *dirp)
+{
+ static struct direct dp;
+
+ if (!dirp->dd_cp) return NULL;
+ dp.d_namlen = dp.d_reclen =
+ strlen (strcpy (dp.d_name, dirp->dd_cp->_d_entry));
+#if 0 /* JB */
+ strlwr (dp.d_name); /* JF */
+#endif
+ dp.d_ino = 0;
+ dirp->dd_cp = dirp->dd_cp->_d_next;
+ dirp->dd_loc++;
+
+ return &dp;
+}
+
+
+void
+seekdir (DIR *dirp, long off)
+{
+ long i = off;
+ struct _dircontents *dp;
+
+ if (off < 0)
+ return;
+ for (dp = dirp->dd_contents; --i >= 0 && dp; dp = dp->_d_next)
+ ;
+ dirp->dd_loc = off - (i + 1);
+ dirp->dd_cp = dp;
+}
+
+
+long
+telldir (DIR *dirp)
+{
+ return dirp->dd_loc;
+}
+
+
+/* Garbage collection */
+
+static void
+free_dircontents (struct _dircontents *dp)
+{
+ struct _dircontents *odp;
+
+ while (dp)
+ {
+ if (dp->_d_entry)
+ free (dp->_d_entry);
+ dp = (odp = dp)->_d_next;
+ free (odp);
+ }
+}
+
+
+#ifdef TEST
+
+void main (int argc, char *argv[]);
+
+void
+main (int argc, char *argv[])
+{
+ static DIR *directory;
+ struct direct *entry = NULL;
+
+ char *name = "";
+
+ if (argc > 1)
+ name = argv[1];
+
+ directory = opendir (name);
+
+ if (!directory)
+ {
+ fprintf (stderr, "can't open directory `%s'.\n", name);
+ exit (2);
+ }
+
+ while (entry = readdir (directory))
+ printf ("> %s\n", entry->d_name);
+
+ printf ("done.\n");
+}
+
+#endif /* TEST */
+
+/*
+ * Local Variables:
+ * mode:C
+ * ChangeLog:ChangeLog
+ * compile-command:make
+ * End:
+ */
diff --git a/windows-NT/ndir.h b/windows-NT/ndir.h
new file mode 100644
index 0000000..a498058
--- /dev/null
+++ b/windows-NT/ndir.h
@@ -0,0 +1,62 @@
+/* ndir.c - portable directory routines
+ Copyright (C) 1990 by Thorsten Ohl, td12@ddagsi3.bitnet
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+/* Everything non trivial in this code is taken from: @(#)msd_dir.c 1.4
+ 87/11/06. A public domain implementation of BSD directory routines
+ for MS-DOS. Written by Michael Rendell ({uunet,utai}michael@garfield),
+ August 1897 */
+
+#include <sys/types.h> /* ino_t definition */
+
+#define rewinddir(dirp) seekdir(dirp, 0L)
+
+/* 255 is said to be big enough for Windows NT. The more elegant
+ solution would be declaring d_name as one byte long and allocating
+ it to the actual size needed. */
+#define MAXNAMLEN 255
+
+struct direct
+{
+ ino_t d_ino; /* a bit of a farce */
+ int d_reclen; /* more farce */
+ int d_namlen; /* length of d_name */
+ char d_name[MAXNAMLEN + 1]; /* garentee null termination */
+};
+
+struct _dircontents
+{
+ char *_d_entry;
+ struct _dircontents *_d_next;
+};
+
+typedef struct _dirdesc
+{
+ int dd_id; /* uniquely identify each open directory */
+ long dd_loc; /* where we are in directory entry is this */
+ struct _dircontents *dd_contents; /* pointer to contents of dir */
+ struct _dircontents *dd_cp; /* pointer to current position */
+} DIR;
+
+void seekdir (DIR *, long);
+long telldir (DIR *);
+DIR *opendir (const char *);
+void closedir (DIR *);
+struct direct *readdir (DIR *);
+
+/*
+ * Local Variables:
+ * mode:C
+ * ChangeLog:ChangeLog
+ * compile-command:make
+ * End:
+ */
diff --git a/windows-NT/netdb.h b/windows-NT/netdb.h
new file mode 100644
index 0000000..fa882cb
--- /dev/null
+++ b/windows-NT/netdb.h
@@ -0,0 +1 @@
+/* empty file */
diff --git a/windows-NT/netinet/in.h b/windows-NT/netinet/in.h
new file mode 100644
index 0000000..fa882cb
--- /dev/null
+++ b/windows-NT/netinet/in.h
@@ -0,0 +1 @@
+/* empty file */
diff --git a/windows-NT/pwd.c b/windows-NT/pwd.c
new file mode 100644
index 0000000..36e6148
--- /dev/null
+++ b/windows-NT/pwd.c
@@ -0,0 +1,207 @@
+/* pwd.c - Try to approximate UN*X's getuser...() functions under MS-DOS.
+ Copyright (C) 1990 by Thorsten Ohl, td12@ddagsi3.bitnet
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+/* This 'implementation' is conjectured from the use of this functions in
+ the RCS and BASH distributions. Of course these functions don't do too
+ much useful things under MS-DOS, but using them avoids many "#ifdef
+ MSDOS" in ported UN*X code ... */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "config.h"
+#include "pwd.h"
+#include "xalloc.h"
+
+static char *lookup_env (char **);
+
+/* where people might scribble their name into the environment ... */
+
+static char *login_strings[] =
+{
+ "LOGIN", "USER", "MAILNAME", "USERNAME", NULL
+};
+
+static char *group_strings[] =
+{
+ "GROUP", NULL
+};
+
+
+static char *anonymous = "anonymous"; /* if all else fails ... */
+
+static char *login = NULL;/* cache the names here */
+static char *group = NULL;
+
+static struct passwd pw; /* should we return a malloc()'d structure */
+static struct group gr; /* instead of pointers to static structures? */
+
+/* implement limited uid behavior */
+#define my_fake_uid ((const uid_t) 4545)
+#define my_fake_gid my_fake_uid
+
+/* return something like a username in a (butchered!) passwd structure. */
+struct passwd *
+getpwuid (int uid)
+{
+ pw.pw_name = getlogin ();
+ pw.pw_dir = woe32_home_dir ();
+ pw.pw_shell = woe32_shell ();
+ pw.pw_uid = 0;
+
+ return &pw;
+}
+
+struct passwd *
+getpwnam (const char *name)
+{
+ return NULL;
+}
+
+/* return something like a groupname in a (butchered!) group structure. */
+struct group *
+getgrgid (int uid)
+{
+ gr.gr_name = getgr_name ();
+ gr.gr_gid = 0;
+
+ return &gr;
+}
+
+struct group *
+getgrnam (const char *name)
+{
+ return NULL;
+}
+
+/* return something like a username. */
+char *
+getlogin (void)
+{
+ /* This is how a windows user would override their login name. */
+ if (!login)
+ login = lookup_env (login_strings);
+
+ /* In the absence of user override, ask the operating system. */
+ if (!login)
+ login = woe32_getlogin ();
+
+ /* If all else fails, fall back on Old Faithful. */
+ if (!login)
+ login = anonymous;
+
+ return login;
+}
+
+/* return something like a group. */
+char *
+getgr_name (void)
+{
+ if (!group) /* have we been called before? */
+ group = lookup_env (group_strings);
+
+ if (!group) /* have we been successful? */
+ group = anonymous;
+
+ return group;
+}
+
+/* return something like a uid. */
+uid_t
+getuid (void)
+{
+ return my_fake_uid;
+}
+
+gid_t
+getgid (void)
+{
+ return my_fake_gid;
+}
+
+uid_t
+geteuid (void)
+{
+ return my_fake_uid;
+}
+
+gid_t
+getegid (void)
+{
+ return my_fake_gid;
+}
+
+struct passwd *
+getpwent (void)
+{
+ return NULL;
+}
+
+void
+setpwent (void)
+{
+}
+
+void
+endpwent (void)
+{
+}
+
+void
+endgrent (void)
+{
+}
+
+/* return groups. */
+int
+getgroups (int ngroups, gid_t *groups)
+{
+ if (ngroups > 0)
+ *groups = my_fake_gid;
+ return 1;
+}
+
+/* lookup environment. */
+static char *
+lookup_env (char *table[])
+{
+ char *ptr;
+ char *entry;
+ size_t len;
+
+ while (*table && !(ptr = getenv (*table++))) ; /* scan table */
+
+ if (!ptr) return NULL;
+
+ len = strcspn (ptr, " \n\t\n\r"); /* any WS? */
+ if (!(entry = xmalloc (len + 1)))
+ {
+ fprintf (stderr, "Out of memory.\nStop.");
+ exit (-1);
+ }
+
+ strncpy (entry, ptr, len);
+ entry[len] = '\0';
+
+ return entry;
+
+}
+
+/*
+ * Local Variables:
+ * mode:C
+ * ChangeLog:ChangeLog
+ * compile-command:make
+ * End:
+ */
diff --git a/windows-NT/pwd.h b/windows-NT/pwd.h
new file mode 100644
index 0000000..05abce6
--- /dev/null
+++ b/windows-NT/pwd.h
@@ -0,0 +1,67 @@
+/* pwd.h - Try to approximate UN*X's getuser...() functions under MS-DOS.
+ Copyright (C) 1990 by Thorsten Ohl, td12@ddagsi3.bitnet
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+/* This 'implementation' is conjectured from the use of this functions in
+ the RCS and BASH distributions. Of course these functions don't do too
+ much useful things under MS-DOS, but using them avoids many "#ifdef
+ MSDOS" in ported UN*X code ... */
+
+#include <sys/types.h>
+
+struct passwd
+{
+ /* ... */
+ /* missing stuff */
+ /* ... */
+ char *pw_name; /* login user id */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* login shell */
+ int pw_uid;
+};
+
+struct group
+{
+ /* ... */
+ /* missing stuff */
+ /* ... */
+ char *gr_name; /* login user id */
+ int gr_gid;
+};
+
+struct passwd *getpwuid (uid_t);
+struct passwd *getpwnam (const char *);
+struct group *getgrgid (gid_t);
+struct group *getgrnam (const char *);
+char *getlogin (void);
+char *getgr_name (void);
+uid_t getuid (void);
+gid_t getgid (void);
+uid_t geteuid (void);
+gid_t getegid (void);
+
+extern int *groups;
+extern int ngroups;
+int getgroups (int, gid_t *);
+
+struct passwd *getpwent (void);
+void setpwent (void);
+void endpwent (void);
+void endgrent (void);
+
+/*
+ * Local Variables:
+ * mode:C
+ * ChangeLog:ChangeLog
+ * compile-command:make
+ * End:
+ */
diff --git a/windows-NT/rcmd.c b/windows-NT/rcmd.c
new file mode 100644
index 0000000..33da637
--- /dev/null
+++ b/windows-NT/rcmd.c
@@ -0,0 +1,190 @@
+/* rcmd.c --- execute a command on a remote host from Windows NT
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ Jim Blandy <jimb@cyclic.com> --- August 1995 */
+
+#include "cvs.h"
+#include "rcmd.h"
+
+#include <io.h>
+#include <fcntl.h>
+#include <malloc.h>
+#include <errno.h>
+
+#include <sys/socket.h>
+
+#include <stdio.h>
+#include <assert.h>
+
+/* The rest of this file contains the rcmd() code, which is used
+ only by START_SERVER. The idea for a long-term direction is
+ that this code can be made portable (by using SOCK_ERRNO and
+ so on), and then moved to client.c or someplace it can be
+ shared with the VMS port and any other ports which may want it. */
+
+
+static int
+resolve_address (const char **ahost, struct sockaddr_in *sai)
+{
+ {
+ unsigned long addr = inet_addr (*ahost);
+
+ if (addr != (unsigned long) -1)
+ {
+ sai->sin_family = AF_INET;
+ sai->sin_addr.s_addr = addr;
+ return 0;
+ }
+ }
+
+ {
+ struct hostent *e = gethostbyname (*ahost);
+
+ if (e)
+ {
+ assert (e->h_addrtype == AF_INET);
+ assert (e->h_addr);
+ *ahost = e->h_name;
+ sai->sin_family = AF_INET;
+ memcpy (&sai->sin_addr, e->h_addr, sizeof (sai->sin_addr));
+ return 0;
+ }
+ }
+
+ error (1, 0, "no such host %s", *ahost);
+ /* Shut up gcc -Wall. */
+ return 1;
+}
+
+static SOCKET
+bind_and_connect (struct sockaddr_in *server_sai)
+{
+ SOCKET s;
+ struct sockaddr_in client_sai;
+ u_short client_port;
+
+ client_sai.sin_family = AF_INET;
+ client_sai.sin_addr.s_addr = htonl (INADDR_ANY);
+
+ for (client_port = IPPORT_RESERVED - 1;
+ client_port >= IPPORT_RESERVED/2;
+ client_port--)
+ {
+ int result, errcode;
+ client_sai.sin_port = htons (client_port);
+
+ if ((s = socket (PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
+ error (1, 0, "cannot create socket: %s",
+ SOCK_STRERROR (SOCK_ERRNO));
+
+ result = bind (s, (struct sockaddr *) &client_sai,
+ sizeof (client_sai));
+ errcode = SOCK_ERRNO;
+ if (result == SOCKET_ERROR)
+ {
+ closesocket (s);
+ if (errcode == WSAEADDRINUSE)
+ continue;
+ else
+ error (1, 0, "cannot bind to socket: %s",
+ SOCK_STRERROR (errcode));
+ }
+
+ result = connect (s, (struct sockaddr *) server_sai,
+ sizeof (*server_sai));
+ errcode = SOCK_ERRNO;
+ if (result == SOCKET_ERROR)
+ {
+ closesocket (s);
+ if (errcode == WSAEADDRINUSE)
+ continue;
+ else
+ error (1, 0, "cannot connect to socket: %s",
+ SOCK_STRERROR (errcode));
+ }
+
+ return s;
+ }
+
+ error (1, 0, "cannot find free port");
+ /* Shut up gcc -Wall. */
+ return s;
+}
+
+static int
+rcmd_authenticate (int fd, char *locuser, char *remuser, char *command)
+{
+ /* Send them a bunch of information, each terminated by '\0':
+ - secondary stream port number (we don't use this)
+ - username on local machine
+ - username on server machine
+ - command
+ Now, the Ultrix man page says you transmit the username on the
+ server first, but that doesn't seem to work. Transmitting the
+ client username first does. Go figure. The Linux man pages
+ get it right --- hee hee. */
+ if ((send (fd, "0\0", 2, 0) == SOCKET_ERROR)
+ || (send (fd, locuser, strlen (locuser) + 1, 0) == SOCKET_ERROR)
+ || (send (fd, remuser, strlen (remuser) + 1, 0) == SOCKET_ERROR)
+ || (send (fd, command, strlen (command) + 1, 0) == SOCKET_ERROR))
+ error (1, 0, "cannot send authentication info to rshd: %s",
+ SOCK_STRERROR (SOCK_ERRNO));
+
+ /* They sniff our butt, and send us a '\0' character if they
+ like us. */
+ {
+ char c;
+ if (recv (fd, &c, 1, 0) == SOCKET_ERROR)
+ {
+ error (1, 0, "cannot receive authentication info from rshd: %s",
+ SOCK_STRERROR (SOCK_ERRNO));
+ }
+ if (c != '\0')
+ {
+ /* All the junk with USER, LOGNAME, GetUserName, &c, is so
+ confusing that we better give some clue as to what sort
+ of user name we decided on. */
+ error (0, 0, "cannot log in as local user '%s', remote user '%s'",
+ locuser, remuser);
+ error (1, 0, "Permission denied by rshd");
+ }
+ }
+
+ return 0;
+}
+
+int
+rcmd (const char **ahost,
+ unsigned short inport,
+ char *locuser,
+ char *remuser,
+ char *cmd,
+ int *fd2p)
+{
+ struct sockaddr_in sai;
+ SOCKET s;
+
+ assert (fd2p == 0);
+
+ if (resolve_address (ahost, &sai) < 0)
+ error (1, 0, "internal error: resolve_address < 0");
+
+ sai.sin_port = htons (inport);
+
+ if ((s = bind_and_connect (&sai)) == INVALID_SOCKET)
+ error (1, 0, "internal error: bind_and_connect < 0");
+
+ if (rcmd_authenticate (s, locuser, remuser, cmd) < 0)
+ error (1, 0, "internal error: rcmd_authenticate < 0");
+
+ return s;
+}
diff --git a/windows-NT/rcmd.h b/windows-NT/rcmd.h
new file mode 100644
index 0000000..d2516a8
--- /dev/null
+++ b/windows-NT/rcmd.h
@@ -0,0 +1,30 @@
+/* rcmd.h --- interface to executing commands on remote hosts
+ Jim Blandy <jimb@cyclic.com> --- August 1995 */
+
+/* Run the command CMD on the host *AHOST, and return a file descriptor for
+ a bidirectional stream socket connected to the command's standard input
+ and output.
+
+ rcmd looks up *AHOST using gethostbyname, and sets *AHOST to the host's
+ canonical name. If *AHOST is not found, rcmd returns -1.
+
+ rcmd connects to the remote host at TCP port INPORT. This should
+ probably be the "shell" service, port 514.
+
+ LOCUSER is the name of the user on the local machine, and REMUSER is
+ the name of the user on the remote machine; the remote machine uses this,
+ along with the source address of the TCP connection, to authenticate
+ the connection.
+
+ CMD is the command to execute. The remote host will tokenize it any way
+ it damn well pleases. Welcome to Unix.
+
+ FD2P is a feature we don't support, but there's no point in making mindless
+ deviations from the interface. Callers should always pass this argument
+ as zero. */
+extern int rcmd (const char **AHOST,
+ unsigned short INPORT,
+ char *LOCUSER,
+ char *REMUSER,
+ char *CMD,
+ int *fd2p);
diff --git a/windows-NT/run.c b/windows-NT/run.c
new file mode 100644
index 0000000..404ef1c
--- /dev/null
+++ b/windows-NT/run.c
@@ -0,0 +1,721 @@
+/* run.c --- routines for executing subprocesses under Windows NT.
+
+ This file is part of GNU CVS.
+
+ GNU CVS is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+#include "cvs.h"
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdlib.h>
+#include <process.h>
+#include <errno.h>
+#include <io.h>
+#include <fcntl.h>
+
+
+
+/*
+ * To exec a program under CVS, first call run_setup() to setup any initial
+ * arguments. The options to run_setup are essentially like printf(). The
+ * arguments will be parsed into whitespace separated words and added to the
+ * global run_argv list.
+ *
+ * Then, optionally call run_arg() for each additional argument that you'd like
+ * to pass to the executed program.
+ *
+ * Finally, call run_exec() to execute the program with the specified arguments.
+ * The execvp() syscall will be used, so that the PATH is searched correctly.
+ * File redirections can be performed in the call to run_exec().
+ */
+static char **run_argv;
+static int run_argc;
+static size_t run_arg_allocated;
+
+
+
+void
+run_arg_free_p (int argc, char **argv)
+{
+ int i;
+ for (i = 0; i < argc; i++)
+ free (argv[i]);
+}
+
+
+
+/* VARARGS */
+void
+run_setup (const char *prog)
+{
+ char *cp;
+ int i;
+
+ char *run_prog;
+
+ /* clean out any malloc'ed values from run_argv */
+ for (i = 0; i < run_argc; i++)
+ {
+ if (run_argv[i])
+ {
+ free (run_argv[i]);
+ run_argv[i] = (char *) 0;
+ }
+ }
+ run_argc = 0;
+
+ run_prog = xstrdup (prog);
+
+ /* put each word into run_argv, allocating it as we go */
+ for (cp = strtok (run_prog, " \t"); cp; cp = strtok ((char *) NULL, " \t"))
+ run_add_arg (cp);
+
+ free (run_prog);
+}
+
+
+
+/* Return a malloc'd copy of s, with double quotes around it. */
+static char *
+quote (const char *s)
+{
+ size_t s_len = 0;
+ char *copy = NULL;
+ char *scan = (char *) s;
+
+ /* scan string for extra quotes ... */
+ while (*scan)
+ if ('"' == *scan++)
+ s_len += 2; /* one extra for the quote character */
+ else
+ s_len++;
+ /* allocate length + byte for ending zero + for double quotes around */
+ scan = copy = xmalloc(s_len + 3);
+ *scan++ = '"';
+ while (*s)
+ {
+ if ('"' == *s)
+ *scan++ = '\\';
+ *scan++ = *s++;
+ }
+ /* ending quote and closing zero */
+ *scan++ = '"';
+ *scan++ = '\0';
+ return copy;
+}
+
+
+
+void
+run_add_arg_p (int *iargc, size_t *iarg_allocated, char ***iargv,
+ const char *s)
+{
+ /* allocate more argv entries if we've run out */
+ if (*iargc >= *iarg_allocated)
+ {
+ *iarg_allocated += 50;
+ *iargv = xnrealloc (*iargv, *iarg_allocated, sizeof (char **));
+ }
+
+ if (s)
+ (*iargv)[(*iargc)++] = xstrdup (s);
+ else
+ (*iargv)[*iargc] = NULL; /* not post-incremented on purpose! */
+}
+
+
+
+void
+run_add_arg (const char *s)
+{
+ run_add_arg_p (&run_argc, &run_arg_allocated, &run_argv, s);
+}
+
+
+
+int
+run_exec (const char *stin, const char *stout, const char *sterr, int flags)
+{
+ int shin, shout, sherr;
+ int sain, saout, saerr; /* saved handles */
+ int mode_out, mode_err;
+ int status = -1;
+ int rerrno = 0;
+ int rval = -1;
+ void (*old_sigint) (int);
+
+ if (trace) /* if in trace mode */
+ {
+ (void) fprintf (stderr, "-> system(");
+ run_print (stderr);
+ (void) fprintf (stderr, ")\n");
+ }
+
+ /* Flush standard output and standard error, or otherwise we end
+ up with strange interleavings of stuff called from CYGWIN
+ vs. CMD. */
+
+ fflush (stderr);
+ fflush (stdout);
+
+ if (noexec && (flags & RUN_REALLY) == 0) /* if in noexec mode */
+ return (0);
+
+ /*
+ * start the engine and take off
+ */
+
+ /* make sure that we are null terminated, since we didn't calloc */
+ run_add_arg ((char *) 0);
+
+ /* setup default file descriptor numbers */
+ shin = 0;
+ shout = 1;
+ sherr = 2;
+
+ /* set the file modes for stdout and stderr */
+ mode_out = mode_err = O_WRONLY | O_CREAT;
+ mode_out |= ((flags & RUN_STDOUT_APPEND) ? O_APPEND : O_TRUNC);
+ mode_err |= ((flags & RUN_STDERR_APPEND) ? O_APPEND : O_TRUNC);
+
+ /* open the files as required, shXX are shadows of stdin... */
+ if (stin && (shin = open (stin, O_RDONLY)) == -1)
+ {
+ rerrno = errno;
+ error (0, errno, "cannot open %s for reading (prog %s)",
+ stin, run_argv[0]);
+ goto out0;
+ }
+ if (stout && (shout = open (stout, mode_out, 0666)) == -1)
+ {
+ rerrno = errno;
+ error (0, errno, "cannot open %s for writing (prog %s)",
+ stout, run_argv[0]);
+ goto out1;
+ }
+ if (sterr && (flags & RUN_COMBINED) == 0)
+ {
+ if ((sherr = open (sterr, mode_err, 0666)) == -1)
+ {
+ rerrno = errno;
+ error (0, errno, "cannot open %s for writing (prog %s)",
+ sterr, run_argv[0]);
+ goto out2;
+ }
+ }
+ /* now save the standard handles */
+ sain = saout = saerr = -1;
+ sain = dup( 0); /* dup stdin */
+ saout = dup( 1); /* dup stdout */
+ saerr = dup( 2); /* dup stderr */
+
+ /* the new handles will be dup'd to the standard handles
+ * for the spawn.
+ */
+
+ if (shin != 0)
+ {
+ (void) dup2 (shin, 0);
+ (void) close (shin);
+ }
+ if (shout != 1)
+ {
+ (void) dup2 (shout, 1);
+ (void) close (shout);
+ }
+ if (flags & RUN_COMBINED)
+ (void) dup2 (1, 2);
+ else if (sherr != 2)
+ {
+ (void) dup2 (sherr, 2);
+ (void) close (sherr);
+ }
+
+ /* Ignore signals while we're running this. */
+ old_sigint = signal (SIGINT, SIG_IGN);
+
+ /* dup'ing is done. try to run it now */
+ rval = spawnvp ( P_WAIT, run_argv[0], run_argv);
+
+ /* Restore signal handling. */
+ signal (SIGINT, old_sigint);
+
+ /* restore the original file handles */
+ if (sain != -1) {
+ (void) dup2( sain, 0); /* re-connect stdin */
+ (void) close( sain);
+ }
+ if (saout != -1) {
+ (void) dup2( saout, 1); /* re-connect stdout */
+ (void) close( saout);
+ }
+ if (saerr != -1) {
+ (void) dup2( saerr, 2); /* re-connect stderr */
+ (void) close( saerr);
+ }
+
+ /* Flush standard output and standard error, or otherwise we end
+ up with strange interleavings of stuff called from CYGWIN
+ vs. CMD. */
+
+ fflush (stderr);
+ fflush (stdout);
+
+ /* Recognize the return code for an interrupted subprocess. */
+ if (rval == CONTROL_C_EXIT)
+ return 2;
+ else
+ return rval; /* end, if all went coorect */
+
+ /* error cases */
+ /* cleanup the open file descriptors */
+ out2:
+ if (stout)
+ (void) close (shout);
+ out1:
+ if (stin)
+ (void) close (shin);
+
+ out0:
+ if (rerrno)
+ errno = rerrno;
+ return (status);
+}
+
+void
+run_print (FILE *fp)
+{
+ int i;
+
+ for (i = 0; i < run_argc; i++)
+ {
+ (void) fprintf (fp, "'%s'", run_argv[i]);
+ if (i != run_argc - 1)
+ (void) fprintf (fp, " ");
+ }
+}
+
+static char *
+requote (const char *cmd)
+{
+ char *requoted = xmalloc (strlen (cmd) + 1);
+ char *p = requoted;
+
+ strcpy (requoted, cmd);
+ while ((p = strchr (p, '\'')) != NULL)
+ {
+ *p++ = '"';
+ }
+
+ return requoted;
+}
+
+FILE *
+run_popen (const char *cmd, const char *mode)
+{
+ if (trace)
+#ifdef SERVER_SUPPORT
+ (void) fprintf (stderr, "%c-> run_popen(%s,%s)\n",
+ (server_active) ? 'S' : ' ', cmd, mode);
+#else
+ (void) fprintf (stderr, "-> run_popen(%s,%s)\n", cmd, mode);
+#endif
+ if (noexec)
+ return (NULL);
+
+ /* If the command string uses single quotes, turn them into
+ double quotes. */
+ {
+ char *requoted = requote (cmd);
+ /* Save and restore our file descriptors to work around
+ apparent bugs in _popen. We are perhaps better off using
+ the win32 functions instead of _popen. */
+ int old_stdin = dup (STDIN_FILENO);
+ int old_stdout = dup (STDOUT_FILENO);
+ int old_stderr = dup (STDERR_FILENO);
+
+ FILE *result = popen (requoted, mode);
+
+ dup2 (old_stdin, STDIN_FILENO);
+ dup2 (old_stdout, STDOUT_FILENO);
+ dup2 (old_stderr, STDERR_FILENO);
+ close (old_stdin);
+ close (old_stdout);
+ close (old_stderr);
+
+ free (requoted);
+ return result;
+ }
+}
+
+
+/* Running children with pipes connected to them. */
+
+/* It's kind of ridiculous the hoops we're jumping through to get
+ this working. _pipe and dup2 and _spawnmumble work just fine, except
+ that the child inherits a file descriptor for the writing end of the
+ pipe, and thus will never receive end-of-file on it. If you know of
+ a better way to implement the piped_child function, please let me know.
+
+ You can apparently specify _O_NOINHERIT when you open a file, but there's
+ apparently no fcntl function, so you can't change that bit on an existing
+ file descriptor. */
+
+/* Given a handle, make an inheritable duplicate of it, and close
+ the original. */
+static HANDLE
+inheritable (HANDLE in)
+{
+ HANDLE copy;
+ HANDLE self = GetCurrentProcess ();
+
+ if (! DuplicateHandle (self, in, self, &copy,
+ 0, 1 /* fInherit */,
+ DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
+ return INVALID_HANDLE_VALUE;
+
+ return copy;
+}
+
+
+/* Initialize the SECURITY_ATTRIBUTES structure *LPSA. Set its
+ bInheritHandle flag according to INHERIT. */
+static void
+init_sa (LPSECURITY_ATTRIBUTES lpsa, BOOL inherit)
+{
+ lpsa->nLength = sizeof(*lpsa);
+ lpsa->bInheritHandle = inherit;
+ lpsa->lpSecurityDescriptor = NULL;
+}
+
+
+enum inherit_pipe { inherit_reading, inherit_writing };
+
+/* Create a pipe. Set READWRITE[0] to its reading end, and
+ READWRITE[1] to its writing end. If END is inherit_reading,
+ make the only the handle for the pipe's reading end inheritable.
+ If END is inherit_writing, make only the handle for the pipe's
+ writing end inheritable. Return 0 if we succeed, -1 if we fail.
+
+ Why does inheritability matter? Consider the case of a
+ pipe carrying data from the parent process to the child
+ process. The child wants to read data from the parent until
+ it reaches the EOF. Now, the only way to send an EOF on a pipe
+ is to close all the handles to its writing end. Obviously, the
+ parent has a handle to the writing end when it creates the child.
+ If the child inherits this handle, then it will never close it
+ (the child has no idea it's inherited it), and will thus never
+ receive an EOF on the pipe because it's holding a handle
+ to it.
+
+ In Unix, the child process closes the pipe ends before it execs.
+ In Windows NT, you create the pipe with uninheritable handles, and then use
+ DuplicateHandle to make the appropriate ends inheritable. */
+
+static int
+my_pipe (HANDLE *readwrite, enum inherit_pipe end)
+{
+ HANDLE read, write;
+ SECURITY_ATTRIBUTES sa;
+
+ init_sa (&sa, 0);
+ if (! CreatePipe (&read, &write, &sa, 1 << 13))
+ {
+ errno = EMFILE;
+ return -1;
+ }
+ if (end == inherit_reading)
+ read = inheritable (read);
+ else
+ write = inheritable (write);
+
+ if (read == INVALID_HANDLE_VALUE
+ || write == INVALID_HANDLE_VALUE)
+ {
+ CloseHandle (read);
+ CloseHandle (write);
+ errno = EMFILE;
+ return -1;
+ }
+
+ readwrite[0] = read;
+ readwrite[1] = write;
+
+ return 0;
+}
+
+
+/* Initialize the STARTUPINFO structure *LPSI. */
+static void
+init_si (LPSTARTUPINFO lpsi)
+{
+ memset (lpsi, 0, sizeof (*lpsi));
+ lpsi->cb = sizeof(*lpsi);
+ lpsi->lpReserved = NULL;
+ lpsi->lpTitle = NULL;
+ lpsi->lpReserved2 = NULL;
+ lpsi->cbReserved2 = 0;
+ lpsi->lpDesktop = NULL;
+ lpsi->dwFlags = 0;
+}
+
+
+/* Create a child process running COMMAND with IN as its standard input,
+ and OUT as its standard output. Return a handle to the child, or
+ INVALID_HANDLE_VALUE. */
+static int
+start_child (char *command, HANDLE in, HANDLE out)
+{
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ BOOL status;
+
+ /* The STARTUPINFO structure can specify handles to pass to the
+ child as its standard input, output, and error. */
+ init_si (&si);
+ si.hStdInput = in;
+ si.hStdOutput = out;
+ si.hStdError = (HANDLE) _get_osfhandle (2);
+ si.dwFlags = STARTF_USESTDHANDLES;
+
+ status = CreateProcess ((LPCTSTR) NULL,
+ (LPTSTR) command,
+ (LPSECURITY_ATTRIBUTES) NULL, /* lpsaProcess */
+ (LPSECURITY_ATTRIBUTES) NULL, /* lpsaThread */
+ TRUE, /* fInheritHandles */
+ 0, /* fdwCreate */
+ (LPVOID) 0, /* lpvEnvironment */
+ (LPCTSTR) 0, /* lpszCurDir */
+ &si, /* lpsiStartInfo */
+ &pi); /* lppiProcInfo */
+
+ if (! status)
+ {
+ DWORD error_code = GetLastError ();
+ switch (error_code)
+ {
+ case ERROR_NOT_ENOUGH_MEMORY:
+ case ERROR_OUTOFMEMORY:
+ errno = ENOMEM; break;
+ case ERROR_BAD_EXE_FORMAT:
+ errno = ENOEXEC; break;
+ case ERROR_ACCESS_DENIED:
+ errno = EACCES; break;
+ case ERROR_NOT_READY:
+ case ERROR_FILE_NOT_FOUND:
+ case ERROR_PATH_NOT_FOUND:
+ default:
+ errno = ENOENT; break;
+ }
+ return (int) INVALID_HANDLE_VALUE;
+ }
+
+ /* The _spawn and _cwait functions in the C runtime library
+ seem to operate on raw NT handles, not PID's. Odd, but we'll
+ deal. */
+ return (int) pi.hProcess;
+}
+
+
+/* Given an array of arguments that one might pass to spawnv,
+ construct a command line that one might pass to CreateProcess.
+ Try to quote things appropriately. */
+static char *
+build_command (char *const *argv)
+{
+ int len;
+
+ /* Compute the total length the command will have. */
+ {
+ int i;
+
+ len = 0;
+ for (i = 0; argv[i]; i++)
+ {
+ char *p;
+
+ len += 2; /* for the double quotes */
+
+ for (p = argv[i]; *p; p++)
+ {
+ if (*p == '"')
+ len += 2;
+ else
+ len++;
+ }
+ len++; /* for the space or the '\0' */
+ }
+ }
+
+ {
+ /* The + 10 is in case len is 0. */
+ char *command = (char *) malloc (len + 10);
+ int i;
+ char *p;
+
+ if (! command)
+ {
+ errno = ENOMEM;
+ return command;
+ }
+
+ p = command;
+ *p = '\0';
+ /* copy each element of argv to command, putting each command
+ in double quotes, and backslashing any quotes that appear
+ within an argument. */
+ for (i = 0; argv[i]; i++)
+ {
+ char *a;
+ *p++ = '"';
+ for (a = argv[i]; *a; a++)
+ {
+ if (*a == '"')
+ *p++ = '\\', *p++ = '"';
+ else
+ *p++ = *a;
+ }
+ *p++ = '"';
+ *p++ = ' ';
+ }
+ if (p > command)
+ p[-1] = '\0';
+
+ return command;
+ }
+}
+
+
+/* Create an asynchronous child process executing ARGV,
+ with its standard input and output connected to the
+ parent with pipes. Set *TO to the file descriptor on
+ which one writes data for the child; set *FROM to
+ the file descriptor from which one reads data from the child.
+ Return the handle of the child process (this is what
+ _cwait and waitpid expect). */
+int
+piped_child (char *const *argv, int *to, int *from, bool fix_stderr)
+{
+ int child;
+ HANDLE pipein[2], pipeout[2];
+ char *command;
+
+ /* Turn argv into a form acceptable to CreateProcess. */
+ command = build_command (argv);
+ if (!command)
+ return -1;
+
+ /* Create pipes for communicating with child. Arrange for
+ the child not to inherit the ends it won't use. */
+ if (my_pipe (pipein, inherit_reading) == -1
+ || my_pipe (pipeout, inherit_writing) == -1)
+ return -1;
+
+ child = start_child (command, pipein[0], pipeout[1]);
+ free (command);
+ if (child == (int) INVALID_HANDLE_VALUE)
+ return -1;
+
+ /* Close the pipe ends the parent doesn't use. */
+ CloseHandle (pipein[0]);
+ CloseHandle (pipeout[1]);
+
+ /* Given the pipe handles, turn them into file descriptors for
+ use by the caller. */
+ if ((*to = _open_osfhandle ((long) pipein[1], _O_BINARY)) == -1
+ || (*from = _open_osfhandle ((long) pipeout[0], _O_BINARY)) == -1)
+ return -1;
+
+ return child;
+}
+
+/*
+ * dir = 0 : main proc writes to new proc, which writes to oldfd
+ * dir = 1 : main proc reads from new proc, which reads from oldfd
+ *
+ * Returns: a file descriptor. On failure (e.g., the exec fails),
+ * then filter_stream_through_program() complains and dies.
+ */
+
+int
+filter_stream_through_program (int oldfd, int dir, char **prog, pid_t *pidp)
+{
+ HANDLE pipe[2];
+ char *command;
+ int child;
+ HANDLE oldfd_handle;
+ HANDLE newfd_handle;
+ int newfd;
+
+ /* Get the OS handle associated with oldfd, to be passed to the child. */
+ if ((oldfd_handle = (HANDLE) _get_osfhandle (oldfd)) < 0)
+ error (1, errno, "cannot _get_osfhandle");
+
+ if (dir)
+ {
+ /* insert child before parent, pipe goes child->parent. */
+ if (my_pipe (pipe, inherit_writing) == -1)
+ error (1, errno, "cannot my_pipe");
+ if ((command = build_command (prog)) == NULL)
+ error (1, errno, "cannot build_command");
+ child = start_child (command, oldfd_handle, pipe[1]);
+ free (command);
+ if (child == (int) INVALID_HANDLE_VALUE)
+ error (1, errno, "cannot start_child");
+ close (oldfd);
+ CloseHandle (pipe[1]);
+ newfd_handle = pipe[0];
+ }
+ else
+ {
+ /* insert child after parent, pipe goes parent->child. */
+ if (my_pipe (pipe, inherit_reading) == -1)
+ error (1, errno, "cannot my_pipe");
+ if ((command = build_command (prog)) == NULL)
+ error (1, errno, "cannot build_command");
+ child = start_child (command, pipe[0], oldfd_handle);
+ free (command);
+ if (child == (int) INVALID_HANDLE_VALUE)
+ error (1, errno, "cannot start_child");
+ close (oldfd);
+ CloseHandle (pipe[0]);
+ newfd_handle = pipe[1];
+ }
+
+ if ((newfd = _open_osfhandle ((long) newfd_handle, _O_BINARY)) == -1)
+ error (1, errno, "cannot _open_osfhandle");
+
+ if (pidp)
+ *pidp = child;
+ return newfd;
+}
+
+
+
+int
+run_piped (int *tofdp, int *fromfdp)
+{
+ run_add_arg (NULL);
+ return piped_child (run_argv, tofdp, fromfdp, false);
+}
+
+
+
+/* Arrange for the file descriptor FD to not be inherited by child
+ processes. At the moment, CVS uses this function only on pipes
+ returned by piped_child, and our implementation of piped_child
+ takes care of setting the file handles' inheritability, so this
+ can be a no-op. */
+void
+close_on_exec (int fd)
+{
+}
diff --git a/windows-NT/sockerror.c b/windows-NT/sockerror.c
new file mode 100644
index 0000000..81f1959
--- /dev/null
+++ b/windows-NT/sockerror.c
@@ -0,0 +1,136 @@
+/* sockerror.c --- convert WinSock error number to string
+ Vince Del Vecchio <vdelvecc@spd.analog.com>
+
+ This file is part of GNU CVS.
+
+ GNU CVS is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+#include <stdio.h>
+#include <sys/socket.h>
+
+struct err_strs {
+ char **strs;
+ int first;
+ int last;
+};
+
+static char *errs1[] = {
+ /* EINTR */ "Interrupted system call"
+};
+
+static char *errs2[] = {
+ /* EBADF */ "Bad file descriptor"
+};
+
+static char *errs3[] = {
+ /* EACCES */ "Permission denied",
+ /* EFAULT */ "Bad address"
+};
+
+static char *errs4[] = {
+ /* EINVAL */ "Invalid argument"
+};
+
+static char *errs5[] = {
+ /* EMFILE */ "Too many open files",
+};
+
+static char *errs6[] = {
+ /* EWOULDBLOCK */ "Resource temporarily unavailable",
+ /* EINPROGRESS */ "Operation now in progress",
+ /* EALREADY */ "Operation already in progress",
+ /* ENOTSOCK */ "Socket operation on non-socket",
+ /* EDESTADDRREQ */ "Destination address required",
+ /* EMSGSIZE */ "Message too long",
+ /* EPROTOTYPE */ "Protocol wrong type for socket",
+ /* ENOPROTOOPT */ "Protocol not available",
+ /* EPROTONOSUPPORT */ "Protocol not supported",
+ /* ESOCKTNOSUPPORT */ "Socket type not supported",
+ /* EOPNOTSUPP */ "Operation not supported on socket",
+ /* EPFNOSUPPORT */ "Protocol family not supported",
+ /* EAFNOSUPPORT */ "Address family not supported by protocol",
+ /* EADDRINUSE */ "Address already in use",
+ /* EADDRNOTAVAIL */ "Can't assign requested address",
+ /* ENETDOWN */ "Network is down",
+ /* ENETUNREACH */ "Network is unreachable",
+ /* ENETRESET */ "Network connection dropped on reset",
+ /* ECONNABORTED */ "Software caused connection abort",
+ /* ECONNRESET */ "Connection reset by peer",
+ /* ENOBUFS */ "No buffer space available",
+ /* EISCONN */ "Socket is already connected",
+ /* ENOTCONN */ "Socket is not connected",
+ /* ESHUTDOWN */ "Can't send after socket shutdown",
+ /* ETOOMANYREFS */ "Too many references: can't splice",
+ /* ETIMEDOUT */ "Connection timed out",
+ /* ECONNREFUSED */ "Connection refused",
+ /* ELOOP */ "Too many levels of symbolic links",
+ /* ENAMETOOLONG */ "File name too long",
+ /* EHOSTDOWN */ "Host is down",
+ /* EHOSTUNREACH */ "No route to host",
+ /* ENOTEMPTY */ "Directory not empty",
+ /* EPROCLIM */ "Too many processes",
+ /* EUSERS */ "Too many users",
+ /* EDQUOT */ "Disc quota exceeded",
+ /* ESTALE */ "Stale NFS file handle",
+ /* EREMOTE */ "Object is remote"
+};
+
+static char *errs7[] = {
+ /* SYSNOTREADY */ "Network subsystem unavailable",
+ /* VERNOTSUPPORTED */ "Requested WinSock version not supported",
+ /* NOTINITIALISED */ "WinSock was not initialized"
+};
+
+#ifdef WSAEDISCON
+static char *errs8[] = {
+ /* EDISCON */ "Graceful shutdown in progress"
+};
+#endif
+
+static char *errs9[] = {
+ /* HOST_NOT_FOUND */ "Unknown host",
+ /* TRY_AGAIN */ "Host name lookup failure",
+ /* NO_RECOVERY */ "Unknown server error",
+ /* NO_DATA */ "No address associated with name",
+};
+
+/* Some of these errors are defined in the winsock.h header file I have,
+ but not in the Winsock 1.1 spec. I include them some of them anyway,
+ where it is not too hard to avoid referencing the symbolic constant. */
+
+static struct err_strs sock_errlist[] = {
+ { errs1, WSAEINTR, WSAEINTR },
+ { errs2, WSAEBADF, WSAEBADF },
+ { errs3, WSAEACCES, WSAEFAULT },
+ { errs4, WSAEINVAL, WSAEINVAL },
+ { errs5, WSAEMFILE, WSAEMFILE },
+ { errs6, WSAEWOULDBLOCK, WSAEHOSTUNREACH + 6 },
+ { errs7, WSASYSNOTREADY, WSANOTINITIALISED },
+#ifdef WSAEDISCON
+ { errs8, WSAEDISCON, WSAEDISCON },
+#endif
+ { errs9, WSAHOST_NOT_FOUND, WSANO_DATA }
+};
+
+char *
+sock_strerror (int errnum)
+{
+ static char buf[40];
+ int i;
+
+ for (i = 0; i < (sizeof sock_errlist / sizeof *sock_errlist); i++)
+ {
+ if (errnum >= sock_errlist[i].first && errnum <= sock_errlist[i].last)
+ return sock_errlist[i].strs[errnum - sock_errlist[i].first];
+ }
+ sprintf(buf, "Unknown socket error: %d", errnum);
+ return buf;
+}
diff --git a/windows-NT/stamp-chi b/windows-NT/stamp-chi
new file mode 100644
index 0000000..c5bc371
--- /dev/null
+++ b/windows-NT/stamp-chi
@@ -0,0 +1,1445 @@
+/***
+ *** config.h.in, generated by mkconfig.pl:
+ ***
+ *** (config.h.in.in
+ *** + ../config.h.in)
+ *** . config.h.in.footer
+ *** --> config.h.in
+ ***
+ *** ***** DO NOT ALTER THIS FILE!!! *****
+ ***
+ *** Changes to this file will be overwritten by automatic script runs.
+ *** Changes should be made to the config.h.in.in & config.h.in.footer
+ *** files instead.
+ ***/
+
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define this to a NULL terminated list of allowed path prefixes (for
+ directories) and paths to files the CVS server will allow configuration to
+ be read from when specified from the command line. */
+#undef ALLOW_CONFIG_OVERRIDE
+
+/* Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access method in
+ the CVS client (default) */
+#define AUTH_CLIENT_SUPPORT 1
+
+/* Define if you want to use the password authenticated server. */
+#undef AUTH_SERVER_SUPPORT
+
+/* Define if you want CVS to be able to be a remote repository client. */
+#define CLIENT_SUPPORT
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* define if cross compiling */
+#undef CROSS_COMPILING
+
+/* The CVS admin command is restricted to the members of the group
+ CVS_ADMIN_GROUP. If this group does not exist, all users are allowed to run
+ CVS admin. To disable the CVS admin command for all users, create an empty
+ CVS_ADMIN_GROUP by running configure with the --with-cvs-admin-group=
+ option. To disable access control for CVS admin, run configure with the
+ --without-cvs-admin-group option in order to comment out the define below.
+ */
+#undef CVS_ADMIN_GROUP
+
+/* When committing a permanent change, CVS and RCS make a log entry of who
+ committed the change. If you are committing the change logged in as "root"
+ (not under "su" or other root-priv giving program), CVS/RCS cannot
+ determine who is actually making the change. As such, by default, CVS
+ prohibits changes committed by users logged in as "root". You can disable
+ checking by passing the "--enable-rootcommit" option to configure or by
+ commenting out the lines below. */
+#undef CVS_BADROOT
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#undef D_INO_IN_DIRENT
+
+/* The default editor to use, if one does not specify the "-e" option to cvs,
+ or does not have an EDITOR environment variable. If this is not set to an
+ absolute path to an executable, use the shell to find where the editor
+ actually is. This allows sites with /usr/bin/vi or /usr/ucb/vi to work
+ equally well (assuming that their PATH is reasonable). */
+#define EDITOR_DFLT "notepad"
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to enable encryption support. */
+#undef ENCRYPTION
+
+/* Define as good substitute value for EOVERFLOW. */
+#define EOVERFLOW EINVAL
+
+/* Define if this executable will be running on case insensitive file systems.
+ In the client case, this means that it will request that the server pretend
+ to be case insensitive if it isn't already. */
+#define FILENAMES_CASE_INSENSITIVE 1
+
+/* Define on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 1
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 1
+
+#if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+ ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0)
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+#endif
+
+/* When committing or importing files, you must enter a log message. Normally,
+ you can do this either via the -m flag on the command line, the -F flag on
+ the command line, or an editor will be started for you. If you like to use
+ logging templates (the rcsinfo file within the $CVSROOT/CVSROOT directory),
+ you might want to force people to use the editor even if they specify a
+ message with -m or -F. Enabling FORCE_USE_EDITOR will cause the -m or -F
+ message to be appended to the temp file when the editor is started. */
+#undef FORCE_USE_EDITOR
+
+/* Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined
+ in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only
+ relevant when using GSSAPI. */
+#undef GSS_C_NT_HOSTBASED_SERVICE
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have `alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the `atexit' function. */
+#define HAVE_ATEXIT 1
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the `chsize' function. */
+#define HAVE_CHSIZE 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if you have the connect function. */
+#define HAVE_CONNECT
+
+/* Define if you have the crypt function. */
+#undef HAVE_CRYPT
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FERROR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FREAD_UNLOCKED
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FWRITE_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETCWD 1
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getlogin', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN
+
+/* Define to 1 if you have the declaration of `getlogin_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN_R
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+ don't. */
+#define HAVE_DECL_GETPASS 1
+
+/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
+ don't. */
+#undef HAVE_DECL_MEMRCHR
+
+/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you
+ don't. */
+#define HAVE_DECL_NANOSLEEP 1
+
+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+ */
+#define HAVE_DECL_STRDUP 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+ don't. */
+#define HAVE_DECL___FPENDING 0
+
+/* Define to 1 if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define if you have the declaration of environ. */
+#define HAVE_ENVIRON_DECL 1
+
+/* Define if you have the declaration of errno. */
+#define HAVE_ERRNO_DECL 1
+
+/* Define to 1 if you have the `fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `geteuid' function. */
+#undef HAVE_GETEUID
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `getlogin_r' function. */
+#undef HAVE_GETLOGIN_R
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define if you have the getspnam function. */
+#undef HAVE_GETSPNAM
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define if you have GSSAPI with Kerberos version 5 available. */
+#undef HAVE_GSSAPI
+
+/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
+
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_H
+
+/* Define to 1 if you have the <gssapi.h> header file. */
+#undef HAVE_GSSAPI_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET. */
+#define HAVE_IPV4 1
+
+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
+#undef HAVE_IPV6
+
+/* Define to 1 if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswprint' function. */
+#define HAVE_ISWPRINT 1
+
+/* Define if you have MIT Kerberos version 4 available. */
+#undef HAVE_KERBEROS
+
+/* Define to 1 if you have the <krb5.h> header file. */
+#undef HAVE_KRB5_H
+
+/* Define to 1 if you have the `krb_get_err_text' function. */
+#undef HAVE_KRB_GET_ERR_TEXT
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `krb' library (-lkrb). */
+#undef HAVE_LIBKRB
+
+/* Define to 1 if you have the `krb4' library (-lkrb4). */
+#undef HAVE_LIBKRB4
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `login' function. */
+#undef HAVE_LOGIN
+
+/* Define to 1 if you have the `logout' function. */
+#undef HAVE_LOGOUT
+
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mblen' function. */
+#define HAVE_MBLEN 1
+
+/* Define to 1 if you have the `mbrlen' function. */
+#define HAVE_MBRLEN 1
+
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+#define HAVE_MBRTOWC 1
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if you have the `mbsrtowcs' function. */
+#define HAVE_MBSRTOWCS 1
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#define HAVE_MBSTATE_T 1
+
+/* Define if you have memchr (always for CVS). */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
+#define HAVE_MINMAX_IN_LIMITS_H 1
+
+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_SYS_PARAM_H
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `nanotime' function. */
+#undef HAVE_NANOTIME
+
+/* Define to 1 if you have the <ndbm.h> header file. */
+#undef HAVE_NDBM_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#define HAVE_NDIR_H 1
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to enable system authentication with PAM instead of using the simple
+ getpwnam interface. This allows authentication (in theory) with any PAM
+ module, e.g. on systems with shadow passwords or via LDAP */
+#undef HAVE_PAM
+
+/* Define to 1 if pam/pam_appl.h is available */
+#undef HAVE_PAM_PAM_APPL_H
+
+/* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
+ defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
+ */
+#undef HAVE_PARTLY_WORKING_GETCWD
+
+/* Define to 1 if you have the `posix_memalign' function. */
+#undef HAVE_POSIX_MEMALIGN
+
+/* Define to 1 if the `printf' function supports the %p format for printing
+ pointers. */
+#define HAVE_PRINTF_PTR 1
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `regcomp' function. */
+#undef HAVE_REGCOMP
+
+/* Define to 1 if you have the `regerror' function. */
+#undef HAVE_REGERROR
+
+/* Define to 1 if you have the `regexec' function. */
+#undef HAVE_REGEXEC
+
+/* Define to 1 if you have the `regfree' function. */
+#undef HAVE_REGFREE
+
+/* Define to 1 if you have the `resolvepath' function. */
+#undef HAVE_RESOLVEPATH
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have run the test for working tzset. */
+#define HAVE_RUN_TZSET_TEST 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if security/pam_appl.h is available */
+#undef HAVE_SECURITY_PAM_APPL_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define if the diff library should use setmode for binary files. */
+#define HAVE_SETMODE 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigblock' function. */
+#undef HAVE_SIGBLOCK
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define to 1 if you have the `sigsetmask' function. */
+#undef HAVE_SIGSETMASK
+
+/* Define to 1 if you have the `sigvec' function. */
+#undef HAVE_SIGVEC
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have strchr (always for CVS). */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define if there is a member named d_type in the struct describing directory
+ headers. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_rdev' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define if struct timespec is declared in <time.h>. */
+#undef HAVE_STRUCT_TIMESPEC
+
+/* Define to 1 if `tm_zone' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/bsdtypes.h> header file. */
+#undef HAVE_SYS_BSDTYPES_H
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `timezone' function. */
+#undef HAVE_TIMEZONE
+
+/* Define to 1 if localtime_r, etc. have the type signatures that POSIX
+ requires. */
+#undef HAVE_TIME_R_POSIX
+
+/* Define if struct tm has the tm_gmtoff member. */
+#undef HAVE_TM_GMTOFF
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#define HAVE_TZNAME 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define if you have the 'unsigned long long' type. */
+#undef HAVE_UNSIGNED_LONG_LONG
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#define HAVE_UTIME_NULL 1
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#define HAVE_WCRTOMB 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define if you have the 'wint_t' type. */
+#define HAVE_WINT_T 1
+
+/* Define to 1 if you have the `wmemchr' function. */
+#define HAVE_WMEMCHR 1
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#define HAVE_WMEMCPY 1
+
+/* Define to 1 if you have the `wmempcpy' function. */
+#undef HAVE_WMEMPCPY
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#undef HAVE_ZLIB_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define to 1 if you have the `__secure_getenv' function. */
+#undef HAVE___SECURE_GETENV
+
+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+/* Define to include locking code which prevents versions of CVS earlier than
+ 1.12.4 directly accessing the same repositiory as this executable from
+ ignoring this executable's promotable read locks. If only CVS versions
+ 1.12.4 and later will be accessing your repository directly (as a server or
+ locally), you can safely disable this option in return for fewer disk
+ accesses and a small speed increase. Disabling this option when versions of
+ CVS earlier than 1,12,4 _will_ be accessing your repository, however, is
+ *VERY* *VERY* *VERY* dangerous and could result in data loss. As such, by
+ default, CVS is compiled with this code enabled. If you are sure you would
+ like this code disabled, you can disable it by passing the
+ "--disable-lock-compatibility" option to configure or by commenting out the
+ lines below. */
+#define LOCK_COMPATIBILITY
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* By default, CVS stores its modules and other such items in flat text files
+ (MY_NDBM enables this). Turning off MY_NDBM causes CVS to look for a
+ system-supplied ndbm database library and use it instead. That may speed
+ things up, but the default setting generally works fine too. */
+#define MY_NDBM
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "%PACKAGE_BUGREPORT%"
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "%PACKAGE_STRING%"
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to set a service name for PAM. This must be defined. Define to
+ `program_name', without the quotes, to use whatever name CVS was invoked
+ as. Otherwise, define to a double-quoted literal string, such as `"cvs"'.
+ */
+#undef PAM_SERVICE_NAME
+
+/* the number of pending output bytes on stream `fp' */
+#define PENDING_OUTPUT_N_BYTES ( fp ? fp->_ptr - fp->_base : 0 )
+
+/* Define if you want CVS to be able to serve as a transparent proxy for write
+ operations. Disabling this may produce a slight performance gain on some
+ systems, at the expense of write proxy support. */
+#undef PROXY_SUPPORT
+
+/* Path to the pr utility */
+#undef PR_PROGRAM
+
+/* Define to force lib/regex.c to use malloc instead of alloca. */
+#define REGEX_MALLOC 1
+
+/* Define if rename does not work for source file names with a trailing slash,
+ like the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The default remote shell to use, if one does not specify the CVS_RSH
+ environment variable. */
+#define RSH_DFLT "rsh"
+
+/* If you are working with a large remote repository and a 'cvs checkout' is
+ swamping your network and memory, define these to enable flow control. You
+ will end up with even less probability of a consistent checkout (see
+ Concurrency in cvs.texinfo), but CVS doesn't try to guarantee that anyway.
+ The master server process will monitor how far it is getting behind, if it
+ reaches the high water mark, it will signal the child process to stop
+ generating data when convenient (ie: no locks are held, currently at the
+ beginning of a new directory). Once the buffer has drained sufficiently to
+ reach the low water mark, it will be signalled to start again. */
+#undef SERVER_FLOWCONTROL
+
+/* The high water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_HI_WATER
+
+/* The low water mark in bytes for server flow control. Required if
+ SERVER_FLOWCONTROL is defined, and useless otherwise. */
+#undef SERVER_LO_WATER
+
+/* Define if you want CVS to be able to serve repositories to remote clients.
+ */
+#undef SERVER_SUPPORT
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of a `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `intmax_t', as computed by sizeof. */
+#undef SIZEOF_INTMAX_T
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 8
+
+/* The size of a `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of a `ptrdiff_t', as computed by sizeof. */
+#define SIZEOF_PTRDIFF_T 4
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `wint_t', as computed by sizeof. */
+#define SIZEOF_WINT_T 2
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#define SIZE_MAX (~(size_t)0)
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#define STAT_MACROS_BROKEN 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Enable support for the pre 1.12.1 *info scripting hook format strings.
+ Disable this option for a smaller executable once your scripting hooks have
+ been updated to use the new *info format strings by passing
+ "--disable-old-info-format-support" option to configure or by commenting
+ out the line below. */
+#undef SUPPORT_OLD_INFO_FMT_STRINGS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Directory used for storing temporary files, if not overridden by
+ environment variables or the -T global option. There should be little need
+ to change this (-T is a better mechanism if you need to use a different
+ directory for temporary files). */
+#define TMPDIR_DFLT "c:\\temp"
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if tzset clobbers localtime's static buffer. */
+#undef TZSET_CLOBBERS_LOCALTIME_BUFFER
+
+/* Define to its maximum value if an unsigned integer type of width exactly 32
+ bits exists and the standard includes do not define UINT32_MAX. */
+#undef UINT32_MAX
+
+/* The default umask to use when creating or otherwise setting file or
+ directory permissions in the repository. Must be a value in the range of 0
+ through 0777. For example, a value of 002 allows group rwx access and world
+ rx access; a value of 007 allows group rwx access but no world access. This
+ value is overridden by the value of the CVSUMASK environment variable,
+ which is interpreted as an octal number. */
+#define UMASK_DFLT 002
+
+/* Define if double is the first floating point type detected with its size.
+ */
+#undef UNIQUE_FLOAT_TYPE_DOUBLE
+
+/* Define if float is the first floating point type detected with its size. */
+#undef UNIQUE_FLOAT_TYPE_FLOAT
+
+/* Define if long double is the first floating point type detected with its
+ size. */
+#undef UNIQUE_FLOAT_TYPE_LONG_DOUBLE
+
+/* Define if char is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_CHAR
+
+/* Define if int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INT
+
+/* Define if intmax_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_INTMAX_T
+
+/* Define if long int is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG
+
+/* Define if long long is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_LONG_LONG
+
+/* Define if ptrdiff_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_PTRDIFF_T
+
+/* Define if short is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SHORT
+
+/* Define if size_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_SIZE_T
+
+/* Define if wint_t is the first integer type detected with its size. */
+#undef UNIQUE_INT_TYPE_WINT_T
+
+/* Define if setmode is required when writing binary data to stdout. */
+#define USE_SETMODE_STDOUT 1
+
+/* Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps, but it is not
+ safe for multithreaded apps. */
+#undef USE_UNLOCKED_IO
+
+/* Define if utime requires write access to the file (true on Windows, but not
+ Unix). */
+#define UTIME_EXPECTS_WRITABLE
+
+/* Define if unsetenv() returns void, not int. */
+#undef VOID_UNSETENV
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Define to force lib/regex.c to define re_comp et al. */
+#define _REGEX_RE_COMP 1
+
+/* Define for Solaris 2.5.1 so uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+
+/* Define to rpl_ if the getcwd replacement function should be used. */
+#undef __GETCWD_PREFIX
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#define __GETOPT_PREFIX rpl_
+
+/* Define to rpl_ if the openat replacement function should be used. */
+#undef __OPENAT_PREFIX
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a replacement function name for fnmatch(). */
+#undef fnmatch
+
+/* Define to a replacement function name for getline(). */
+#undef getline
+
+/* Define to a replacement function name for getpass(). */
+#undef getpass
+
+/* Define to rpl_gettimeofday if the replacement function should be used. */
+#undef gettimeofday
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+#undef intmax_t
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_mkdir if the replacement function should be used. */
+#undef mkdir
+
+/* Define to rpl_mkstemp if the replacement function should be used. */
+#undef mkstemp
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#undef mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define mode_t int
+
+/* Define to the name of the strftime replacement function. */
+#define my_strftime nstrftime
+
+/* Define to rpl_nanosleep if the replacement function should be used. */
+#define nanosleep woe32_nanosleep
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#define realloc rpl_realloc
+
+/* Define to rpl_rename if the replacement function should be used. */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#define restrict
+
+/* Define to rpl_select if the replacement function should be used. */
+#undef select
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#define ssize_t int
+
+/* Define to rpl_strcasecmp always. */
+#define strcasecmp rpl_strcasecmp
+
+/* Define to rpl_tzset if the wrapper function should be used. */
+#undef tzset
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of a unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to unsigned long or unsigned long long if <stdint.h> and
+ <inttypes.h> don't define. */
+#undef uintmax_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
+/*============================================================================*/
+/* config.h.in.footer: configuration file for Windows NT
+ Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
+
+/* This file lives in the windows-NT subdirectory, which is only included
+ in your header search path if you're working under Microsoft Visual C++,
+ and use ../cvsnt.mak for your project. Thus, this is the right place to
+ put configuration information for Windows NT. */
+
+/* This file is getting chaotic and will be organized as follows:
+
+ Macros appears first alphabetized in case sensitive order.
+ Typedefs appear next alphabetized in case sensitive order.
+ Function prototypes alphabetized in case sensitive order.
+
+ Reorgnized by Conrad T. Pino <Conrad@Pino.com> May 25, 2005 */
+
+/* just one time please */
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+/* ======================= Macro Definnitions Follow ====================== */
+
+/* Under Windows NT, mkdir only takes one argument. */
+#define CVS_MKDIR wnt_mkdir
+
+#define CVS_RENAME wnt_rename
+
+/* This is where old bits go to die under Windows NT. */
+#define DEVNULL "nul"
+
+/* Windows has no ELOOP value in errno.h */
+#define ELOOP EMLINK
+
+/* Windows has _snprintf function.
+ HAVE_DECL__SNPRINTF used in ../lib/vasnprintf.c */
+#define HAVE_DECL__SNPRINTF 1
+
+#define HAVE_WINSOCK_H
+
+/* This tells the client that it must use send()/recv() to talk to the
+ server if it is connected to the server via a socket; Win95 needs
+ it because _open_osfhandle doesn't work. */
+#define NO_SOCKET_TO_FD 1
+
+/* Is this true on NT? Seems like I remember reports that NT 3.51 has
+ problems with 200K writes (of course, the issue of large writes is
+ moot since the use of buffer.c ensures that writes will only be as big
+ as the buffers). */
+#define SEND_NEVER_PARTIAL 1
+
+/* Stop server macro */
+#define SHUTDOWN_SERVER wnt_shutdown_server
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not available through errno.
+ Instead, this macro should be used to obtain an error code. */
+#define SOCK_ERRNO (WSAGetLastError ())
+
+/* This tells the client that, in addition to needing to use
+ send()/recv() to do socket I/O, the error codes for send()/recv()
+ and other socket operations are not known to strerror. Instead,
+ this macro should be used to convert the error codes to strings. */
+#define SOCK_STRERROR sock_strerror
+
+/* Start server macro */
+#define START_SERVER wnt_start_server
+
+/* The internal rsh client uses sockets not file descriptors. Note
+ that as the code stands now, it often takes values from a SOCKET and
+ puts them in an int. This is ugly but it seems like sizeof
+ (SOCKET) <= sizeof (int) on win32, even the 64-bit variants. */
+#define START_SERVER_RETURNS_SOCKET 1
+
+/* Macro name tells the story */
+#define SYSTEM_CLEANUP woe32_cleanup
+
+/* Macro name tells the story */
+#define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
+
+/*
+ * According to GNU conventions, we should avoid referencing any macro
+ * containing "WIN" as a reference to Microsoft Windows, as we would like to
+ * avoid any implication that we consider Microsoft Windows any sort of "win".
+ *
+ * FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
+ * defining a configure macro to define WOE32 appropriately. If they ever do
+ * write such a beast, we should use it, though in most cases it would be
+ * preferable to avoid referencing any OS or compiler anyhow, per Autoconf
+ * convention, and reference only tested features of the system.
+ *
+ * re FIXME: This definition would still be necessary since systems which run
+ * configure do not use this config.h and vice-versa.
+ */
+#define WOE32 1
+
+/* Define POSIX name to Microsoft name */
+#define dup _dup
+
+/* getpagesize is missing on Windows, 4096 does the right thing. */
+#define getpagesize() 4096
+
+/* Define to a substitute for the `lstat' function. */
+#define lstat stat
+
+/* Define POSIX name to Microsoft name */
+#define popen _popen
+
+/* Define POSIX name to Microsoft name */
+#define pclose _pclose
+
+/* Diff needs us to define this. I think it could always be
+ -1 for CVS, because we pass temporary files to diff, but
+ config.h seems like the easiest place to put this, so for
+ now we put it here. */
+#define same_file(s,t) (-1)
+
+/* Define to a substitute for the stat function. */
+#define stat wnt_stat
+
+/* ====================== Typedef Declarations Follow ===================== */
+
+/* ====================== Function Prototypes Follow ====================== */
+
+#include <woe32.h>
+
+/* #define SOCK_STRERROR sock_strerror */
+char *sock_strerror (int errnum);
+
+/* #define CVS_MKDIR wnt_mkdir */
+int wnt_mkdir (const char *PATH, int MODE);
+
+/* #define CVS_RENAME wnt_rename */
+int wnt_rename (const char *, const char *);
+
+/* #define SHUTDOWN_SERVER wnt_shutdown_server */
+void wnt_shutdown_server (int fd);
+
+/* #define START_SERVER wnt_start_server */
+void wnt_start_server (int *tofd, int *fromfd,
+ char *client_user,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot);
+
+/* #define stat wnt_stat and #define lstat wnt_stat */
+int wnt_stat (const char *file, struct wnt_stat *sb);
+
+/* =============== Special mkdir Prototype Handling Follows =============== */
+
+#include <direct.h>
+#define mkdir wnt_mkdir
+
+/* ===================== Special Function Definitions ===================== */
+
+/*
+ Microsoft defines "mbinit" in <wchar.h> for C++ code only.
+
+ Expect link errors for versions:
+
+ earlier than Visual C++ 5.0
+
+ later than Visual C++ .NET 2003
+
+ and Visual C++ .NET is just a guess which might be wrong.
+*/
+
+#if _MSC_VER >= 1100 && _MSC_VER <= 1200
+
+/* If within Visual C++ 5.0 to Visual C++ 6.0 */
+
+inline int mbsinit (const void * arg)
+ { return 1; }
+
+#elif _MSC_VER >= 1300 && _MSC_VER <= 1310
+
+/* If within Visual C++ .NET to Visual C++ .NET 2003 */
+
+inline int mbsinit (const int * arg)
+ { return arg == NULL || ! *arg; }
+
+#endif
+
+/* =========================== End Of This File =========================== */
diff --git a/windows-NT/startserver.c b/windows-NT/startserver.c
new file mode 100644
index 0000000..82e1ab6
--- /dev/null
+++ b/windows-NT/startserver.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 1995-2005 The Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/* startserver.c --- open a connection to the CVS server under Windows NT
+ Jim Blandy <jimb@cyclic.com> --- August 1995 */
+
+#include "cvs.h"
+#include "rcmd.h"
+
+#include <stdlib.h>
+#include <sys/socket.h>
+#include <malloc.h>
+#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,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot)
+{
+ char *cvs_server;
+ char *command;
+ struct servent *sptr;
+ unsigned short port;
+ int read_fd;
+ char *portenv;
+
+ if (! (cvs_server = getenv ("CVS_SERVER")))
+ cvs_server = "cvs";
+ command = xmalloc (strlen (cvs_server)
+ + strlen (server_cvsroot)
+ + 50);
+ sprintf (command, "%s -d %s server", cvs_server, server_cvsroot);
+
+ portenv = getenv("CVS_RCMD_PORT");
+ if (portenv)
+ port = atoi(portenv);
+ else if ((sptr = getservbyname("shell", "tcp")) != NULL)
+ port = sptr->s_port;
+ else
+ port = IPPORT_CMDSERVER; /* shell/tcp */
+
+ read_fd = rcmd (&server_host,
+ port,
+ client_user,
+ (server_user ? server_user : client_user),
+ command,
+ 0);
+ if (read_fd < 0)
+ error (1, 0, "cannot start server via rcmd: %s",
+ SOCK_STRERROR (SOCK_ERRNO));
+
+ *tofd = read_fd;
+ *fromfd = read_fd;
+ free (command);
+
+ opened_a_socket = 1;
+}
+
+
+void
+wnt_shutdown_server (int fd)
+{
+ 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));
+ }
+ else
+ {
+ if (close (fd) < 0)
+ error (1, errno, "cannot close server connection");
+ }
+}
diff --git a/windows-NT/stdbool.h b/windows-NT/stdbool.h
new file mode 100644
index 0000000..6faee73
--- /dev/null
+++ b/windows-NT/stdbool.h
@@ -0,0 +1,100 @@
+/* This file is generated via a rule in Makefile.am from the
+ * ../lib/stdbool_.h.in file.
+ *
+ * *** DO NOT EDIT THIS FILE DIRECTLY ***
+ *
+ * Edit ../lib/stdbool_.h instead.
+ */
+/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#ifdef __BEOS__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But if we do
+ this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+#if !(defined __cplusplus || defined __BEOS__)
+# if !0
+# if defined __SUNPRO_C && (__SUNPRO_C < 0x550 || __STDC__ == 1)
+ /* Avoid stupid "warning: _Bool is a keyword in ISO C99". */
+# define _Bool signed char
+enum { false = 0, true = 1 };
+# else
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+#else
+typedef bool _Bool;
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives. */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _STDBOOL_H */
diff --git a/windows-NT/stdint.h b/windows-NT/stdint.h
new file mode 100644
index 0000000..051e9a2
--- /dev/null
+++ b/windows-NT/stdint.h
@@ -0,0 +1,290 @@
+/* This file is generated via a rule in Makefile.am from the
+ * ../lib/stdint_.h.in file.
+ *
+ * *** DO NOT EDIT THIS FILE DIRECTLY ***
+ *
+ * Edit ../lib/stdint_.h instead.
+ */
+/* Copyright (C) 2001-2002, 2004-2005 Free Software Foundation, Inc.
+ Written by Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _STDINT_H
+#define _STDINT_H
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/onlinepubs/007904975/basedefs/stdint.h.html>
+ */
+
+/* Get wchar_t, WCHAR_MIN, WCHAR_MAX. */
+#include <stddef.h>
+/* Get CHAR_BIT, LONG_MIN, LONG_MAX, ULONG_MAX. */
+#include <limits.h>
+
+/* Get those types that are already defined in other system include files. */
+#if defined(__FreeBSD__)
+# include <sys/inttypes.h>
+#endif
+#if defined(__sun) && HAVE_SYS_INTTYPES_H
+# include <sys/inttypes.h>
+ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.
+ But note that <sys/int_types.h> contains only the type definitions! */
+# define _STDINT_H_HAVE_SYSTEM_INTTYPES
+#endif
+#if (defined(__hpux) || defined(_AIX)) && HAVE_INTTYPES_H
+# include <inttypes.h>
+ /* HP-UX 10 <inttypes.h> has nearly everything, except UINT_LEAST8_MAX,
+ UINT_FAST8_MAX, PTRDIFF_MIN, PTRDIFF_MAX. */
+ /* AIX 4 <inttypes.h> has nearly everything, except INTPTR_MIN, INTPTR_MAX,
+ UINTPTR_MAX, PTRDIFF_MIN, PTRDIFF_MAX. */
+# define _STDINT_H_HAVE_SYSTEM_INTTYPES
+#endif
+#if !(defined(UNIX_CYGWIN32) && defined(__BIT_TYPES_DEFINED__))
+# define _STDINT_H_NEED_SIGNED_INT_TYPES
+#endif
+
+#if !defined(_STDINT_H_HAVE_SYSTEM_INTTYPES)
+
+/* 7.18.1.1. Exact-width integer types */
+
+#if !defined(__FreeBSD__)
+
+#ifdef _STDINT_H_NEED_SIGNED_INT_TYPES
+typedef signed char int8_t;
+#endif
+typedef unsigned char uint8_t;
+
+#ifdef _STDINT_H_NEED_SIGNED_INT_TYPES
+typedef short int16_t;
+#endif
+typedef unsigned short uint16_t;
+
+#ifdef _STDINT_H_NEED_SIGNED_INT_TYPES
+typedef int int32_t;
+#endif
+typedef unsigned int uint32_t;
+
+#if 0
+#ifdef _STDINT_H_NEED_SIGNED_INT_TYPES
+typedef long int64_t;
+#endif
+typedef unsigned long uint64_t;
+#define _STDINT_H_HAVE_INT64
+#elif 0
+#ifdef _STDINT_H_NEED_SIGNED_INT_TYPES
+typedef long long int64_t;
+#endif
+typedef unsigned long long uint64_t;
+#define _STDINT_H_HAVE_INT64
+#elif defined(_MSC_VER)
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#define _STDINT_H_HAVE_INT64
+#endif
+
+#endif /* !FreeBSD */
+
+/* 7.18.1.2. Minimum-width integer types */
+
+typedef int8_t int_least8_t;
+typedef uint8_t uint_least8_t;
+typedef int16_t int_least16_t;
+typedef uint16_t uint_least16_t;
+typedef int32_t int_least32_t;
+typedef uint32_t uint_least32_t;
+#ifdef _STDINT_H_HAVE_INT64
+typedef int64_t int_least64_t;
+typedef uint64_t uint_least64_t;
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+typedef int32_t int_fast8_t;
+typedef uint32_t uint_fast8_t;
+typedef int32_t int_fast16_t;
+typedef uint32_t uint_fast16_t;
+typedef int32_t int_fast32_t;
+typedef uint32_t uint_fast32_t;
+#ifdef _STDINT_H_HAVE_INT64
+typedef int64_t int_fast64_t;
+typedef uint64_t uint_fast64_t;
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#if !defined(__FreeBSD__)
+
+/* On some platforms (like IRIX6 MIPS with -n32) sizeof(void*) < sizeof(long),
+ but this doesn't matter here. */
+typedef long intptr_t;
+typedef unsigned long uintptr_t;
+
+#endif /* !FreeBSD */
+
+/* 7.18.1.5. Greatest-width integer types */
+
+#ifdef _STDINT_H_HAVE_INT64
+typedef int64_t intmax_t;
+typedef uint64_t uintmax_t;
+#else
+typedef int32_t intmax_t;
+typedef uint32_t uintmax_t;
+#endif
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+#define INT8_MIN -128
+#define INT8_MAX 127
+#define UINT8_MAX 255U
+#define INT16_MIN -32768
+#define INT16_MAX 32767
+#define UINT16_MAX 65535U
+#define INT32_MIN (~INT32_MAX)
+#define INT32_MAX 2147483647
+#define UINT32_MAX 4294967295U
+#ifdef _STDINT_H_HAVE_INT64
+#define INT64_MIN (~INT64_MAX)
+#if 0
+#define INT64_MAX 9223372036854775807L
+#define UINT64_MAX 18446744073709551615UL
+#elif 0
+#define INT64_MAX 9223372036854775807LL
+#define UINT64_MAX 18446744073709551615ULL
+#elif defined(_MSC_VER)
+#define INT64_MAX 9223372036854775807i64
+#define UINT64_MAX 18446744073709551615ui64
+#endif
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST8_MAX INT8_MAX
+#define UINT_LEAST8_MAX UINT8_MAX
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST16_MAX INT16_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST32_MAX INT32_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#ifdef _STDINT_H_HAVE_INT64
+#define INT_LEAST64_MIN INT64_MIN
+#define INT_LEAST64_MAX INT64_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+#define INT_FAST8_MIN INT32_MIN
+#define INT_FAST8_MAX INT32_MAX
+#define UINT_FAST8_MAX UINT32_MAX
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST16_MAX INT32_MAX
+#define UINT_FAST16_MAX UINT32_MAX
+#define INT_FAST32_MIN INT32_MIN
+#define INT_FAST32_MAX INT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+#ifdef _STDINT_H_HAVE_INT64
+#define INT_FAST64_MIN INT64_MIN
+#define INT_FAST64_MAX INT64_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#define INTPTR_MIN LONG_MIN
+#define INTPTR_MAX LONG_MAX
+#define UINTPTR_MAX ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#ifdef _STDINT_H_HAVE_INT64
+#define INTMAX_MIN INT64_MIN
+#define INTMAX_MAX INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+#else
+#define INTMAX_MIN INT32_MIN
+#define INTMAX_MAX INT32_MAX
+#define UINTMAX_MAX UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+#define PTRDIFF_MIN (~(ptrdiff_t)0 << (sizeof(ptrdiff_t)*CHAR_BIT-1))
+#define PTRDIFF_MAX (~PTRDIFF_MIN)
+
+/* This may be wrong... */
+#define SIG_ATOMIC_MIN 0
+#define SIG_ATOMIC_MAX 127
+
+#define SIZE_MAX (~(size_t)0)
+
+/* wchar_t limits already defined in <stddef.h>. */
+/* wint_t limits already defined in <wchar.h>. */
+
+#endif
+
+/* 7.18.4. Macros for integer constants */
+
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+
+#define INT8_C(x) x
+#define UINT8_C(x) x##U
+#define INT16_C(x) x
+#define UINT16_C(x) x##U
+#define INT32_C(x) x
+#define UINT32_C(x) x##U
+#if 0
+#define INT64_C(x) x##L
+#define UINT64_C(x) x##UL
+#elif 0
+#define INT64_C(x) x##LL
+#define UINT64_C(x) x##ULL
+#elif defined(_MSC_VER)
+#define INT64_C(x) x##i64
+#define UINT64_C(x) x##ui64
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#if 0
+#define INTMAX_C(x) x##L
+#define UINTMAX_C(x) x##UL
+#elif 0
+#define INTMAX_C(x) x##LL
+#define UINTMAX_C(x) x##ULL
+#elif defined(_MSC_VER)
+#define INTMAX_C(x) x##i64
+#define UINTMAX_C(x) x##ui64
+#else
+#define INTMAX_C(x) x
+#define UINTMAX_C(x) x##U
+#endif
+
+#endif
+
+#endif /* !_STDINT_H_HAVE_SYSTEM_INTTYPES */
+
+#endif /* _STDINT_H */
diff --git a/windows-NT/sys/socket.h b/windows-NT/sys/socket.h
new file mode 100644
index 0000000..99af149
--- /dev/null
+++ b/windows-NT/sys/socket.h
@@ -0,0 +1,9 @@
+#ifndef SYS_SOCKET_H
+#define SYS_SOCKET_H
+
+#define WIN32_LEAN_AND_MEAN
+#include <winsock2.h>
+
+typedef size_t socklen_t;
+
+#endif /* SYS_SOCKET_H */
diff --git a/windows-NT/sys/types.h b/windows-NT/sys/types.h
new file mode 100644
index 0000000..b6b5f1a
--- /dev/null
+++ b/windows-NT/sys/types.h
@@ -0,0 +1,155 @@
+/*
+ * windows-NT/sys/types.h
+ */
+
+#ifdef _MSC_VER
+
+#pragma once
+
+/* cl.exe version number legend: */
+/* */
+/* ! cl.exe version number confirmed */
+/* ? cl.exe version number uncertain */
+/* */
+/* Verified with Visual C++ 5.0 - cl.exe version 11.00 ! */
+/* Verified with Visual C++ 6.0 - cl.exe version 12.00 ! */
+/* No tests with Visual C++ .NET - cl.exe version 13.00 ? */
+/* Verified with Visual C++ .NET 2003 - cl.exe version 13.10 ! */
+/* No tests with Visual C++ 2005 - cl.exe version 14.00 ? */
+/* */
+#if _MSC_VER != 1100 && _MSC_VER != 1200 && _MSC_VER != 1310
+#pragma message ( "Please email Microsoft's <sys/types.h> file" )
+#pragma message ( "and version number from \"cl /?\" command to" )
+#pragma message ( "<conradpino@cvsproject.org>. Thank you." )
+#endif /* _MSC_VER != 1200 */
+
+/***************************************************************************/
+/* Mimic what Micrsoft defines in their <sys/types.h> */
+#ifndef _INC_TYPES
+#define _INC_TYPES
+
+
+
+/* Define time_t */
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+
+#if defined(_WIN64) && _MSC_VER >= 1300
+typedef __int64 time_t;
+#else
+typedef long time_t;
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 64
+typedef __int64 __time64_t;
+#endif
+#endif /* _TIME_T_DEFINED */
+
+
+
+/* Define ino_t */
+#ifndef _INO_T_DEFINED
+#define _INO_T_DEFINED
+
+#if _MSC_VER == 1100
+
+typedef unsigned short _ino_t; /* i-node number (not used on DOS) */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define ino_t _ino_t
+#else /* ndef _NTSDK */
+typedef unsigned short ino_t;
+#endif /* _NTSDK */
+#endif /* !__STDC__ */
+
+#else /* _MSC_VER != 1100 */
+
+typedef unsigned short ino_t;
+
+/* Microsoft uses _ino_t */
+typedef ino_t _ino_t;
+
+#endif /* _MSC_VER != 1100 */
+
+#endif /* _INO_T_DEFINED */
+
+
+
+/* Define dev_t */
+#ifndef _DEV_T_DEFINED
+#define _DEV_T_DEFINED
+
+#if _MSC_VER == 1100
+
+#ifdef _NTSDK
+typedef short _dev_t; /* device code */
+#else /* ndef _NTSDK */
+typedef unsigned int _dev_t; /* device code */
+#endif /* _NTSDK */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define dev_t _dev_t
+#else /* ndef _NTSDK */
+typedef unsigned int dev_t;
+#endif /* _NTSDK */
+#endif /* !__STDC__ */
+
+#else /* _MSC_VER != 1100 */
+
+typedef unsigned int dev_t;
+
+/* Microsoft uses _dev_t */
+typedef dev_t _dev_t;
+
+#endif /* _MSC_VER != 1100 */
+
+#endif /* _DEV_T_DEFINED */
+
+
+
+/* Define off_t */
+#ifndef _OFF_T_DEFINED
+#define _OFF_T_DEFINED
+
+#if _MSC_VER == 1100
+
+typedef long _off_t; /* file offset value */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define off_t _off_t
+#else /* ndef _NTSDK */
+typedef long off_t;
+#endif /* _NTSDK */
+#endif /* !__STDC__ */
+
+#else /* _MSC_VER != 1100 */
+
+typedef long off_t;
+
+/* Microsoft uses _off_t */
+typedef off_t _off_t;
+
+#endif /* _MSC_VER != 1100 */
+
+#endif /* _OFF_T_DEFINED */
+
+#endif /* _INC_TYPES */
+
+/***************************************************************************/
+/* define what Micrsoft doesn't */
+typedef int gid_t;
+typedef int pid_t;
+typedef int uid_t;
+
+typedef unsigned int useconds_t;
+/***************************************************************************/
+
+#else /* _MSC_VER */
+#error This file is for use with Microsoft compilers only.
+#endif /* _MSC_VER */
diff --git a/windows-NT/unistd.c b/windows-NT/unistd.c
new file mode 100644
index 0000000..6ff09c8
--- /dev/null
+++ b/windows-NT/unistd.c
@@ -0,0 +1,71 @@
+/*
+ * windows-NT/unitstd.c
+ * POSIX/UNIX functions not provided by Win32 platform
+ * and declared in <unistd.h> header file
+ */
+
+#include "unistd.h"
+
+#include <stdio.h>
+#include <conio.h>
+
+#include <sys/socket.h> /* This does: #include <windows.h> */
+
+/* Please order functions by name if possible */
+
+
+
+char *
+getpass (const char *prompt)
+{
+ static char pwd_buf[128];
+ size_t i;
+
+ fputs (prompt, stderr);
+ fflush (stderr);
+ for (i = 0; i < sizeof (pwd_buf) - 1; ++i)
+ {
+ pwd_buf[i] = _getch ();
+ if (pwd_buf[i] == '\r')
+ break;
+ }
+ pwd_buf[i] = '\0';
+ fputs ("\n", stderr);
+ return pwd_buf;
+}
+
+
+
+/* This is just a call to GetCurrentProcessID */
+pid_t
+getpid (void)
+{
+ return (pid_t) GetCurrentProcessId();
+}
+
+
+
+unsigned int sleep (unsigned seconds)
+{
+ Sleep (1000*seconds);
+ return 0;
+}
+
+
+
+/*
+ * Sleep at least some number of microseconds
+ */
+int usleep (useconds_t microseconds)
+{
+ if ( microseconds )
+ {
+ const useconds_t one_second = 1000000;
+ struct timeval tv_delay;
+
+ tv_delay.tv_sec = microseconds / one_second;
+ tv_delay.tv_usec = microseconds % one_second;
+ return select (0, NULL, NULL, NULL, &tv_delay);
+ }
+ return 0;
+}
diff --git a/windows-NT/unistd.h b/windows-NT/unistd.h
new file mode 100644
index 0000000..7d5dfd3
--- /dev/null
+++ b/windows-NT/unistd.h
@@ -0,0 +1,96 @@
+/* unistd.h -- Unix standard function prototypes
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Conrad T. Pino and Mark D. Baushke */
+
+#ifndef UNISTD_H
+#define UNISTD_H
+
+/* Don't include Microsoft's chdir, getcwd here, done in config.h now */
+#include <stddef.h>
+
+/* include Microsoft's close, dup */
+#include <io.h>
+
+#include <sys/types.h>
+
+/* These functions doesn't exist under Windows NT; we provide stubs */
+char * getpass (const char *prompt);
+pid_t getpid (void);
+int readlink (const char *path, char *buf, size_t buf_size);
+unsigned int sleep (unsigned int seconds);
+int usleep (useconds_t microseconds);
+
+/*
+FIXME: gethostname prototype for lib/xgethostname.c, no #include <winsock.h>
+ Remove when GNULib folks provide a permenant fix.
+ Requested by Mark D. Baushke and committed by Conrad T. Pino
+*/
+int __declspec(dllimport) __stdcall gethostname (char * name, int namelen);
+
+#if 0 /* someday maybe these should be added here as well */
+
+int chdir (const char *pathname);
+int mkdir (const char *pathname, mode_t mode);
+int rmdir (const char *pathname);
+int link (const char *oldpath, const char *newpath);
+int unlink (const char *pathname);
+int rename (const char *oldpath, const char *newpath);
+int stat (const char *file_name, struct stat *buf);
+int chmod (const char *path, mode_t mode);
+int chown (const char *path, uid_t owner, gid_t group);
+int utime (const char *filename, struct utimbuf *buf);
+DIR *opendir (const char *name);
+struct dirent *readdir(DIR *dir);
+int closedir (DIR *dir);
+void rewinddir (DIR *dir);
+int access (const char *pathname, int mode);
+int open (const char *pathname, int flags);
+int creat (const char *pathname, mode_t mode);
+int close (int fd);
+ssize_t read (int fd, void *buf, size_t count);
+ssize_t write (int fd, const void *buf, size_t count);
+int fcntl (int fd, int cmd);
+int fstat (int filedes, struct stat *buf);
+off_t lseek (int fildes, off_t offset, int whence);
+int dup (int oldfd);
+int dup2 (int oldfd, int newfd);
+int pipe (int filedes[2]);
+mode_t umask (mode_t mask);
+FILE *fdopen (int fildes, const char *mode);
+int fileno (FILE *stream);
+pid_t fork (void);
+int execl (const char *path, const char *arg, ...);
+int execle (const char *path, const char *arg, ...);
+int execlp (const char *file, const char *arg, ...);
+int execv (const char *path, char *const argv[]);
+int execve (const char *path, char *const argv[],
+ char *const envp[]);
+int execvp (const char *file, char *const argv[]);
+pid_t waitpid (pid_t pid, int *status, int options);
+pid_t waitpid (pid_t pid, int *status, int options);
+void _exit (int status);
+int kill (pid_t pid, int sig);
+int pause (void);
+unsigned int alarm (unsigned int seconds);
+int setuid (uid_t uid);
+int setgid (gid_t gid);
+
+#endif /* someday */
+
+#endif /* UNISTD_H */
diff --git a/windows-NT/waitpid.c b/windows-NT/waitpid.c
new file mode 100644
index 0000000..9d7932c
--- /dev/null
+++ b/windows-NT/waitpid.c
@@ -0,0 +1,22 @@
+/* waitpid.c --- waiting for process termination, under Windows NT
+ Jim Blandy <jimb@cyclic.com> --- August 1995 */
+
+#include <assert.h>
+#include <stdio.h>
+#include <process.h>
+#include <errno.h>
+
+#include "config.h"
+
+/* Wait for the process PID to exit. Put the return status in *statusp.
+ OPTIONS is not supported yet under Windows NT. We hope it's always zero. */
+pid_t waitpid (pid, statusp, options)
+ pid_t pid;
+ int *statusp;
+ int options;
+{
+ /* We don't know how to deal with any options yet. */
+ assert (options == 0);
+
+ return _cwait (statusp, pid, _WAIT_CHILD);
+}
diff --git a/windows-NT/woe32.c b/windows-NT/woe32.c
new file mode 100644
index 0000000..f01b63d
--- /dev/null
+++ b/windows-NT/woe32.c
@@ -0,0 +1,355 @@
+/*
+ * Copyright (C) 2003-2005 The Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*
+ * woe32.c
+ * - utility functions for cvs under win32
+ *
+ */
+
+#include "config.h"
+
+#include "woe32.h"
+
+#include <stdio.h>
+#include <assert.h>
+#include <errno.h>
+
+#include <sys/socket.h> /* This does: #include <windows.h> */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <xalloc.h>
+
+
+
+/* #define SYSTEM_CLEANUP woe32_cleanup */
+void
+woe32_cleanup (void)
+{
+ if (WSACleanup ())
+ {
+#ifdef SERVER_ACTIVE
+ if (server_active || error_use_protocol)
+ /* FIXME: how are we supposed to report errors? As of now
+ (Sep 98), error() can in turn call us (if it is out of
+ memory) and in general is built on top of lots of
+ stuff. */
+ ;
+ else
+#endif
+ fprintf (stderr, "cvs: cannot WSACleanup: %s\n",
+ sock_strerror (WSAGetLastError ()));
+ }
+}
+
+
+
+/*============================================================================*/
+/*
+How Microsoft does fd_set in Windows 2000 and Visual C++ 6.0:
+
+ * Select uses arrays of SOCKETs. These macros manipulate such
+ * arrays. FD_SETSIZE may be defined by the user before including
+ * this file, but the default here should be >= 64.
+ *
+ * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
+ * INCLUDED IN WINSOCK2.H EXACTLY AS SHOWN HERE.
+
+ #ifndef FD_SETSIZE
+ #define FD_SETSIZE 64
+ #endif
+
+ typedef struct fd_set {
+ u_int fd_count;
+ SOCKET fd_array[FD_SETSIZE];
+ } fd_set;
+
+Microsoft packs all handles between fd_array[0] and fd_array[fd_count-1]
+*/
+
+typedef struct
+{
+ int is_ready;
+ SOCKET crt;
+ DWORD type;
+ union
+ {
+ long osf;
+ HANDLE w32;
+ };
+} woe32_handle_set;
+
+typedef struct
+{
+ u_int ready_count, used_count;
+ woe32_handle_set handle[ FD_SETSIZE ];
+} woe32_select_set;
+
+static int woe32_select_set_fini (woe32_select_set * w32_set, fd_set * crt_set)
+{
+ FD_ZERO (crt_set);
+
+ if (w32_set->ready_count)
+ {
+ u_int index;
+ woe32_handle_set * handle;
+
+ index = 0;
+ handle = w32_set->handle;
+ while (index < w32_set->used_count)
+ {
+ if (handle->is_ready)
+ {
+ FD_SET (handle->crt, crt_set);
+ }
+
+ ++index;
+ ++handle;
+ }
+ }
+
+ return w32_set->ready_count;
+}
+
+static int woe32_select_set_init (woe32_select_set * w32_set, fd_set * crt_set)
+{
+ u_int index;
+ DWORD dwBytesAvail;
+ woe32_handle_set * handle;
+
+ w32_set->ready_count = w32_set->used_count = index = 0;
+ handle = w32_set->handle;
+
+ if (crt_set) while (index < crt_set->fd_count)
+ {
+ handle->crt = crt_set->fd_array[index];
+
+ handle->osf = _get_osfhandle (handle->crt);
+ if (handle->w32 == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return -1;
+ }
+
+ handle->type = GetFileType (handle->w32);
+ switch (handle->type)
+ {
+ case FILE_TYPE_DISK:
+ w32_set->ready_count += handle->is_ready = 1;
+ break;
+
+ case FILE_TYPE_PIPE:
+ if ( PeekNamedPipe (handle->w32, NULL, 0, NULL, &dwBytesAvail, NULL) )
+ {
+ w32_set->ready_count += handle->is_ready = dwBytesAvail > 0;
+ }
+ else
+ {
+ errno = EBADF;
+ return -1;
+ }
+ break;
+
+ case FILE_TYPE_CHAR:
+ case FILE_TYPE_REMOTE:
+ case FILE_TYPE_UNKNOWN:
+ default:
+ errno = EBADF;
+ return -1;
+ }
+
+ ++index;
+ ++handle;
+ }
+ w32_set->used_count = index;
+
+ while (index < FD_SETSIZE)
+ {
+ handle->crt = -1;
+
+ handle->w32 = INVALID_HANDLE_VALUE;
+
+ handle->type = FILE_TYPE_UNKNOWN;
+
+ handle->is_ready = 0;
+
+ ++index;
+ ++handle;
+ }
+
+ return w32_set->ready_count;
+}
+
+static int woe32_select_set_wait (woe32_select_set * w32_set)
+{
+ char buffer[ 8 ];
+ DWORD dwBytesRead;
+
+ /* set contains only non-ready pipes */
+ if (w32_set->used_count != 1)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (! ReadFile (w32_set->handle[0].w32, buffer, 0, &dwBytesRead, NULL))
+ {
+ errno = EBADF;
+ return -1;
+ }
+
+ return w32_set->handle[0].is_ready = 1;
+}
+
+/* #define fd_select woe32_fd_select */
+#undef fd_select
+int woe32_fd_select ( int nfds,
+ struct fd_set * readfds,
+ struct fd_set * writefds,
+ struct fd_set * errorfds,
+ struct timeval * timeout)
+{
+ int ready_fds;
+ woe32_select_set woe32_rset;
+
+ /* we don't support these for now */
+ assert(writefds != NULL);
+ assert(errorfds != NULL);
+ assert(timeout != NULL);
+
+ /* Windows doesn't care but POSIX says it does */
+ if (nfds < 0 || nfds > FD_SETSIZE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ ready_fds = woe32_select_set_init (&woe32_rset, readfds);
+ if (! ready_fds)
+ {
+ ready_fds = woe32_select_set_wait (&woe32_rset);
+ }
+
+ if (ready_fds >= 0)
+ {
+ woe32_select_set_fini (&woe32_rset, readfds);
+ }
+
+ return ready_fds;
+}
+/*============================================================================*/
+
+
+
+char *
+woe32_getlogin (void)
+{
+ static char name[256];
+ DWORD dw = sizeof (name);
+ GetUserName (name, &dw);
+ if (name[0] == '\0')
+ return NULL;
+ else
+ return name;
+}
+
+
+
+/* #define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock() */
+void
+woe32_init_winsock (void)
+{
+ WSADATA data;
+
+ if (WSAStartup (MAKEWORD (1, 1), &data))
+ {
+ fprintf (stderr, "cvs: unable to initialize winsock\n");
+ exit (1);
+ }
+}
+
+
+
+char *
+woe32_home_dir (void)
+{
+ static char *home_dir = NULL;
+ char *home_drive, *home_path;
+
+ if (home_dir)
+ return home_dir;
+
+ if ((home_drive = getenv ("HOMEDRIVE")) && (home_path = getenv ("HOMEPATH")))
+ {
+ const char NUL = '\0';
+ size_t home_drive_len, home_path_len;
+
+ home_drive_len = strlen (home_drive);
+ home_path_len = strlen (home_path);
+
+ home_dir = xmalloc (home_drive_len + home_path_len + sizeof NUL);
+
+ memcpy (home_dir, home_drive, home_drive_len );
+ memcpy (home_dir + home_drive_len, home_path, home_path_len );
+ home_dir[ home_drive_len + home_path_len ] = NUL;
+
+ return home_dir;
+ }
+
+ return NULL;
+}
+
+
+
+/* #define nanosleep woe32_nanosleep */
+int
+woe32_nanosleep (const struct timespec *requested_delay,
+ struct timespec *remaining_delay)
+{
+ const useconds_t one_second = 1000000;
+ const useconds_t nano_per_micro = 1000;
+ useconds_t micro_delay;
+
+ micro_delay = requested_delay->tv_sec * one_second
+ + ( requested_delay->tv_nsec + nano_per_micro - 1 ) / nano_per_micro
+ ;
+
+ return usleep (micro_delay);
+}
+
+
+
+char *
+woe32_shell (void)
+{
+ char *shell;
+
+ shell = getenv ("ComSpec");
+
+ if (shell == NULL)
+ {
+ /* Windows always sets ComSpec, the user is messing with us */
+ const char *os;
+
+ if ((os = getenv ("OS")) && strcmp (os, "Windows_NT"))
+ /* Windows NT, Windows 2000, Windows XP, Windows 2003 */
+ shell = "cmd.exe";
+ else
+ /* Windows 95, Windows 98, Windows Me */
+ shell = "command.com";
+ }
+
+ return shell;
+}
diff --git a/windows-NT/woe32.h b/windows-NT/woe32.h
new file mode 100644
index 0000000..d33d777
--- /dev/null
+++ b/windows-NT/woe32.h
@@ -0,0 +1,35 @@
+/*
+ * woe32.h
+ * - utility functions for cvs under win32
+ *
+ */
+
+#ifndef WOE32_H
+#define WOE32_H
+
+#include <timespec.h>
+
+/* #define SYSTEM_CLEANUP woe32_cleanup */
+void woe32_cleanup (void);
+
+/* #define fd_select woe32_fd_select */
+int woe32_fd_select ( int nfds,
+ struct fd_set * readfds,
+ struct fd_set * writefds,
+ struct fd_set * errorfds,
+ struct timeval * timeout);
+
+char *woe32_getlogin (void);
+
+char *woe32_home_dir (void);
+
+/* #define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock() */
+void woe32_init_winsock (void);
+
+/* #define nanosleep woe32_nanosleep */
+int woe32_nanosleep (const struct timespec *requested_delay,
+ struct timespec *remaining_delay);
+
+char * woe32_shell (void);
+
+#endif /* WOE32_H */