#!/bin/sh
# Requerimientos: lgrind (así se llama el paquete en Debian/Ubuntu)

# Crea los diffs y los procesa con lgrind (crea los .tex)
diffs_texs()
{
	for file in $ARCHIVOS; do
		# Continuamos sólo si existe un archivo original
		if [ -f ${file}.orig ]; then
			echo Procesando archivo ${file};
			diff -u ${file}.orig ${file} > ${file}.diff;
			lgrind -t 8 -i -lsrc ${file}.diff > ${file}.diff.tex;
			rm ${file}.diff;

			comunes ${file}.diff.tex
		fi
	done
}

# Este método es igual al anterior, pero no crea los diffs, ya
# que está pensado para archivos que no fueron modificados
texs()
{
	for file in $ARCHIVOS; do
		# No procesamos los archivos que tienen un original, ya
		# esos deben pasarse a la función "diffs_texs"
		if [ ! -f ${file}.orig ]; then
			echo texs - archivo ${file};
			lgrind -t 8 -i -lsrc ${file} > ${file}.tex;

			comunes ${file}.tex
		fi
	done
}

# Tareas finales comunes de las funciones.
# Se pasa un archivo como argumento.
comunes()
{
	# Convertimos el fichero .tex a la codificación latin1
	iconv -f utf8 -t latin1 ${1} -o ${1}.latin1;
	mv ${1}.latin1 ${1};

	# Este fix se debe a un problema con lgrind.
	# Reemplazamos las lineas mal generadas.
	sed 's/*=====================================================*/\*========================================/g' ${1} > ${1}.mo;

	# Convertimos los archivos latin1 a utf8
	if file ${1}.mo | grep -q "ISO-8859"; then
		iconv -f latin1 -t utf8 ${1}.mo > ${1}
		rm ${1}.mo
		echo "   Convertido de ISO-8859 a UTF-8"
	else
		mv ${1}.mo ${1}
	fi
}

# include
ARCHIVOS=$(find include | grep -v ".svn" | grep -v ".mo")
diffs_texs

# kernel
ARCHIVOS=$(find kernel | grep -v ".svn" | grep -v ".mo")
diffs_texs

# mm
ARCHIVOS=$(find mm | grep -v ".svn" | grep -v ".mo")
diffs_texs

# lib
ARCHIVOS=$(find lib -name "*.c" -o -name "*.s" | grep -v ".svn")
texs

# chgprio, mipid y solocpu
ARCHIVOS=$(find . -name chgprio.c -o -name mipid.c -o -name solocpu.c | grep -v disquette)
texs

