/*--------------------------------------------------------------------
 * FICHERO:  CadUne.c
 * OBJETIVO: Definir la funcin Cad_Une()
 * AUTOR:    Pedro Reina
 * FECHA:    J.13.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "Cadena.h"

#include <string.h>             /* strcat()                         */

/*--------------------------------------------------------------------
 * Definicin de funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------Olimpo
 * FUNCION:  Cad_Une()
 * OBJETIVO: Unir varias cadenas
 * ENTRADAS: Las cadenas que hay que unir, terminadas 
 *           por CAD_FIN
 * SALIDAS:  Una cadena conteniendo la unin
 * NOTA:     La cadena devuelta hay que destruirla cuando no 
 *           sea necesaria
 * EJEMPLO:  Cad_Une ("Veinte de ", Mes, " de 1808",CAD_FIN)
 *------------------------------------------------------------------*/
cadena Cad_Une (cadena Cadena, ...)
  {
  va_list  LisCad;
  contador Longitud;
  cadena   Arg, Union;

  Longitud = Cad_Longitud (Cadena);
  va_start (LisCad,Cadena);
  while ( Arg = va_arg (LisCad,cadena) )
    { Longitud += Cad_Longitud (Arg); }
  va_end (LisCad);

  Union = Cad_Crea (Longitud);

  Cad_Copia (Union,Cadena);
  va_start (LisCad,Cadena);
  while ( Arg = va_arg (LisCad,cadena) )
    { strcat ((char *)Union,(char *)Arg); }
  va_end (LisCad);

  return ( Union );
  }
