luckfox-pico-sdk/project/app/ipcweb/ipcweb-backend/ipcweb-env-arm/include/cgicc/CgiUtils.h
luckfox-eng29 8f34c2760d project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches.
project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between
the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door
for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more
usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp:
Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for
compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem.
sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device
tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately.
sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick
boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades.
sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for
fastboot.

Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
2024-10-14 09:47:04 +08:00

209 lines
6.0 KiB
C++

/* -*-mode:c++; c-file-style: "gnu";-*- */
/*
* $Id: CgiUtils.h,v 1.17 2014/04/23 20:55:03 sebdiaz Exp $
*
* Copyright (C) 1996 - 2004 Stephen F. Booth <sbooth@gnu.org>
* 2007 Sebastien DIAZ <sebastien.diaz@gmail.com>
* Part of the GNU cgicc library, http://www.gnu.org/software/cgicc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*/
#ifndef _CGIUTILS_H_
#define _CGIUTILS_H_ 1
#ifdef __GNUG__
# pragma interface
#endif
/*! \file CgiUtils.h
* \brief A collection of utility functions.
*
* These utility functions are used internally by cgicc to
* decode posted form data, and to read/write from streams.
*/
#include <new>
#include <string>
#include <fstream>
#include "CgiDefs.h"
namespace cgicc {
/*!
* \brief Compare two strings for equality, ignoring case.
*
* For case-sensitive comparison, use (s1 == s2);
* \param s1 The first string to compare
* \param s2 The second string to compare
* \return \c true if the strings are equal, \c false if they are not
*/
CGICC_API bool
stringsAreEqual(const std::string& s1,
const std::string& s2);
/*!
* \brief Compare two strings for equality, ignoring case.
*
* For case-sensitive comparison, use (s1 == s2);
* \param s1 The first string to compare
* \param s2 The second string to compare
* \param n The number of characters to compare.
* \return \c true if the strings are equal, \c false if they are not
*/
CGICC_API bool
stringsAreEqual(const std::string& ss1,
const std::string& ss2,
size_t n);
/*!
* \brief Convert encoded characters in form data to normal ASCII.
*
* For example, "%21" is converted to '!' and '+' is converted to a space.
* Normally, this is called internally to decode the query string or post
* data.
* \param src The src string containing the encoded characters
* \return The converted string
*/
CGICC_API std::string
form_urldecode(const std::string& src);
/*!
* \brief Convert an ASCII string to a URL-safe string.
*
* For example, '!' is converted to "%21" and ' ' is converted to '+'.
* \param src The src string containing the characters to encode
* \return The converted string
*/
CGICC_API std::string
form_urlencode(const std::string& src);
/*!
* \brief Convert an ASCII character to its hexadecimal equivalent.
*
* For example, after the call
* \code
* string s = charToHex(':');
* \endcode
* \c s will have a value of "3A".
* Normally, this is called internally to encode characters by
* escapeString.
* \param c The character to encode
* \return A string representing the hexadecimal value of c
*/
CGICC_API std::string
charToHex(char c);
/*!
* \brief Convert a hex-encoded character to its ASCII equivalent.
*
* For example, after the call
* \code
* char c = hexToChar('2', '1');
* \endcode
* \c c will have a value of '!'.
* Normally, this is called internally to decode encoded characters in
* the query string or post data.
* \param first The first hex digit
* \param second The second hex digit
* \return The ASCII character
*/
CGICC_API char
hexToChar(char first,
char second);
/*!
* \brief Extract a substring contained within two separators.
*
* For example, after the call
* \code
* std::string data = "11foo22";
* std::string res;
* res = extractBetween(data, "11", "22");
* \endcode
* \c res will be "foo".
* \param data The data to search.
* \param separator1 The first logical separator.
* \param separator2 The second logical separator.
* \return The substring between the separators.
*/
std::string
extractBetween(const std::string& data,
const std::string& separator1,
const std::string& separator2);
/*!
* \brief Extract a substring contained between a separator.
*
* This function is used internally to decode \c multipart/form-data
* \param data The data to search.
* \param separator The separator.
* \return The substring between the separator.
*/
inline std::string
extractBetween(const std::string& datas,
const std::string& separators)
{ return extractBetween(datas, separators, separators); }
/*!
* \brief Write a string to an ostream.
*
* This function is used internally for saving environments.
* \param out The ostream to which to write.
* \param s The string to write.
*/
void
writeString(std::ostream& out,
const std::string& s);
/*!
* \brief Write a long to an ostream.
*
* This function is used internally for saving environments.
* \param out The ostream to which to write.
* \param l The long to write.
*/
void
writeLong(std::ostream& out,
unsigned long l);
/*!
* \brief Read a string from an istream.
*
* This function is used internally by cgicc for restoring environments.
* \param in The istream from which to read.
* \return The string read.
*/
std::string
readString(std::istream& in);
/*!
* \brief Read a long from an istream.
*
* This function is used internally by cgicc for restoring environments.
* \param in The istream from which to read.
* \return The long read.
*/
unsigned long
readLong(std::istream& in);
} // namespace cgicc
#endif /* ! _CGIUTILS_H_ */