X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspstring.h;h=17093eb7cfbb49a5646ed80e0d4d98399287147f;hb=635cb9d65f6d7f6758ae8ed874da00c8d94b6e39;hp=89abed94f4a8433498c2422fdb94810a97c3c5da;hpb=bab14f0dd2345c9d7dcbc47c918563709e1ac094;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspstring.h b/include/inspstring.h index 89abed94f..17093eb7c 100644 --- a/include/inspstring.h +++ b/include/inspstring.h @@ -1 +1,60 @@ -/* +------------------------------------+ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * * InspIRCd: (C) 2002-2007 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ #ifndef __IN_INSPSTRING_H #define __IN_INSPSTRING_H #include "inspircd_config.h" #include #include #ifndef HAS_STRLCPY /** strlcpy() implementation for systems that don't have it (linux) */ CoreExport size_t strlcpy(char *dst, const char *src, size_t siz); /** strlcat() implementation for systems that don't have it (linux) */ CoreExport size_t strlcat(char *dst, const char *src, size_t siz); #endif /** charlcat() will append one character to a string using the same * safety scemantics as strlcat(). * @param x The string to operate on * @param y the character to append to the end of x * @param z The maximum allowed length for z including null terminator */ CoreExport int charlcat(char* x,char y,int z); /** charremove() will remove all instances of a character from a string * @param mp The string to operate on * @param remove The character to remove */ CoreExport bool charremove(char* mp, char remove); /** strnewdup() is an implemenetation of strdup() which calls operator new * rather than malloc to allocate the new string, therefore allowing it to * be hooked into the C++ memory manager, and freed with operator delete. * This is required for windows, where we override operators new and delete * to allow for global allocation between modules and the core. */ inline char * strnewdup(const char * s1) { size_t len = strlen(s1) + 1; char * p = new char[len]; memcpy(p, s1, len); return p; } #endif \ No newline at end of file +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2013, 2018 Sadie Powell + * Copyright (C) 2013 Daniel Vassdal + * Copyright (C) 2013 Attila Molnar + * Copyright (C) 2012 Robby + * Copyright (C) 2010 Daniel De Graaf + * Copyright (C) 2008 Robin Burchell + * Copyright (C) 2008 Pippijn van Steenhoven + * Copyright (C) 2007, 2010 Craig Edwards + * Copyright (C) 2007 Dennis Friis + * + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#include + +/** Sets ret to the formatted string. last is the last parameter before ..., and format is the format in printf-style */ +#define VAFORMAT(ret, last, format) \ + do { \ + va_list _vaList; \ + va_start(_vaList, last); \ + ret.assign(InspIRCd::Format(_vaList, format)); \ + va_end(_vaList); \ + } while (false); + +/** Compose a hex string from raw data. + * @param raw The raw data to compose hex from (can be NULL if rawsize is 0) + * @param rawsize The size of the raw data buffer + * @return The hex string + */ +CoreExport std::string BinToHex(const void* raw, size_t rawsize); + +/** Base64 encode */ +CoreExport std::string BinToBase64(const std::string& data, const char* table = NULL, char pad = 0); +/** Base64 decode */ +CoreExport std::string Base64ToBin(const std::string& data, const char* table = NULL); + +/** Compose a hex string from the data in a std::string. + * @param data The data to compose hex from + * @return The hex string. + */ +inline std::string BinToHex(const std::string& data) +{ + return BinToHex(data.data(), data.size()); +}