I found that unlike the base vi (nvi 2.1.3), nvi-devel calls flock() on a writable file descriptor. This has the unfortunately side effect of causing the "Text file busy" error when you edit a script in one window and try to run it in another. The fix is to change the initial open() just prior to calling file_lock() in file_init() to use O_RDONLY instead of O_RDWR. This does not impact nvi's ability to write files, nvi creates a new file when writing.
Created attachment 201664 [details] patch
A commit references this bug: Author: leres Date: Thu Mar 21 17:12:16 UTC 2019 New revision: 496474 URL: https://svnweb.freebsd.org/changeset/ports/496474 Log: Unlike the base vi (nvi 2.1.3), nvi-devel calls flock() on a writable file descriptor. This has the unfortunately side effect of causing the "Text file busy" error when you edit a script in one window and try to run it in another. The fix is to change the initial open() just prior to calling file_lock() in file_init() to use O_RDONLY instead of O_RDWR. This does not impact nvi's ability to write files, nvi creates a new file when writing. PR: 235445 Approved by: johans (maintainer timeout, 6 weeks), ler (mentor, implicit) Changes: head/editors/nvi-devel/Makefile head/editors/nvi-devel/files/patch-common_exf.c