#if defined(__FreeBSD__)
#include "freebsd.h"
#include "../config.h"
#include "../resolution.h"
#include "../wm.h"

#include <string.h>
#include <stdlib.h>

char *LOGO[23];
char *LOGO_SMALL[23];
const char *color;
const char *titlecolor;
size_t logosize = 16;
int minsize = MIN_SIZE;

void getOS() {
  if (!customcolor) color = RED;
  else color = customcolor;
  if (!customtitlecolor) titlecolor = RED;
  else titlecolor = customtitlecolor;
  const char *res = display_resolution();
  if (!res) minsize--;
  else free((void *)res);
  const char *wm = display_wm();
  if (!wm) minsize--;
  else free((void *)wm);

  if (!isbiglogo && !issmalllogo) {
    for (int i = 0; i < LOGO_SIZE; i++) {
      LOGO[i] = NULL;
      LOGO_SMALL[i] = NULL;
    }
  }

  if (!isbiglogo) {
    LOGO[0]  = WHITE "```                        " RED "`       " RESET;
    LOGO[1]  = WHITE "  ` `.....---..." RED "....--.```   -/    " RESET;
    LOGO[2]  = WHITE "  +o   .--`         " RED "/y:`      +.   " RESET;
    LOGO[3]  = WHITE "   yo`:.            " RED ":o      `+-    " RESET;
    LOGO[4]  = WHITE "    y/               " RED "-/`   -o/     " RESET;
    LOGO[5]  = WHITE "   .-                  " RED "::/sy+:.    " RESET;
    LOGO[6]  = WHITE "   /                     " RED "`--  /    " RESET;
    LOGO[7]  = WHITE "  `:                          " RED ":`   " RESET;
    LOGO[8] = WHITE "  `:                          " RED ":`   " RESET;
    LOGO[9] = WHITE "   /                          " RED "/    " RESET;
    LOGO[10] = WHITE "   .-                        " RED "-.    " RESET;
    LOGO[11] = WHITE "    --                      " RED "-.     " RESET;
    LOGO[12] = WHITE "     `:`                  " RED "`:`      " RESET;
    LOGO[13] = RED   "       .--             `--.        " RESET;
    LOGO[14] = RED   "          .---.....----.           " RESET;
    LOGO[15] = RED   "                                   " RESET;
  } else {
    logosize = biglogoi;
    if (biglogoi < (size_t)minsize) {
      for (size_t i = biglogoi; i < (size_t)minsize; i++) {
        LOGO[i] = WHITE "                                   " RESET;
      }
    }
  }

  if (!issmalllogo) {
    LOGO_SMALL[0] = RED "/\\,-'''''-,/\\  " RESET;
    LOGO_SMALL[1] = RED "\\_)       (_/  " RESET;
    LOGO_SMALL[2] = RED "|           |  " RESET;
    LOGO_SMALL[3] = RED "|           |  " RESET;
    LOGO_SMALL[4] = RED " ;         ;   " RESET;
    LOGO_SMALL[5] = RED "  '-_____-'    " RESET;
    for (int i = 6; i < minsize; i++) {
      LOGO_SMALL[i]  = RED "               " RESET;
    }
  } else {
    if (smalllogoi < (size_t)minsize) {
      for (size_t i = smalllogoi; i < (size_t)minsize; i++) {
        LOGO_SMALL[i] = WHITE "               " RESET;
      }
    }
  }
}
#endif