/usr/include/wvstreams/wvbackslash.h is in libwvstreams-dev 4.6.1-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | /* -*- Mode: C++ -*-
* Worldvisions Weaver Software:
* Copyright (C) 2002 Net Integration Technologies, Inc.
*
* C-style backslash escaping and unescaping of strings.
*/
#ifndef __WVBACKSLASH_H
#define __WVBACKSLASH_H
#include "wvencoder.h"
/**
* An encoder that performs C-style backslash escaping of strings.
*
* Use this to escape control characters, unprintable characters,
* and optionally quotes or any other special printable characters
* into sequences of the form \\n, \\xFF, \\", etc...
*
* Supports reset().
*
*/
class WvBackslashEncoder : public WvEncoder
{
WvString nasties;
public:
/**
* Creates a C-style backslash encoder.
* nasties - the set of printable characters to escape
* in addition to the non-printable ones
* (should always contain at least backslash)
*/
WvBackslashEncoder(WvStringParm _nasties = "\\\"");
virtual ~WvBackslashEncoder() { }
protected:
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush);
virtual bool _reset();
};
/**
* An encoder that performs C-style backslash unescaping of strings.
*
* Recognizes the following sequences preceeded by backslash:
*
* - a: substitutes alarm bell (ascii 7)
* - b: substitutes backspace (ascii 8)
* - f: substitutes formfeed (ascii 12)
* - n: substitutes newline (ascii 10)
* - r: substitutes carriage return (ascii 13)
* - t: substitutes tab (ascii 9)
* - v: substitutes vertical tab (ascii 11)
* - 0: substitutes null (ascii 0)
* - 0xyz: substitutes character with octal encoding xyz
* - xxy: substitutes character with hex encoding xy
* - newline: substitutes space (line continuation sequence)
* - \\: substitutes backslash
* - otherwise substitutes the next character (strips the backslash)
*
*
* Supports reset().
*
*/
class WvBackslashDecoder : public WvEncoder
{
enum State
{ Initial, Escape, Hex1, Hex2, Octal1, Octal2, Octal3 };
State state;
WvInPlaceBuf tmpbuf;
int value;
public:
/** Creates a C-style backslash decoder. */
WvBackslashDecoder();
virtual ~WvBackslashDecoder() { }
protected:
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush);
virtual bool _reset();
private:
bool flushtmpbuf(WvBuf &outbuf);
};
#endif // __WVBACKSLASH_H
|