diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2005-10-03 13:43:40 +0000 |
---|---|---|
committer | <> | 2014-09-25 11:25:48 +0000 |
commit | 10de491ef0bc43827ab8631a4c02860134e620a9 (patch) | |
tree | 22e734337cc9aa5d9b1d7c71261d160b6a60634d /windows-NT | |
download | cvs-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')
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, ©, + 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 */ |