Hi, I'm writing a set of small utilities as scripts, and I got a segmentation fault working on one of them.
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