#include "env.h"

env *init_envs() {
  env *envs = malloc(sizeof(env) * 3);

  if (envs == NULL)
    return NULL;

  envs[0].key = "PWD";
  envs[0].value = "/";

  envs[1].key = "USER";
  envs[1].value = "iatic";

  envs[2].key = "HOST";
  envs[2].value = "tartempion";

  return envs;
}

env *get_instance() {
  static env *instance = NULL;

  if (instance == NULL) {
    instance = init_envs();
  }

  return instance;
}

int get_env_len(env *envs) {
  int i = 0;
  while (envs[i].key != NULL) {
    i++;
  }
  return i;
}

char *get_env_value(char *key) {
  env *envs = get_instance();
  for (int i = 0; i < get_env_len(envs); i++) {
    if (strcmp(envs[i].key, key) == 0) {
      return envs[i].value;
    }
  }
  return NULL;
}

int set_env_value(char *key, char *value) {
  env *envs = get_instance();

  for (int i = 0; i < get_env_len(envs); i++) {
    if (strcmp(envs[i].key, key) == 0) {
      envs[i].value = strdup(value);
      return 1;
    }
  }
  return 0;
}