/*   -*- coding: utf-8 -*-  */

/******************************************************************************
*
*               Module   : Buffer
*               Fichier  : BufferTime.c
*               Auteur   : J. DUCLOY
*               Date     : Septembre 2001
*
******************************************************************************/

#include "Buffer.h"
#include <time.h>

time_t    BufferTimeData;
struct tm * BufferTimeTmData;

char *BufferAppendIsoDateOfTheDay(Buffer *b)
{
  char *start;
  BufferTimeData=time(NULL);
  BufferTimeTmData=gmtime(&BufferTimeData);
  start=BufferString(b)+strlen(BufferString(b));
  BufferStrcat(b, "00000000");
  strftime(start, 9, "%Y%m%d", BufferTimeTmData);
  return start;
}
static Buffer *bufDate=NULL;

char *BufferAppendDirDateOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);
  if (!bufDate) 
    {
      bufDate=NewBuffer();
      BufferAppendIsoDateOfTheDay(bufDate);
    }
  BufferStrncat(b, BufferString(bufDate),4);
  BufferStrcat (b, "/");
  BufferStrncat(b, BufferString(bufDate)+4,2);
  BufferStrcat (b, "/");
  BufferStrncat(b, BufferString(bufDate)+6,2);
  return start;
}

char *BufferAppendYearOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);
  if (!bufDate) 
    {
      bufDate=NewBuffer();
      BufferAppendIsoDateOfTheDay(bufDate);
    }
  BufferStrncat(b, BufferString(bufDate),4);
  return start;
}

char *BufferFrenchMonthOfTheDay()
{
  if (!bufDate) 
    {
      bufDate=NewBuffer();
      BufferAppendIsoDateOfTheDay(bufDate);
    }
  if (BufferString(bufDate)[4]=='1')
    {
      switch(BufferString(bufDate)[5])
	{
	case '0': return ("octobre");
	case '1': return ("novembre");
	case '2': return ("décembre");
	}
    }
  switch(BufferString(bufDate)[5])
    {
    case '1': return ("janvier");
    case '2': return ("février");
    case '3': return ("mars");
    case '4': return ("avril");
    case '5': return ("mai");
    case '6': return ("juin");
    case '7': return ("juillet");
    case '8': return ("aout");
    case '9': return ("septembre");
    }
}

char *BufferAppendFrenchMonthOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);
  BufferStrcat(b, BufferFrenchMonthOfTheDay());
  return start;
}

char *BufferAppendDayOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);
  if (!bufDate) 
    {
      bufDate=NewBuffer();
      BufferAppendIsoDateOfTheDay(bufDate);
    }
  if (BufferString(bufDate)[6]=='1') BufferStrncat(b, BufferString(bufDate)+6,2);
  else BufferStrncat(b, BufferString(bufDate)+7,1);
  return start;
}

char *BufferAppendFrenchDateOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);
  BufferAppendDayOfTheDay(b);
  BufferStrcat(b, " ");
  BufferAppendFrenchMonthOfTheDay(b);
  BufferStrcat(b, " ");
  BufferAppendYearOfTheDay(b);
  return start;
}


char *BufferAppendDirFrenchDateOfTheDay(Buffer *b)
{
  char* start;
  start=BufferString(b)+BufferLen(b);

  BufferAppendYearOfTheDay(b);
  BufferStrcat(b, "/");
  BufferAppendFrenchMonthOfTheDay(b);
  BufferStrcat(b, "/");
  BufferAppendDayOfTheDay(b);

  return start;
}

char *BufferFrenchDateOfTheDay()
{
  static Buffer * remanentDate=NULL;
  if (!remanentDate)
    {
      remanentDate=NewBuffer();
      BufferAppendFrenchDateOfTheDay(remanentDate);
    }
  return BufferString(remanentDate);
}

char *BufferDirFrenchDateOfTheDay()
{
  static Buffer * remanentDate=NULL;
  if (!remanentDate)
    {
      remanentDate=NewBuffer();
      BufferAppendDirFrenchDateOfTheDay(remanentDate);
    }
  return BufferString(remanentDate);
}
