Minor Updates:
- DateTimeCore: - Specify separator between date & time fof BiuildDateTimeStr(); - UtilCore: - Add UrlEncode() and UrlDecode() functions
This commit is contained in:
@@ -417,11 +417,12 @@ char const * BuildTimeStr( unsigned char Hours, unsigned char Minutes, unsigned
|
||||
|
||||
char const * BuildDateTimeStr( unsigned char Day, unsigned char Month, unsigned Year,
|
||||
unsigned char Hours, unsigned char Minutes, unsigned char Seconds,
|
||||
const char * DateSeparator, const char * TimeSeparator )
|
||||
const char * DateSeparator, const char * TimeSeparator, const char * Separator )
|
||||
{
|
||||
// Build String
|
||||
sprintf( ReturnStr, "%04d%s%02d%s%02d %02d%s%02d%s%02d",
|
||||
sprintf( ReturnStr, "%04d%s%02d%s%02d%s%02d%s%02d%s%02d",
|
||||
Year, ((DateSeparator)? DateSeparator : ""), Month, ((DateSeparator)? DateSeparator : ""), Day,
|
||||
Separator,
|
||||
Hours, ((TimeSeparator)? TimeSeparator : ""), Minutes, ((TimeSeparator)? TimeSeparator : ""), Seconds );
|
||||
|
||||
return (ReturnStr);
|
||||
@@ -457,7 +458,8 @@ char const * BuildTimeStr( const time_t EpochTime, bool LocalTime, const char *
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
char const * BuildDateTimeStr( const time_t EpochTime, bool LocalTime, const char * DateSeparator, const char * TimeSeparator )
|
||||
char const * BuildDateTimeStr( const time_t EpochTime, bool LocalTime,
|
||||
const char * DateSeparator, const char * TimeSeparator, const char * Separator )
|
||||
{
|
||||
unsigned char Day;
|
||||
unsigned char Month;
|
||||
|
||||
@@ -50,11 +50,12 @@ char const * BuildDateStr( unsigned char Day, unsigned char Month, unsigned Yea
|
||||
char const * BuildTimeStr( unsigned char Hours, unsigned char Minutes, unsigned char Seconds, const char * TimeSeparator = ":" );
|
||||
char const * BuildDateTimeStr( unsigned char Day, unsigned char Month, unsigned Year,
|
||||
unsigned char Hours, unsigned char Minutes, unsigned char Seconds,
|
||||
const char * DateSeparator = "/", const char * TimeSeparator = ":" );
|
||||
const char * DateSeparator = "/", const char * TimeSeparator = ":", const char * Separator = " " );
|
||||
|
||||
char const * BuildDateStr( const time_t EpochTime, bool LocalTime, const char * DateSeparator = "/" );
|
||||
char const * BuildTimeStr( const time_t EpochTime, bool LocalTime, const char * TimeSeparator = ":" );
|
||||
char const * BuildDateTimeStr( const time_t EpochTime, bool LocalTime, const char * DateSeparator = "/", const char * TimeSeparator = ":" );
|
||||
char const * BuildDateTimeStr( const time_t EpochTime, bool LocalTime,
|
||||
const char * DateSeparator = "/", const char * TimeSeparator = ":", const char * Separator = " " );
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
76
UtilCore.cpp
76
UtilCore.cpp
@@ -213,3 +213,79 @@ char * StrSearch( const char * Haystack, const char * Needle, const int Haystac
|
||||
return NULL;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool UrlEncode( const char * Input, char * Output, char ** EndPos )
|
||||
{
|
||||
int c;
|
||||
char h[] = "0123456789abcdef";
|
||||
char * Ipos = (char*)Input;
|
||||
char * Opos = Output;
|
||||
|
||||
if (!Ipos || !Opos) {
|
||||
if (*EndPos) *EndPos = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
while ((c = *Ipos)) {
|
||||
if ((('a' <= c) && (c <= 'z')) ||
|
||||
(('A' <= c) && (c <= 'Z')) ||
|
||||
(('0' <= c) && (c <= '9')) ||
|
||||
(c == '-') || (c == '_') || (c == '.')) {
|
||||
*Opos = *Ipos;
|
||||
Opos++;
|
||||
}
|
||||
else if (c == ' ') {
|
||||
*Opos = '+';
|
||||
Opos++;
|
||||
}
|
||||
else {
|
||||
Opos[0] = '%';
|
||||
Opos[1] = h[c >> 4];
|
||||
Opos[2] = h[c & 0x0f];
|
||||
Opos += 3;
|
||||
}
|
||||
Ipos++;
|
||||
}
|
||||
*Opos = 0;
|
||||
if (EndPos) *EndPos = Opos;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool UrlDecode( const char * Input, char * Output, char ** EndPos )
|
||||
{
|
||||
char c, c1, c2;
|
||||
char * Ipos = (char*)Input;
|
||||
char * Opos = Output;
|
||||
|
||||
if (!Ipos || !Opos) {
|
||||
if (EndPos) *EndPos = Output;
|
||||
return false;
|
||||
}
|
||||
|
||||
while ((c = *Ipos)) {
|
||||
if (c == '%') {
|
||||
if (!(c1 = tolower(Ipos[1])) ||
|
||||
!(c2 = tolower(Ipos[2])) ||
|
||||
!isxdigit(c1) || !isxdigit(c2))
|
||||
return false;
|
||||
c1 = (c1 <= '9')? (c1 - '0') : (c1 - 'a' + 10);
|
||||
c2 = (c2 <= '9')? (c2 - '0') : (c2 - 'a' + 10);
|
||||
*Opos = 16*c1 + c2;
|
||||
Ipos += 3;
|
||||
}
|
||||
else if (c == '+') {
|
||||
*Opos = ' ';
|
||||
Ipos++;
|
||||
}
|
||||
else {
|
||||
*Opos = c;
|
||||
Ipos++;
|
||||
}
|
||||
Opos++;
|
||||
}
|
||||
*Opos = 0;
|
||||
if (EndPos) *EndPos = Opos;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -33,6 +33,8 @@ inline u_int8_t HexToInt( char Digit ) {
|
||||
char * HexStrToBytes( const char * Str, const int Len, const char * Separator = NULL, char * OutBuf = NULL );
|
||||
char * BinStrToBytes( const char * Str, const int Len, const char * Separator = NULL, char * OutBuf = NULL );
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// Search string data
|
||||
char * StrSearch( const char * Haystack, const char * Needle, const int hLen = 0, const int nLen = 0 );
|
||||
|
||||
@@ -43,6 +45,11 @@ inline char * strlcase( char * Str ) {
|
||||
return Str;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// URL encoding & decoding
|
||||
bool UrlEncode( const char * Input, char * Output, char ** EndPos = NULL );
|
||||
bool UrlDecode( const char * Input, char * Output, char ** EndPos = NULL );
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user