Bug 239519

Summary: /usr/share/examples/ipfw/change_rules.sh uses not supported base system diff switch
Product: Base System Reporter: emz
Component: miscAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me CC: andrey, maya
Priority: ---    
Version: 12.0-RELEASE   
Hardware: Any   
OS: Any   

Description emz 2019-07-30 06:32:36 UTC
/usr/share/examples/ipfw/change_rules.sh uses not supported base system diff switch -F, which is probably supported by the GNU diff, but not the base system one. So basically the script is broken now.

Shame on one who has commited it.

===Cut===
[...]
:wq
/etc/rc.firewall.ronin.new: 316 строк, 12341 символов
Do you want to install the new rules (Y/N) ? Y
The rules will be changed now. If the message 'Type y to keep the new
rules' does not appear on the screen or the y key is not pressed in 30
seconds, the original rules will be restored.
The TCP/IP connections might be broken during the change. If so, restore
the ssh/telnet connection being used.
Would you like to see the resulting new rules (Y/N) ? n
Type y to keep the new rules (Y/N) ? Y
The new rules are now installed. The previous rules have been preserved in
the file /etc/rc.firewall.ronin.201907301121
diff: invalid option -- F
usage: diff [-aBbdilpTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]
            [--no-ignore-case] [--normal] [--strip-trailing-cr] [--tabsize]
            [-I pattern] [-L label] file1 file2
       diff [-aBbdilpTtw] [-I pattern] [-L label] [--ignore-case]
            [--no-ignore-case] [--normal] [--strip-trailing-cr] [--tabsize]
            -C number file1 file2
       diff [-aBbdiltw] [-I pattern] [--ignore-case] [--no-ignore-case]
            [--normal] [--strip-trailing-cr] [--tabsize] -D string file1 file2
       diff [-aBbdilpTtw] [-I pattern] [-L label] [--ignore-case]
            [--no-ignore-case] [--normal] [--tabsize] [--strip-trailing-cr]
            -U number file1 file2
       diff [-aBbdilNPprsTtw] [-c | -e | -f | -n | -q | -u] [--ignore-case]
            [--no-ignore-case] [--normal] [--tabsize] [-I pattern] [-L label]
            [-S name] [-X file] [-x pattern] dir1 dir2
Null message body; hope that's ok
===Cut===
Comment 1 Andrey Fesenko 2019-07-30 06:39:55 UTC
it seems
This new pager (less), bug.
Comment 2 maya 2020-02-25 11:18:12 UTC
- GNU diff has been replaced by a BSD licensed diff.
https://svnweb.freebsd.org/base/release/12.0.0/UPDATING?revision=341707&view=markup#l639

- BSD licensed diff does not support -F option.

- change_rules.sh uses -F option.
https://svnweb.freebsd.org/base/release/12.0.0/share/examples/ipfw/change_rules.sh?revision=341707&view=markup#l152
> diff -F "^# .*[A-Za-z]" -u ${edit_file}.$DATE ${edit_file} \
Comment 3 commit-hook freebsd_committer freebsd_triage 2020-09-30 20:57:19 UTC
A commit references this bug:

Author: emaste
Date: Wed Sep 30 20:57:01 UTC 2020
New revision: 366299
URL: https://svnweb.freebsd.org/changeset/base/366299

Log:
  MFC r359067: -F is GNU diff specific, not implemented in BSD diff.

  PR:		239519
  Reported by:	kouya@ryuhoku.jp [in -CURRENT]
  MFC after:	3 days

Changes:
_U  stable/12/
  stable/12/share/examples/ipfw/change_rules.sh