c-ipfs/repo/config/config.c

77 lines
2.2 KiB
C

//
// config.c
// c-ipfs
//
// Created by John Jones on 10/27/16.
// Copyright © 2016 JMJAtlanta. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "config.h"
#include "../../os/utils.h"
/***
* public
*/
/***
* gets the default path from the environment variable and/or the homedir struct
* NOTE: this allocates memory for result. Clean up after yourself.
* @param result where the result string will reside.
* @returns true(1) on success, or false(0)
*/
int config_get_default_path_root(char* result) {
char* root = os_utils_getenv("IPFS_PATH");
if (root == NULL) {
root = os_utils_getenv("HOME");
result = malloc( strlen(root) + 7);
if (result == NULL)
return 0;
strncpy(result, root, strlen(root)+1);
strncat(result, "/.ipfs", 7);
} else {
char* result = malloc(strlen(root)+1);
if (result == NULL)
return 0;
strncpy(result, root, strlen(root)+1);
}
return 1;
}
/***
* Returns the path "extension" relative to the configuration root.
* If an empty string is provided for config_root, the default root
* is used. NOTE: be sure to dispose of the memory allocated for result.
* @param config_root the path to the root of the configuration
* @param extension the extension to add to the path
* @param result the result of config_root with extension appended
* @returns true(1) if everything went okay, false(0) otherwise
*/
int config_path(char* config_root, char* extension, char* result, int max_len) {
if (strlen(config_root) == 0) {
char* default_path;
int retVal = config_get_default_path_root(default_path);
if (!retVal)
return retVal;
retVal = os_utils_filepath_join(default_path, extension, result, max_len);
free(default_path);
return retVal;
}
return os_utils_filepath_join(config_root, extension, result, max_len);
}
/**
* provide the full path of the config file, given the directory.
* NOTE: This allocates memory for result. Make sure to clean up after yourself.
* @param path the path to the config file (without the actual file name)
* @param result the full filename including the path
* @returns true(1) on success, false(0) otherwise
*/
int config_get_file_name(char* path, char* result) {
return 0;
}