Minor Updates:

- DateTimeCore:
  - Specify separator between date & time fof BiuildDateTimeStr();
- UtilCore:
  - Add UrlEncode() and UrlDecode() functions
This commit is contained in:
Charl Wentzel
2019-10-06 19:38:11 +02:00
parent c2c08c527c
commit 7c77d564a7
4 changed files with 91 additions and 5 deletions

View File

@@ -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, char const * BuildDateTimeStr( unsigned char Day, unsigned char Month, unsigned Year,
unsigned char Hours, unsigned char Minutes, unsigned char Seconds, 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 // 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, Year, ((DateSeparator)? DateSeparator : ""), Month, ((DateSeparator)? DateSeparator : ""), Day,
Separator,
Hours, ((TimeSeparator)? TimeSeparator : ""), Minutes, ((TimeSeparator)? TimeSeparator : ""), Seconds ); Hours, ((TimeSeparator)? TimeSeparator : ""), Minutes, ((TimeSeparator)? TimeSeparator : ""), Seconds );
return (ReturnStr); 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 Day;
unsigned char Month; unsigned char Month;

View File

@@ -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 * BuildTimeStr( unsigned char Hours, unsigned char Minutes, unsigned char Seconds, const char * TimeSeparator = ":" );
char const * BuildDateTimeStr( unsigned char Day, unsigned char Month, unsigned Year, char const * BuildDateTimeStr( unsigned char Day, unsigned char Month, unsigned Year,
unsigned char Hours, unsigned char Minutes, unsigned char Seconds, 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 * BuildDateStr( const time_t EpochTime, bool LocalTime, const char * DateSeparator = "/" );
char const * BuildTimeStr( const time_t EpochTime, bool LocalTime, const char * TimeSeparator = ":" ); 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 = " " );
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@@ -213,3 +213,79 @@ char * StrSearch( const char * Haystack, const char * Needle, const int Haystac
return NULL; 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;
}
//---------------------------------------------------------------------------

View File

@@ -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 * 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 ); char * BinStrToBytes( const char * Str, const int Len, const char * Separator = NULL, char * OutBuf = NULL );
//---------------------------------------------------------------------------
// Search string data // Search string data
char * StrSearch( const char * Haystack, const char * Needle, const int hLen = 0, const int nLen = 0 ); 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; 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 );
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------