php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
encoding.c File Reference
#include "file.h"
#include "magic.h"
#include <string.h>
#include <stdlib.h>

Go to the source code of this file.

Data Structures

struct  accept_range
 

Macros

#define DPRINTF(a)
 
#define F   0 /* character never appears in text */
 
#define T   1 /* character appears in plain ASCII text */
 
#define I   2 /* character appears in ISO-8859 text */
 
#define X   3 /* character appears in non-ISO extended ASCII (Mac, IBM PC) */
 
#define LOOKS(NAME, COND)
 
#define XX   0xF1
 
#define AS   0xF0
 
#define S1   0x02
 
#define S2   0x13
 
#define S3   0x03
 
#define S4   0x23
 
#define S5   0x34
 
#define S6   0x04
 
#define S7   0x44
 
#define LOCB   0x80
 
#define HICB   0xBF
 
#define UCS16_NOCHAR(c)
 
#define UCS16_HISURR(c)
 
#define UCS16_LOSURR(c)
 

Functions

file_private int looks_ascii (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_utf8_with_BOM (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_utf7 (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_ucs16 (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_ucs32 (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_latin1 (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private int looks_extended (const unsigned char *, size_t, file_unichar_t *, size_t *)
 
file_private void from_ebcdic (const unsigned char *, size_t, unsigned char *)
 
file_protected int file_encoding (struct magic_set *ms, const struct buffer *b, file_unichar_t **ubuf, size_t *ulen, const char **code, const char **code_mime, const char **type)
 
file_protected int file_looks_utf8 (const unsigned char *buf, size_t nbytes, file_unichar_t *ubuf, size_t *ulen)
 

Variables

file_private char text_chars [256]
 
struct accept_range accept_ranges [16]
 
file_private unsigned char ebcdic_to_ascii []
 

Macro Definition Documentation

◆ AS

#define AS   0xF0

Definition at line 301 of file encoding.c.

◆ DPRINTF

#define DPRINTF ( a)

Definition at line 65 of file encoding.c.

◆ F

#define F   0 /* character never appears in text */

Definition at line 235 of file encoding.c.

◆ HICB

#define HICB   0xBF

Definition at line 311 of file encoding.c.

◆ I

#define I   2 /* character appears in ISO-8859 text */

Definition at line 237 of file encoding.c.

◆ LOCB

#define LOCB   0x80

Definition at line 310 of file encoding.c.

◆ LOOKS

#define LOOKS ( NAME,
COND )
Value:
looks_ ## NAME(const unsigned char *buf, size_t nbytes, file_unichar_t *ubuf, \
size_t *ulen) \
{ \
size_t i; \
\
*ulen = 0; \
\
for (i = 0; i < nbytes; i++) { \
int t = text_chars[buf[i]]; \
\
if (COND) \
return 0; \
\
ubuf[(*ulen)++] = buf[i]; \
} \
return 1; \
}
zend_ffi_ctype_name_buf buf
Definition ffi.c:4685
file_private char text_chars[256]
Definition encoding.c:240
unsigned long file_unichar_t
Definition file.h:506
#define file_private
Definition file.h:101

Definition at line 262 of file encoding.c.

◆ S1

#define S1   0x02

Definition at line 302 of file encoding.c.

◆ S2

#define S2   0x13

Definition at line 303 of file encoding.c.

◆ S3

#define S3   0x03

Definition at line 304 of file encoding.c.

◆ S4

#define S4   0x23

Definition at line 305 of file encoding.c.

◆ S5

#define S5   0x34

Definition at line 306 of file encoding.c.

◆ S6

#define S6   0x04

Definition at line 307 of file encoding.c.

◆ S7

#define S7   0x44

Definition at line 308 of file encoding.c.

◆ T

#define T   1 /* character appears in plain ASCII text */

Definition at line 236 of file encoding.c.

◆ UCS16_HISURR

#define UCS16_HISURR ( c)
Value:
((c) >= 0xd800 && (c) <= 0xdbff)

Definition at line 461 of file encoding.c.

◆ UCS16_LOSURR

#define UCS16_LOSURR ( c)
Value:
((c) >= 0xdc00 && (c) <= 0xdfff)

Definition at line 462 of file encoding.c.

◆ UCS16_NOCHAR

#define UCS16_NOCHAR ( c)
Value:
((c) >= 0xfdd0 && (c) <= 0xfdef)

Definition at line 460 of file encoding.c.

◆ X

#define X   3 /* character appears in non-ISO extended ASCII (Mac, IBM PC) */

Definition at line 238 of file encoding.c.

◆ XX

#define XX   0xF1

Definition at line 300 of file encoding.c.

Function Documentation

◆ file_encoding()

file_protected int file_encoding ( struct magic_set * ms,
const struct buffer * b,
file_unichar_t ** ubuf,
size_t * ulen,
const char ** code,
const char ** code_mime,
const char ** type )

Definition at line 75 of file encoding.c.

◆ file_looks_utf8()

file_protected int file_looks_utf8 ( const unsigned char * buf,
size_t nbytes,
file_unichar_t * ubuf,
size_t * ulen )

Definition at line 350 of file encoding.c.

◆ from_ebcdic()

file_private void from_ebcdic ( const unsigned char * buf,
size_t nbytes,
unsigned char * out )

Definition at line 651 of file encoding.c.

◆ looks_ascii()

file_private int looks_ascii ( const unsigned char * ,
size_t ,
file_unichar_t * ,
size_t *  )

◆ looks_extended()

file_private int looks_extended ( const unsigned char * ,
size_t ,
file_unichar_t * ,
size_t *  )

◆ looks_latin1()

file_private int looks_latin1 ( const unsigned char * ,
size_t ,
file_unichar_t * ,
size_t *  )

◆ looks_ucs16()

file_private int looks_ucs16 ( const unsigned char * bf,
size_t nbytes,
file_unichar_t * ubf,
size_t * ulen )

Definition at line 465 of file encoding.c.

◆ looks_ucs32()

file_private int looks_ucs32 ( const unsigned char * bf,
size_t nbytes,
file_unichar_t * ubf,
size_t * ulen )

Definition at line 525 of file encoding.c.

◆ looks_utf7()

file_private int looks_utf7 ( const unsigned char * buf,
size_t nbytes,
file_unichar_t * ubuf,
size_t * ulen )

Definition at line 441 of file encoding.c.

◆ looks_utf8_with_BOM()

file_private int looks_utf8_with_BOM ( const unsigned char * buf,
size_t nbytes,
file_unichar_t * ubuf,
size_t * ulen )

Definition at line 431 of file encoding.c.

Variable Documentation

◆ accept_ranges

struct accept_range accept_ranges[16]
Initial value:
= {
{ LOCB, HICB },
{ 0xA0, HICB },
{ LOCB, 0x9F },
{ 0x90, HICB },
{ LOCB, 0x8F },
}
#define HICB
Definition encoding.c:311
#define LOCB
Definition encoding.c:310

◆ ebcdic_to_ascii

file_private unsigned char ebcdic_to_ascii[]
Initial value:
= {
0, 1, 2, 3, 156, 9, 134, 127, 151, 141, 142, 11, 12, 13, 14, 15,
16, 17, 18, 19, 157, 133, 8, 135, 24, 25, 146, 143, 28, 29, 30, 31,
128, 129, 130, 131, 132, 10, 23, 27, 136, 137, 138, 139, 140, 5, 6, 7,
144, 145, 22, 147, 148, 149, 150, 4, 152, 153, 154, 155, 20, 21, 158, 26,
' ', 160, 161, 162, 163, 164, 165, 166, 167, 168, 213, '.', '<', '(', '+', '|',
'&', 169, 170, 171, 172, 173, 174, 175, 176, 177, '!', '$', '*', ')', ';', '~',
'-', '/', 178, 179, 180, 181, 182, 183, 184, 185, 203, ',', '%', '_', '>', '?',
186, 187, 188, 189, 190, 191, 192, 193, 194, '`', ':', '#', '@', '\'','=', '"',
195, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 196, 197, 198, 199, 200, 201,
202, 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', '^', 204, 205, 206, 207, 208,
209, 229, 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 210, 211, 212, '[', 214, 215,
216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, ']', 230, 231,
'{', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 232, 233, 234, 235, 236, 237,
'}', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 238, 239, 240, 241, 242, 243,
'\\',159, 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 244, 245, 246, 247, 248, 249,
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 250, 251, 252, 253, 254, 255
}

Definition at line 593 of file encoding.c.

◆ text_chars

file_private char text_chars[256]
Initial value:
= {
F, F, F, F, F, F, F, T, T, T, T, T, T, T, F, F,
F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T,
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, F,
X, X, X, X, X, T, X, X, X, X, X, X, X, X, X, X,
X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I
}
#define T
Definition encoding.c:236
#define X
Definition encoding.c:238
#define F
Definition encoding.c:235
#define I
Definition encoding.c:237

Definition at line 240 of file encoding.c.