Closed oshogbo closed 3 years ago
While I agree that -qc is silly can you help me reproduce this?
# cd /usr/core/
# grep -qc pkg Makefile
# grep -c pkg Makefile
6
# uname -a
FreeBSD localhost 12.1-RELEASE-p18-HBSD FreeBSD 12.1-RELEASE-p18-HBSD #0 2e2d4484b05(stable/21.7)-dirty: Tue Jun 29 08:38:24 CEST 2021 root@sensey:/usr/obj/usr/src/amd64.amd64/sys/SMP amd64
Do you use bsdgrep?
Well, the one provided by FreeBSD:
# which grep
/usr/bin/grep
I'm running FreeBSD-13.0 stable. So something might change between FreeBSD-13 and FreeBSD-12.2 or we are using different grep (gnu version doesn't behave such way).
Can you run:
grep -V
# grep -V
grep (GNU grep) 2.5.1-FreeBSD
So this is why. You are are using gnu version.
The standard bsdgrep behaves differently.
You should be able do reproduce this using:
bsdgrep -qc pkg Makefile
Ah ok, from https://www.freebsd.org/releases/13.0R/announce/
The BSD version of grep(1) is now installed by default. The obsolete GNU version that was the previous default has been removed.
I still think that this is a bug in bsdgrep., but the -c option is not needed in this case.
Merged, thanks! I changed the commit message a bit to reflect the incoming change in FreeBSD 13.x ... I don't want to leave the impression that anything is currently not as it should be within our ecosystem. 21.7 will still use FreeBSD 12, but FreeBSD 13 is coming to 22.1.
Cheers, Franco
Sure. Thanks!
Have a good one, Mariusz
The -c option is printing on stdout the count of the founded items, even when the -q option is provided: $ grep -qc sh security.sh 1
In this if we are checking only the return code. So the amount of founded items is printed to stdout. Checking an return code should be sufficient.
This is breakes the version option when opnsense-update is used:
0 20.7.8
The output is used to build a JSON. For example in firmware/check.sh: base_to_reboot="$(opnsense-update -v)"
And later is used to build a JSON: packages_upgraded=$packages_upgraded"\"current_version\":\"$base_to_delete\","
Which ends up with invalid JSON: "new_version":"0 20.7.8"
Then the php script (like ./firmware/product.php) can't parse such invalid JSON.
This seems to be also a bug in FreeBSD so I failed separate bug report there.
Sponsored by: DynFi