libclamav/textnorm.h
3064a542
 /*
  *  Generic text normalizer.
  *
e1cbc270
  *  Copyright (C) 2013-2019 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
  *  Copyright (C) 2008-2013 Sourcefire, Inc.
2023340a
  *
  *  Authors: Török Edvin
3064a542
  *
  *  This program is free software; you can redistribute it and/or modify
2023340a
  *  it under the terms of the GNU General Public License version 2 as
3064a542
  *  published by the Free Software Foundation.
  *
  *  This program 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 General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
  */
 
c1bc49e7
 #ifndef __TEXTNORM_H
 #define __TEXTNORM_H
 
 #include "fmap.h"
 
3064a542
 struct text_norm_state {
288057e9
     unsigned char *out;
     size_t out_len;
     size_t out_pos;
     int space_written;
3064a542
 };
 
c1bc49e7
 #define ASCII_FILE_BUFF_LENGTH 131072
 #define MAX_ASCII_FILE_SIZE 20000000
 
288057e9
 #define MIN_3(x, y, z) ((x) < (y) ? ((x) < (z) ? (x) : (z)) : ((y) < (z) ? (y) : (z)))
c1bc49e7
 
3064a542
 int text_normalize_init(struct text_norm_state *state, unsigned char *out, size_t out_len);
288057e9
 void text_normalize_reset(struct text_norm_state *state);
bb1e844c
 size_t text_normalize_buffer(struct text_norm_state *state, const unsigned char *buf, const size_t buf_len);
c1bc49e7
 size_t text_normalize_map(struct text_norm_state *state, fmap_t *map, size_t offset);
 
 #endif