dspinellis / pmonitor

Progress monitor: monitor a job's progress
Other
190 stars 19 forks source link

Regular expression compile failed (bad class) #7

Open fanis opened 6 years ago

fanis commented 6 years ago

Cloned and make install latest version but can't seem to get it to work on a just installed Debian 9.4 machine.

# ls -la test.bin
-rw-r--r-- 1 root root 1073741824 Aug  8 13:09 test.bin

(on another terminal, performing a copy on test.bin)

# pmonitor --file=test.bin
awk: line 12: regular expression compile failed (bad class -- [], [^] or [)
^/dev/[^
awk: line 12: syntax error at or near ]
awk: line 12: runaway regular expression / && system ...

Attempting to run tests:

~/pmonitor# ./test-pmonitor.sh 
awk: line 12: regular expression compile failed (bad class -- [], [^] or [)
^/dev/[^
awk: line 12: syntax error at or near ]
awk: line 12: runaway regular expression / && system ...
FAIL pmonitor: expected 50, got ''
lucaswerkmeister commented 6 years ago

Hm, apparently a common AWK on Debian Stretch is mawk. (It all goes through the alternatives system, so I hesitate to call it “the default”, but /etc/alternatives/awk points to /usr/bin/mawk on my Debian Stretch server as well.) And the mawk version shipped by Debian (1.3.3) doesn’t seem to support the regex we use to detect devices, /^\/dev\/[^/]*$/. However, the mawk version I have on my Arch Linux home system (1.3.4) does support it. I’m not sure if this is really a change between 1.3.3 and 1.3.4, or if Debian and Arch perhaps build the package differently?

Regardless – escaping the / inside the character class seems to fix the issue in all the AWK versions I have available to test (Debian’s mawk 1.3.3 and Arch’s gawk 4.2.1, mawk 1.3.4 and nawk 20121220), so I’ll submit a pull request with that fix. Thanks for reporting!