/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#pragma once
#include "common.h"

#define FILE_CHILD_TYPE_DIR 0x00
#define FILE_CHILD_TYPE_FILE 0x01
#define FILE_CHILD_NAME_MAX 512
#define FILE_CHILD_COUNT_MAX 64

#if defined(_MSC_VER)
  #include <direct.h>
  #include <windows.h>
  #define getcwd _getcwd
  #define FILE_PATH_SEP '\\'
  #define fileMkdir(path, perms) _mkdir(path)
#elif defined(__GNUC__)
  #include <unistd.h>
  #include <dirent.h>
  #include <sys/stat.h>
  #define FILE_PATH_SEP '/'
  #define fileMkdir(path, perms) mkdir(path, perms)
#endif

void fileNormalizeSlashes(char *string);

void fileMkdirp(char *path);

void assetReadString(FILE *file, char *buffer);

void fileGetDirectory(char *file, char* buffer);

bool fileListChildren(
  char *directory,
  char *buffer,
  int32_t *count,
  uint8_t *types,
  char **children
);