/*--------------------------------------------------------------------
 * FICHERO:  GeneList.c
 * OBJETIVO: Definir la funcin GeneraLista()
 * AUTOR:    Pedro Reina
 * FECHA:    L.17.7.1995
 *------------------------------------------------------------------*/

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

#include "Zeus.h"

/*--------------------------------------------------------------------
 * Definicin de macros constantes
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Variables globales
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

void RecogeFuentes();
void EscribeListaOlimpo();

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

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

/*--------------------------------------------------------------------
 * FUNCION:  GeneraLista()
 * OBJETIVO: Escribir Olimpo.lst con los nombres de todos los ficheros
 *           objeto necesarios para crear Olimpo.lib
 * ENTRADAS: Variables globales
 * SALIDAS:  Ninguna. El programa puede abortar
 *------------------------------------------------------------------*/
void GeneraLista()
  {
  short i;

  PresentaOpcion ("Creacin de Olimpo.lst");
  TotalObjeto = 0;

  printf ("\nLeyendo ficheros de descripcin...");
  for ( i=0 ; i<TotalOlimpo ; i++ )
    { RecogeFuentes ( Olimpo[i] ); }

  printf ("\nEscribiendo lista...");
  EscribeListaOlimpo();
  printf ("\nTerminado.\n");
  }

/*--------------------------------------------------------------------
 * FUNCION:  RecogeFuentes()
 * OBJETIVO: Recoger todos los ficheros fuentes de un objeto
 * ENTRADAS: La abreviatura del objeto
 * SALIDAS:  Ninguna. El programa puede abortar
 *------------------------------------------------------------------*/
void RecogeFuentes (Abrev)
char *Abrev;
  {
  char  Sigue;
  char  Aux[LONG_PALABRA], NombreFichero[LONG_FICH_LARGO];
  short i;
  FILE *Fichero;

  strcpy (NombreFichero, Abrev);
  strcat (NombreFichero,".des");
  ArreglaSeparador (NombreFichero);
  Fichero = AbreFicheroLeer (NombreFichero);

  Sigue = 1;
  while ( Sigue )
    {
    LeePalabra (Fichero,Aux);
    Sigue = strcmp (Aux,"Fuente");
    }

  Sigue = 1;
  while ( Sigue )
    {
    LeePalabra (Fichero,Aux);
    if ( !strcmp (Aux,"Cabecera") )
      { Sigue = 0; }
    else
      { AlmacenaObjeto (Aux); }
    }
  fclose (Fichero);
  }

/*--------------------------------------------------------------------
 * FUNCION:  EscribeListaOlimpo()
 * OBJETIVO: Escribir el fichero Olimpo.lst
 * ENTRADAS: Ninguna, se usan las variables Objeto y TotalObjeto
 * SALIDAS:  El programa puede abortar si no se puede escribir
 *------------------------------------------------------------------*/
void EscribeListaOlimpo()
  {
  FILE *Salida;
  char  NombreFichero[LONG_FICH_LARGO];
  short i;

  strcpy (NombreFichero, "Olimpo");
  strcat (NombreFichero,".lst");
  ArreglaSeparador (NombreFichero);

  Salida = AbreFicheroGrabar (NombreFichero);

#ifdef PC
  for ( i=0 ; i<TotalObjeto-1 ; i++ )
    { fprintf (Salida, "+ %s%s &\n", Objeto[i], ".obj"); }
  fprintf (Salida, "+ %s%s", Objeto[TotalObjeto-1], ".obj");
#endif

#ifdef QL
  for ( i=0 ; i<TotalObjeto-1 ; i++ )
    { fprintf (Salida, "%s%s\n", Objeto[i], "_o"); }
  fprintf (Salida, "%s%s", Objeto[TotalObjeto-1], "_o");
#endif

  fclose (Salida);
  }

