2023-08-25. SMS. GNU Diffutils 3.8 for VMS (3.8b) ================================ ------------------------------------------------------------------------ Disclaimer ---------- No claims of any sort are made herein. The main GNU Diffutils developers appear not to be particularly interested in this effort. Any suggestions for improving the code in the VMS-specific sections are welcome, but low expectations are more realistic than high ones. ------------------------------------------------------------------------ Description ----------- This note accompanies a quick VMS port of GNU Diffutils version 3.8, a GNU free file comparison utility collection. The most obvious features seem to work, but many have not been tested. Built and tested (slightly) in these environments: Alpha objects and executables (built on VMS V8.4-2L1 with VSI C V7.4-002). IA64 objects and executable (built on VMS V8.4-2L3 with VSI C V7.4-001). x86_64 objects and executables (built on VMS X86_64 V9.2-1 with VSI C X7.4-785 (GEM 50X65)). VAX objects and executables unavailable. (Too much dependence on "long long" types. V3.3 seems to be the end of the line for 32-bit systems.) ------------------------------------------------------------------------ News ---- Version 3.8b 2023-08-25 ----------------------- - Minor changes to accommodate VMS V9.2-1 (and a native compiler) on x86_64. [.vms]config.h, [.vms]descrip_src.mms, [.vms]stdio.h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 3.8a 2022-08-16 ----------------------- - General update to version 3.8. - VMS builders now enable large-file support by default on non-VAX systems. [.vms]DESCRIP.MMS, [.vms]DESCRIP_SRC.MMS - Added an MMS/MMK target, DASHV, to display "-v" reports from the main executables. [.vms]DESCRIP.MMS - Updated VMS-specific header files to accommodate changes to the diffutils source code and recent VSI compiler and CRTL changes. [.vms]alloca.h, [.vms]inttypes.h, [.vms]limits.h, [.vms]stat.h, [.vms]stdint.h, [.vms]stdio.h, [.vms]time.h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 3.3b 2022-06-21 ----------------------- - Changed VMS builders and jacket header files to accommodate x86_64 hardware architecture and VSI C compilers and header files. [.vms]DESCRIP.MMS, [.vms]DESCRIP_SRC.MMS, [.vms]inttypes.h, [.vms]limits.h, [.vms]stdint.h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 3.3a 2014-01-22 ----------------------- - General update to version 3.3. The new --no-dereference option will be available only on systems with a C RTL modern enough to support symbolic links (non-VAX, __CRTL_VER >= 70301000), and effective only on systems which actually support symbolic links. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 3.2a 2012-10-08 ----------------------- - General update to version 3.2. - "sdiff -o" had problems with contamination from one edit to the next, and some temporary editor files ("SYS$SCRATCH:SDIFF*.") might not be deleted. Bad carriage control in the interactive edit help ([.src]sdiff.c:give_help()) caused a prompt and user input to overwrite help text instead of appearing on a new line. Removed the old VMS-specific handling of temporary editor files to solve the contamination problem. Added VMS-specific code to avoid accumulation of many multiple versions of temporary editor files. Replaced the normal unlink() function with a VMS-specific one to delete multiple versions of a temporary editor file. Added a VMS-specific newline to the interactive edit help text to solve the appearance problem. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 3.0a 2010-06-05 ----------------------- - General update to version 3.0. Moved some VMS specifics from [.vms]config.h to various jacket header files in [.vms]. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 2.8.7b 2009-12-17 -------------------------- - Added "ctx = stm" (on VMS) to the open() arguments in [.src]cmp.c. This seems to resolve a complaint involving --ignore-initial applied to Alpha object files (Record format: Variable length). http://forums.itrc.hp.com/service/forums/questionanswer.do?threadId=1390617 - Added VMS-specific code to work better with redirected output (PIPE, DEFINE SYS$OUTPUT). Now, generic code will use a special, RMS-friendly fwrite()-replacement function, [.vmslib]vms.c: vms_fwrite(), which switches the order of arguments (ptr, 1, N, file) to (ptr, N, 1, file), so that one N-byte record will be produced, instead of N 1-byte records. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 2.8.7a 2008-09-24 -------------------------- - New. Between the unreleased status of Diffutils version 2.8.7, and my work, bugs are possible, but --ignore-file-name-case seems to work better than it did in 2.8.1. - New VMS-specific code sets the default value for the --[no-]ignore-file-name-case option according to the current SET PROCESS /CASE_LOOKUP setting. (Override this default with an explicit --[no-]ignore-file-name-case option.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version 2.8.1a 2007-06-23 -------------------------- - New. Bugs are possible. ------------------------------------------------------------------------ Changes to Source Files ----------------------- Files new for VMS: [.vms] alloca.h VMS-specific alloca.h. check_large.com DCL script to check large-file support (on Alpha) collect_deps.com Dependency collector for descrip_mkdeps.mms. config.h VMS-specific config.h. "a" version suffix. configmake.h VMS-specific (empty) header file. DESCRIP.MMS Main MMK or MMS description ("make") file. DESCRIP_MKDEPS.MMS Source dependency generator description file. DESCRIP_SRC.MMS Source list description file. DESCRIP_SRC_FLAGS.MMS Compile and link flags description file. fcntl.h Jacket for . fnmatch.h Processed [.lib]fnmatch.in.h. gdiff_ed.com Template for an editor command procedure ("SYS$LOGIN:GDIFF_ED.COM") to be used for interactive editing in "sdiff". getopt.h Processed [.lib]getopt.in.h. inttypes.h Jacket for . limits.h Jacket for . locale.h Jacket for . malloc.h VMS-specific . paths.h VMS-specific paths.h. signal.h Jacket for . stat.h Jacket for . stdint.h VMS-specific stdint.h. stdio.h Jacket for . stdlib.h Jacket for . string.h Jacket for . time.h Jacket for . version.h Manually generated version.h. VMS_NOTES.TXT These notes. [.vmslib] decc_ver.c Program to show versions: VMS, C compiler, C run-time library. getprogname_vms.c VMS-specific replacement for GNU getprogname(). vms.c Various VMS-specific code: DEC C run-time initialization, temporary logical name creation, file specification parsing, replacement for unlink() to delete multiple file versions (";*"). vms_rms.h NAM[L]-related macros. [.] DESCRIP*.MMS Various MMS description files. Files modified for VMS: [.lib] tempname.c Changed to accommodate a VMS-style P_tmpdir definition ("SYS$SCRATCH:", in ). [.src] cmp.c Added C macro CMP_OPEN_ARG, to supply VMS-specific open() argument(s) ("ctx = stm", defined in the VMS-specific [.vms]config.h). diff.c Added VMS-specific code to set the default value for the --[no-]ignore-file-name-case option according to the current SET PROCESS /CASE_LOOKUP setting. diff3.c Added VMS-specific code for vfork()-execv() and related I/O redirection. sdiff.c Added VMS-specific code for vfork()-execv() and related I/O redirection, and for interactive editing. Restored some signal-handling code which was lost when the mainstream code dropped vfork() in favor of fork(). vfork() is still used on VMS. version.c Manually generated version string storage. ------------------------------------------------------------------------ Home source URL --------------- http://www.gnu.org/software/diffutils/ http://ftp.gnu.org/gnu/diffutils/ ftp://ftp.gnu.org/gnu/diffutils/ ------------------------------------------------------------------------ Instructions ------------ Extract the files from the distribution kit. The kit includes objects and executables for Alpha, IA64, and VAX, in the corresponding host-specific subdirectories. These builds were done with option (explained below) "LARGE" (except VAX). SET DEFAULT [.DIFFUTILS-3_8A_VMS.VMS] ! For convenience. MMS ! (No popular options.) Build options are described in the main builder file, [.vms]DESCRIP.MMS. (Expect some %CC-I-QUESTCOMPARE complaints when compiling.) Set the symbols for the foreign commands. For example: GCMP :== $ actual_device:[actual.directory]CMP.EXE GDIFF :== $ actual_device:[actual.directory]DIFF.EXE GDIFF3 :== $ actual_device:[actual.directory]DIFF3.EXE GSDIFF :== $ actual_device:[actual.directory]SDIFF.EXE Because of the VMS "DIFFERENCES" command, "DIFF" would not be a good choice for DIFF.EXE. The "G" prefix on other symbol names is less critical (and could be omitted, according to user preference). Note that diff3 and sdiff create (vfork()+execv()) subproceses which run diff, using "gdiff_exe:diff" to find the diff executable (as specified in [.vms]paths.h: DEFAULT_DIFF_PROGRAM). If the logical name gdiff_exe is not defined, the program will define a user-mode (temporary) logical name for gdiff_exe which points to the device:[directory] where the diff3 or sdiff executable resides. The --diff-program=PROGRAM option can override this default. Similarly, the interactive editing feature in sdiff will use an editor command procedure, "@ sys$login:gdiff_ed.com" (as specified in [.vms]config.h: DEFAULT_EDITOR_PROGRAM). A template procedure (using EDIT /TPU) is provided as [.vms]gdiff_ed.com. These programs generally form file paths the UNIX way, so some care may be needed for non-trivial cases. For example, to compare two files like [.d1.x1]a1.txt and [.d1.x2]a1.txt, either of the following commands should work: gdiff [.d1.x1]a1.txt [.d1.x2]a1.txt ! VMS-style. gdiff d1/x1/a1.txt d1/x2/a1.txt ! UNIX-style. However, for a recursive diff, where diff will be constructing the paths to the files, the directories must be specified in a UNIX form: gdiff -r d1/x1 d1/x2 ------------------------------------------------------------------------ Steven M. Schweda (+1) 651-699-9818 (voice) 382 South Warwick Street sms@antinode.info Saint Paul MN 55105-2547