On Sat, 4 Aug 2007, Andris wrote: > Hi, I'm writing a set of small utilities as scripts, and I got a > segmentation fault working on one of them.
I tried running your script but it did not produce any seg faults. Do you have example input that causes a seg fault? -Otto > > The script is suppoused to align text with spaces. Say you have this file: > > Foo1\tFoo2 > Baaaaaaaaaaaar\tBar2 > Baz > > Where \t are horizontal tabs. My script would replace the tabs with an > adequate number of spaces to align foo2 and bar2. > > Right now it works with a file named "file" in the working directory. > Of course this is only temporal. > > The problem is that I get a segmentation fault when I run it. That > never happened to me with a shell script. And I can't see where should > be a problem. > > I'm running OpenBSD 4.1-stable, GENERIC, i386. I don't know if it's > important, but I didn't create a swap partition (I'm planning to > change this). > > If someone could light me, I'd be very grateful. > > Here is the script: > > #!/bin/sh > > IFS=' > ' > > file=file > > for line in `< "${file}"`; do > > fields=`printf '%s' "${line}" | sed 's/[^ ]//g' | wc -m` > fields=$((${fields} + 1)) > > if [ "${fields}" -eq 1 ]; then > printf '%s' "${line}" > else > for field in `jot "${fields}"`; do > max_width=`cut -f "${field}" "${file}" | awk '{ l = > length($0); if > (l > m) m = l } END { print m }'` > width=`printf '%s' "${line}" | cut -f "${field}" | awk > '{ print > length($0) }'` > > printf '%s' "`printf '%s' "${line}" | cut -f > "${field}"`" > > if [ "${field}" -lt "${fields}" ]; then > for i in `jot "$((${max_width} - ${width}))"`; > do > printf '.' > done > fi > done > fi > > printf '\n' > done