#include <time.h>
#include <stdio.h>
#include <string.h>
#include "3binary.h"


BINDATE3 * fido_2_type3b (char *str,BINDATE3 *date) {

  /* translate a fido/sea datestring to a unix timestamp
   * sscanf statements from Folkert Wijnstra via NET_DEV
   */

  int             month = 0,
                  day,
                  year,
                  hours,
                  minutes,
                  seconds = 0;
  char            monthStr[20] = "";

  if ((sscanf (str, "%d %s %d %d:%d:%d", &day, monthStr, &year,
               &hours, &minutes, &seconds) < 5) &&
      (sscanf (str, "%d-%d-%d %d:%d:%d", &day, &month, &year,
               &hours, &minutes, &seconds) < 5) &&
      (sscanf (&str[4], "%d %s %d %d:%d", &day, monthStr, &year,
               &hours, &minutes) < 5)) {  /* Date not recognized */
    return NULL;
  }
  else {                    /* Date was recognized (convert monthStr to
                             * month if necessary) */

    if (!month && *monthStr) {

      int             x;
      static char    *months[] = {"Jan", "Feb", "Mar", "Apr", "May",
                                  "Jun", "Jul", "Aug", "Sep", "Oct",
                                  "Nov", "Dec"};

      for (x = 0; x < 12; x++) {
        if (!strnicmp (monthStr, months[x], 3)) {
          month = x + 1;
          break;
        }
      }
    }

    if (hours > 23)
      hours = 0;

    date->year = year + 1900;   /* duh... */
    date->mon = (char)month;
    date->mday = (char)day;
    date->hour = (char)hours;
    date->min = (char)minutes;
    date->sec = (char)seconds;
    date->pad = 0;
    date->gmtoff = -32767;
  }

  return date;
}



char * type3b_2_fido (BINDATE3 *date) {

  static char    *months[] = {"Jan", "Feb", "Mar", "Apr", "May",
                              "Jun", "Jul", "Aug", "Sep", "Oct",
                              "Nov", "Dec"};
  static char ret[21];

  sprintf(ret,"%02hu %s %02u  %02hu:%02hu:%02hu",date->mday,
          months[date->mon - 1],(date->year % 100),date->hour,
          date->min,date->sec);
  return ret;
}
