#!/bin/sh

map_c_filename ()
{
	c_filename="`basename $1`"
	case "$c_filename" in
		"d1array.c")  echo "basic-array.c"  ;;
		"d1arrstr.c") echo "basic-arrstr.c" ;;
		"d2array.c")  echo "basic-array2.c" ;;
		"list.c")     echo "basic-list.c"   ;;
		"toargv.c")   echo "basic-argv.c"   ;;
		"qarg.c")     echo "basic-qarg.c"   ;;
		*)            echo "$c_filename"    ;;
	esac
}

map_h_filename ()
{
	h_filename="`basename $1`"
	case "$h_filename" in
		"l4darr.h")   echo "basic-array.h"  ;;
		"l4bds.h")    echo "basic-list.h"   ;;
		"l4arg.h")    echo "basic-arg.h"    ;;
		*)            echo "$h_filename"    ;;
	esac
}

generate_file ()
{
	file_src="$1"
	case "$file_src" in
		*.c)  file_dest="`map_c_filename $file_src`" ;;
		*.h)  file_dest="`map_h_filename $file_src`" ;;
	esac
	[ -z "$file_dest" ] && return 1

	echo "Generating $file_dest from $file_src"
	sed -f "libbasic.sed" "$file_src" > "$file_dest"
}

autoreconf -iv
[ -z "$1" ] && exit 0

git clone "$1" "l4basic"

for i in l4basic/l4darr/*.[ch] l4basic/l4bds/*.[ch] l4basic/l4arg/*.[ch]
do
	generate_file "$i" "."
done

rm -rf "l4basic"