Files
vim-mirror/src/xdiff
Duncan Bowring b7205b6426 patch 9.2.0290: Amiga: no support for AmigaOS 3.x
Problem:  Amiga: no support for AmigaOS 3.x
Solution: Add support for building Vim on classic AmigaOS 3.x with the
          bebbo cross-compiler and libnix (-noixemul) runtime
          (Duncan Bowring).

The existing Make_ami.mak targets AmigaOS 4 (clib2), AROS, and MorphOS.
This patch adds a fourth target for classic 68k AmigaOS 3.x systems
(A1200, A4000, accelerated A500/A2000) using:
```
  make -f Make_ami.mak UNM=AmigaOS3 BUILD=normal
```

Changes:

os_amiga.c:
- Add 256 KiB __stack cookie for OS3 (conservative for limited RAM)
- Add safe_Lock() wrapper to suppress "Please insert volume" system
  requesters during path probing (benefits all Amiga targets)
- Suppress system requesters globally in mch_init() via pr_WindowPtr=-1
  (Vim probes many paths at startup; Lock()/Open() on non-existent
  volume names triggers blocking system requesters)
- Fix mch_get_host_name() for OS3 (libnix has no gethostname)
- Fix Delay() prototype for non-LATTICE compilers
- Fix nilfh file handle leak on error exit in mch_check_win()

os_amiga.h:
- Add fchown/fchmod/ftruncate no-op stubs for OS3/libnix

os_amiga_stubs.c (new):
- IM function stubs (referenced by optiondefs.h, no X11 on Amiga)
- mch_rmdir() via AmigaDOS DeleteFile()
- getpwuid()/getgrgid()/getuid() stubs (single-user system)

Make_ami.mak:
- Add AmigaOS3 target with -noixemul, -std=gnu99, -DWORDS_BIGENDIAN

blowfish.c:
- Accept WORDS_BIGENDIAN or AMIGA without requiring HAVE_CONFIG_H

xdiff/xmacros.h:
- Make SIZE_MAX fallback unconditional (not just hpux/VMS)

All OS3-specific changes are guarded by:
  #if defined(__GNUC__) && defined(AMIGA) && !defined(__amigaos4__)

Tested on FS-UAE with Workbench 3.1: 23 automated tests passing.
Binary size: 2.2 MiB with -Os -m68020 -DFEAT_NORMAL.

This is the first modern Vim build for classic 68k AmigaOS since
Vim 5.8 circa 1998.  Vim was originally released on the Amiga
(Fred Fish Disk 591, 1991).

closes: #19840

Signed-off-by: Duncan Bowring <duncan@bowring.us>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-04-03 14:50:07 +00:00
..

The files in this directory come from the xdiff implementation in git.
You can find it here: https://github.com/git/git/tree/master/xdiff
The files were last updated November 17, 2025 from git release v.2.52.0

This is originally based on libxdiff, which can be found here:
http://www.xmailserver.org/xdiff-lib.html

The git version was used because it has been maintained and improved.
And since it's part of git it is expected to be reliable.

The code is distributed under the GNU LGPL license.  It is included in the
COPYING file.

Changes in these files were made to avoid compiler warnings, replacing function
calls into Git core with Vim ones, and removing unused code such as xmerge.

The /* */ comments are kept to make syncing to a newer version easier, do not
change them to // comments!

The first work for including xdiff in Vim was done by Christian Brabandt.