#!/bin/sh
# paste
# Reimplement the 'paste' command from coreutils.

DELIMITER="$(echo -e '\t')"
FILELIST=
MAXLINES=0
LINECTR=1

while [ -n "${1}" ]; do
   case ${1} in
   --delimiters=)
      # Set delimiter, the easy way.
      DELIMITER="$(echo "${1}" | cut -f 2 -d '=' | grep -o "^.")"
      shift 1
      ;;
   -d)
      # Set delimiter, the hard way.
      shift 1
      if [ -n "${1}" -o \
         -n "${2}" ]; 
      then
         DELIMITER="${1}"
         shift 1
      else
         echo "Bad delimiter: '$1'"
         exit 1
      fi
      ;;
   *)
      # Filename
      if [ -f "${1}" ]; then
         FILELIST="${1}
${FILELIST}"
         shift 1
      else
         echo "No such filename: '$1'"
         exit 1
      fi
      ;;
   esac
done


# Find the maximum length
for FILE in $FILELIST; do
   LINES="$(sed -n '$=' "${FILE}" )"
   if [ ${LINES} -gt ${MAXLINES} ]; then
      MAXLINES=${LINES}
   fi
done



### Do this thing
# Assume all files have at least one line
for FILE in ${FILELIST}; do
   OUTPUT="${OUTPUT}$(head -n1 "${FILE}")${DELIMITER}"
done
echo "${OUTPUT}"

# Do the rest of the lines.
while [ $LINECTR -lt ${MAXLINES} ]; do
   # Build a line
   unset OUTPUT
   for FILE in ${FILELIST}; do
      OUTPUT="${OUTPUT}$(sed "1,${LINECTR}d" "${FILE}" | head -n 1)${DELIMITER}"
   done
   echo "${OUTPUT}"
   LINECTR=$((${LINECTR}+1))
done
