Hi! On Sat, Sep 03, 2022 at 07:43:26PM +0200, Andreas Henriksson wrote: > On Sun, May 22, 2022 at 12:20:27AM +0200, наб wrote: > > Package: mount > > Version: 2.36.1-8+deb11u1 > > Severity: normal > > > > Dear Maintainer, > > > > I just got this: > > nabijaczleweli@tarta:~/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1$ sudo umount > > 04.awk: cmd. line:8: (FILENAME=- FNR=1) fatal: invalid regexp: Invalid > > range end: /^/home/nabijaczleweli/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1/ > > dawk: cmd. line:8: (FILENAME=- FNR=1) fatal: invalid regexp: Invalid range > > end: /^/home/nabijaczleweli/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1/ > > I have a gut feeling this is because of the awk implementation in use on > your system. I think it would serve the bug report well if you could > include this information (I'm guessing mawk). > ie. `update-alternatives --query awk`
This had been the case in the past ‒ I even opened #956465 at one point ‒ where awk=mawk would either not work or explode for umount always, which is why I switched back to awk=gawk: -- >8 -- $ update-alternatives --query awk Name: awk Link: /usr/bin/awk Slaves: awk.1.gz /usr/share/man/man1/awk.1.gz nawk /usr/bin/nawk nawk.1.gz /usr/share/man/man1/nawk.1.gz Status: auto Best: /usr/bin/gawk Value: /usr/bin/gawk Alternative: /usr/bin/gawk Priority: 10 Slaves: awk.1.gz /usr/share/man/man1/gawk.1.gz nawk /usr/bin/gawk nawk.1.gz /usr/share/man/man1/gawk.1.gz Alternative: /usr/bin/mawk Priority: 5 Slaves: awk.1.gz /usr/share/man/man1/mawk.1.gz nawk /usr/bin/mawk nawk.1.gz /usr/share/man/man1/mawk.1.gz -- >8 -- With set -x, when <tab>bing, I get this (trimmed to show texture): -- >8 -- +++ findmnt -lno TARGET +++ awk '{ if ($0 ~ "^"ENVIRON["HOME"]) { homeless = $0 sub("^"ENVIRON["HOME"], "~", homeless) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", homeless) print homeless " " } if ($0 ~ "^"ENVIRON["PWD"]) { reldir = $0 sub("^"ENVIRON["PWD"]"/?", "", reldir) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", reldir) print "./" reldir " " print reldir " " } gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&") print $0 " " }' awk: cmd. line:8: (FILENAME=- FNR=1) fatal: invalid regexp: Invalid range end: /^/home/nabijaczleweli/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1/ + local opt -- >8 -- If I cunningly override awk=mawk by setting `awk() { mawk "$@"; }`, I get no explicit error: -- >8 -: +++ findmnt -lno TARGET +++ awk '{ if ($0 ~ "^"ENVIRON["HOME"]) { homeless = $0 sub("^"ENVIRON["HOME"], "~", homeless) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", homeless) print homeless " " } if ($0 ~ "^"ENVIRON["PWD"]) { reldir = $0 sub("^"ENVIRON["PWD"]"/?", "", reldir) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", reldir) print "./" reldir " " print reldir " " } gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&") print $0 " " }' +++ mawk '{ if ($0 ~ "^"ENVIRON["HOME"]) { homeless = $0 sub("^"ENVIRON["HOME"], "~", homeless) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", homeless) print homeless " " } if ($0 ~ "^"ENVIRON["PWD"]) { reldir = $0 sub("^"ENVIRON["PWD"]"/?", "", reldir) gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&", reldir) print "./" reldir " " print reldir " " } gsub("[][(){}<>\",:;^&!$=?`|\\'\'' \t\f\n\r\v]", "\\\\&") print $0 " " }' + local opt -- >8 -- but I also don't get any suggestions or completions. So: gawk explodes mawk fails silently Further analysis of line 8 shows that this is sufficient: -- >8 -- ~/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1$ echo "$PWD" | gawk '{print ($0 ~ "^"ENVIRON["PWD"])}' gawk: cmd. line:1: (FILENAME=- FNR=1) fatal: invalid regexp: Invalid range end: /^/home/nabijaczleweli/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1/ ~/uwu/SunOS 2.0 (Tape) [Sun-2]/tape1$ echo "$PWD" | mawk '{print ($0 ~ "^"ENVIRON["PWD"])}' 0 -- >8 -- Which I gamed down to: -- >8 -- $ echo | gawk '{print ($0 ~ "[n-2]")}' gawk: cmd. line:1: (FILENAME=- FNR=1) fatal: invalid regexp: Invalid range end: /[n-2]/ $ echo | mawk '{print ($0 ~ "[n-2]")}' 0 -- >8 -- So the solution seems to be "don't use paths as regexes lmao". The correct spelling of that check would be substr($0, 0, length(ENVIRON["PWD"])) == ENVIRON["PWD"] and of the subsequent string manipulation as reldir = substr($0, length(ENVIRON["PWD"]) + 1) sub("^/", "", reldir) for the second branch and substr($0, 0, length(ENVIRON["HOME"])) == ENVIRON["HOME"] with homeless = "~" substr($0, length(ENVIRON["HOME"]) + 1) for the first (checked on mawk and gawk). Best, наб
signature.asc
Description: PGP signature