#!/usr/bin/env bash

for grandparent in 0 1
do
	for parent in 0 1
	do
		for child in 0 1
		do
			if [ "$grandparent" = 0 ]
			then
				echo Grandparent not setpgrping
			else
				echo Grandparent is setpgrping
			fi
			if [ "$parent" = 0 ]
			then
				echo Parent not setpgrping
			else
				echo Parent is setpgrping
			fi
			if [ "$child" = 0 ]
			then
				echo Child not setpgrping
			else
				echo Child is setpgrping
			fi
			diff -u ps."$grandparent-$parent-$child.before" ps."$grandparent-$parent-$child.after" 
			echo
			echo
			echo
		done
	done
done


# Grandparent not setpgrping
# Parent not setpgrping
# Child not setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S+     0:00          \_ ./setpgrp-and-exit
# -24491 pts/6    S+     0:00              \_ ./setpgrp-and-exit
# -24492 pts/6    S+     0:00              |   \_ ./setpgrp-and-exit
# -24496 pts/6    S+     0:00              \_ sh -c ps axf > ps.0-0-0.before
# -24497 pts/6    R+     0:00                  \_ ps axf
# +24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# +24507 pts/6    R+     0:00              \_ sh -c ps axf > ps.0-0-0.after
# +24508 pts/6    R+     0:00                  \_ ps axf


# Grandparent not setpgrping
# Parent not setpgrping
# Child is setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S+     0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24513 pts/6    R+     0:00              \_ sh -c ps axf > ps.0-0-1.before
# -24514 pts/6    R+     0:00                  \_ ps axf
# +24524 pts/6    R+     0:00              \_ sh -c ps axf > ps.0-0-1.after
# +24525 pts/6    R+     0:00                  \_ ps axf


# Grandparent not setpgrping
# Parent is setpgrping
# Child not setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S+     0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24529 pts/6    R+     0:00              \_ sh -c ps axf > ps.0-1-0.before
# -24530 pts/6    R+     0:00                  \_ ps axf
# +24540 pts/6    R+     0:00              \_ sh -c ps axf > ps.0-1-0.after
# +24541 pts/6    R+     0:00                  \_ ps axf


# Grandparent not setpgrping
# Parent is setpgrping
# Child is setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S+     0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24544 pts/6    S+     0:00              \_ sh -c ps axf > ps.0-1-1.before
# -24545 pts/6    R+     0:00                  \_ ps axf
# +24557 pts/6    S+     0:00              \_ sh -c ps axf > ps.0-1-1.after
# +24558 pts/6    R+     0:00                  \_ ps axf


# Grandparent is setpgrping
# Parent not setpgrping
# Child not setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S      0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24562 pts/6    S      0:00              \_ sh -c ps axf > ps.1-0-0.before
# -24563 pts/6    R      0:00                  \_ ps axf
# +24583 pts/6    R      0:00              \_ sh -c ps axf > ps.1-0-0.after
# +24584 pts/6    R      0:00                  \_ ps axf


# Grandparent is setpgrping
# Parent not setpgrping
# Child is setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S      0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24587 pts/6    R      0:00              \_ sh -c ps axf > ps.1-0-1.before
# -24588 pts/6    R      0:00                  \_ ps axf
# +24598 pts/6    R      0:00              \_ sh -c ps axf > ps.1-0-1.after
# +24599 pts/6    R      0:00                  \_ ps axf


# Grandparent is setpgrping
# Parent is setpgrping
# Child not setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S      0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24603 pts/6    R      0:00              \_ sh -c ps axf > ps.1-1-0.before
# -24604 pts/6    R      0:00                  \_ ps axf
# +24617 pts/6    R      0:00              \_ sh -c ps axf > ps.1-1-0.after
# +24618 pts/6    R      0:00                  \_ ps axf


# Grandparent is setpgrping
# Parent is setpgrping
# Child is setpgrping
#  24483 pts/6    S+     0:00      \_ make
#  24490 pts/6    S      0:00          \_ ./setpgrp-and-exit
#  24491 pts/6    Z+     0:00              \_ [setpgrp-and-exi] <defunct>
# -24620 pts/6    S      0:00              \_ sh -c ps axf > ps.1-1-1.before
# -24621 pts/6    R      0:00                  \_ ps axf
# +24634 pts/6    S      0:00              \_ sh -c ps axf > ps.1-1-1.after
# +24635 pts/6    R      0:00                  \_ ps axf


