Example #1
0
bool ethash_get_default_dirname(char* strbuf, size_t buffsize)
{
	static const char dir_suffix[] = ".ethash/";
	strbuf[0] = '\0';
	char* home_dir = getenv("HOME");
	if (!home_dir || strlen(home_dir) == 0)
	{
		struct passwd* pwd = getpwuid(getuid());
		if (pwd)
			home_dir = pwd->pw_dir;
		if (!home_dir)
			return false;
	}
	
	size_t len = strlen(home_dir);
	if (!ethash_strncat(strbuf, buffsize, home_dir, len)) {
		return false;
	}
	if (home_dir[len] != '/') {
		if (!ethash_strncat(strbuf, buffsize, "/", 1)) {
			return false;
		}
	}
	return ethash_strncat(strbuf, buffsize, dir_suffix, sizeof(dir_suffix));
}
Example #2
0
bool ethash_get_default_dirname(char* strbuf, size_t buffsize)
{
	static const char dir_suffix[] = "Appdata\\Ethash\\";
	strbuf[0] = '\0';
	if (!SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, (WCHAR*)strbuf))) {
		return false;
	}
	if (!ethash_strncat(strbuf, buffsize, "\\", 1)) {
		return false;
	}

	return ethash_strncat(strbuf, buffsize, dir_suffix, sizeof(dir_suffix));
}
Example #3
0
char* ethash_io_create_filename(
	char const* dirname,
	char const* filename,
	size_t filename_length
)
{
	size_t dirlen = strlen(dirname);
	size_t dest_size = dirlen + filename_length + 1;
	if (dirname[dirlen] != '\\' || dirname[dirlen] != '/') {
		dest_size += 1;
	}
	char* name = malloc(dest_size);
	if (!name) {
		return NULL;
	}

	name[0] = '\0';
	ethash_strncat(name, dest_size, dirname, dirlen);
	if (dirname[dirlen] != '\\' || dirname[dirlen] != '/') {
		ethash_strncat(name, dest_size, "\\", 1);
	}
	ethash_strncat(name, dest_size, filename, filename_length);
	return name;
}