On 8/5/07, Otto Moerbeek <[EMAIL PROTECTED]> wrote:
>
> 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
> >
> >

Yeap, it segfaults here with:

aTbTc
daaaaaaaaaaaTe
fsssssssssssssssssssssssssssss

Upper case T are horizontal tabs. It makes OpenBSD freeze too :S

Reply via email to