1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef _LINUX_STRING_HELPERS_H_
- #define _LINUX_STRING_HELPERS_H_
- #include <linux/types.h>
- /* Descriptions of the types of units to
- * print in */
- enum string_size_units {
- STRING_UNITS_10, /* use powers of 10^3 (standard SI) */
- STRING_UNITS_2, /* use binary powers of 2^10 */
- };
- int string_get_size(u64 size, enum string_size_units units,
- char *buf, int len);
- #define UNESCAPE_SPACE 0x01
- #define UNESCAPE_OCTAL 0x02
- #define UNESCAPE_HEX 0x04
- #define UNESCAPE_SPECIAL 0x08
- #define UNESCAPE_ANY \
- (UNESCAPE_SPACE | UNESCAPE_OCTAL | UNESCAPE_HEX | UNESCAPE_SPECIAL)
- /**
- * string_unescape - unquote characters in the given string
- * @src: source buffer (escaped)
- * @dst: destination buffer (unescaped)
- * @size: size of the destination buffer (0 to unlimit)
- * @flags: combination of the flags (bitwise OR):
- * %UNESCAPE_SPACE:
- * '\f' - form feed
- * '\n' - new line
- * '\r' - carriage return
- * '\t' - horizontal tab
- * '\v' - vertical tab
- * %UNESCAPE_OCTAL:
- * '\NNN' - byte with octal value NNN (1 to 3 digits)
- * %UNESCAPE_HEX:
- * '\xHH' - byte with hexadecimal value HH (1 to 2 digits)
- * %UNESCAPE_SPECIAL:
- * '\"' - double quote
- * '\\' - backslash
- * '\a' - alert (BEL)
- * '\e' - escape
- * %UNESCAPE_ANY:
- * all previous together
- *
- * Returns amount of characters processed to the destination buffer excluding
- * trailing '\0'.
- *
- * Because the size of the output will be the same as or less than the size of
- * the input, the transformation may be performed in place.
- *
- * Caller must provide valid source and destination pointers. Be aware that
- * destination buffer will always be NULL-terminated. Source string must be
- * NULL-terminated as well.
- */
- int string_unescape(char *src, char *dst, size_t size, unsigned int flags);
- static inline int string_unescape_inplace(char *buf, unsigned int flags)
- {
- return string_unescape(buf, buf, 0, flags);
- }
- static inline int string_unescape_any(char *src, char *dst, size_t size)
- {
- return string_unescape(src, dst, size, UNESCAPE_ANY);
- }
- static inline int string_unescape_any_inplace(char *buf)
- {
- return string_unescape_any(buf, buf, 0);
- }
- #endif
|