Blame apache2/libinjection/libinjection_html5.h

Packit 284210
#ifndef LIBINJECTION_HTML5
Packit 284210
#define LIBINJECTION_HTML5
Packit 284210
Packit 284210
#ifdef __cplusplus
Packit 284210
extern "C" {
Packit 284210
#endif
Packit 284210
Packit 284210
/* pull in size_t */
Packit 284210
Packit 284210
#include <stddef.h>
Packit 284210
Packit 284210
enum html5_type {
Packit 284210
    DATA_TEXT
Packit 284210
    , TAG_NAME_OPEN
Packit 284210
    , TAG_NAME_CLOSE
Packit 284210
    , TAG_NAME_SELFCLOSE
Packit 284210
    , TAG_DATA
Packit 284210
    , TAG_CLOSE
Packit 284210
    , ATTR_NAME
Packit 284210
    , ATTR_VALUE
Packit 284210
    , TAG_COMMENT
Packit 284210
    , DOCTYPE
Packit 284210
};
Packit 284210
Packit 284210
enum html5_flags {
Packit 284210
  DATA_STATE
Packit 284210
  , VALUE_NO_QUOTE
Packit 284210
  , VALUE_SINGLE_QUOTE
Packit 284210
  , VALUE_DOUBLE_QUOTE
Packit 284210
  , VALUE_BACK_QUOTE
Packit 284210
};
Packit 284210
Packit 284210
struct h5_state;
Packit 284210
typedef int (*ptr_html5_state)(struct h5_state*);
Packit 284210
Packit 284210
typedef struct h5_state {
Packit 284210
    const char* s;
Packit 284210
    size_t len;
Packit 284210
    size_t pos;
Packit 284210
    int is_close;
Packit 284210
    ptr_html5_state state;
Packit 284210
    const char* token_start;
Packit 284210
    size_t token_len;
Packit 284210
    enum html5_type token_type;
Packit 284210
} h5_state_t;
Packit 284210
Packit 284210
Packit 284210
void libinjection_h5_init(h5_state_t* hs, const char* s, size_t len, enum html5_flags);
Packit 284210
int libinjection_h5_next(h5_state_t* hs);
Packit 284210
Packit 284210
#ifdef __cplusplus
Packit 284210
}
Packit 284210
#endif
Packit 284210
#endif