mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
f4f4caab0e
I wanted a tiny scriptable meltdown proof way to run userspace programs and visualize how program execution impacts memory. It helps to explain how things like Actually Portable Executable works. It can show you how the GCC generated code is going about manipulating matrices and more. I didn't feel fully comfortable with Qemu and Bochs because I'm not smart enough to understand them. I wanted something like gVisor but with much stronger levels of assurances. I wanted a single binary that'll run, on all major operating systems with an embedded GPL barrier ZIP filesystem that is tiny enough to transpile to JavaScript and run in browsers too. https://justine.storage.googleapis.com/emulator625.mp4
61 lines
1.7 KiB
C
61 lines
1.7 KiB
C
#ifndef COSMOPOLITAN_LIBC_REGEX_REGEX_H_
|
|
#define COSMOPOLITAN_LIBC_REGEX_REGEX_H_
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
#if 0
|
|
/*───────────────────────────────────────────────────────────────────────────│─╗
|
|
│ cosmopolitan § regular expressions ─╬─│┼
|
|
╚────────────────────────────────────────────────────────────────────────────│*/
|
|
#endif
|
|
|
|
#define REG_EXTENDED 1
|
|
#define REG_ICASE 2
|
|
#define REG_NEWLINE 4
|
|
#define REG_NOSUB 8
|
|
|
|
#define REG_NOTBOL 1
|
|
#define REG_NOTEOL 2
|
|
|
|
#define REG_OK 0
|
|
#define REG_NOMATCH 1
|
|
#define REG_BADPAT 2
|
|
#define REG_ECOLLATE 3
|
|
#define REG_ECTYPE 4
|
|
#define REG_EESCAPE 5
|
|
#define REG_ESUBREG 6
|
|
#define REG_EBRACK 7
|
|
#define REG_EPAREN 8
|
|
#define REG_EBRACE 9
|
|
#define REG_BADBR 10
|
|
#define REG_ERANGE 11
|
|
#define REG_ESPACE 12
|
|
#define REG_BADRPT 13
|
|
|
|
#define REG_ENOSYS -1
|
|
|
|
typedef long regoff_t;
|
|
|
|
struct Regex {
|
|
size_t re_nsub;
|
|
void *__opaque, *__padding[4];
|
|
size_t __nsub2;
|
|
char __padding2;
|
|
};
|
|
|
|
struct RegexMatch {
|
|
regoff_t rm_so;
|
|
regoff_t rm_eo;
|
|
};
|
|
|
|
typedef struct Regex regex_t;
|
|
typedef struct RegexMatch regmatch_t;
|
|
|
|
int regcomp(regex_t *, const char *, int);
|
|
int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);
|
|
size_t regerror(int, const regex_t *, char *, size_t);
|
|
void regfree(regex_t *);
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_REGEX_REGEX_H_ */
|