#!/bin/bash

SESSIONDIR=$HOME/.valgrind-session
OUTPREFIX=vgout

# Try to make sure valgrind processes have exited

let tries=0

# So lame.

while ps aux | grep -v grep | grep -v gnome-valgrind- | grep ^$USER | grep valgrind >/dev/null 2>&1; do
  let tries=$tries+1
  if (($tries > 12)); then
    kill -9 $(ps aux | grep -v grep | grep -v gnome-valgrind- | grep ^$USER | grep valgrind | sed 's/[0-9A-Za-z]\+ \+\([0-9]\+\).*/\1/') >/dev/null 2>&1
  else
    kill $(ps aux | grep -v grep | grep -v gnome-valgrind- | grep ^$USER | grep valgrind | sed 's/[0-9A-Za-z]\+ \+\([0-9]\+\).*/\1/') >/dev/null 2>&1
  fi

  sleep 5
done

# Find a unique name

JOINED_OUTPUT=$HOME/valgrind-session
let ORDINAL=0

while [ -e $JOINED_OUTPUT.$ORDINAL ]; do
  let ORDINAL=$ORDINAL+1
done

# Join output

cat $SESSIONDIR/$OUTPREFIX.* >$JOINED_OUTPUT.$ORDINAL
rm -f $SESSIONDIR/$OUTPREFIX.*
