summaryrefslogtreecommitdiff
path: root/usr/src/lib/libast/common/comp/regexp.h
diff options
context:
space:
mode:
authorchin <none@none>2007-08-17 12:01:52 -0700
committerchin <none@none>2007-08-17 12:01:52 -0700
commitda2e3ebdc1edfbc5028edf1354e7dd2fa69a7968 (patch)
tree5280d3b78e289fe9551371ab6e7f15ef9944ea14 /usr/src/lib/libast/common/comp/regexp.h
parent073dbf9103ef2a2b05d8a16e2d26db04e0374b0e (diff)
downloadillumos-gate-da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968.tar.gz
6437624 RFE: Add ksh93 (as /usr/bin/ksh93) and libshell.so to OS/Net
6505835 AST tools and library (libpp) required for creating l10n messages for ksh93 PSARC/2006/550 Korn Shell 93 Integration PSARC/2006/587 /etc/ksh.kshrc for ksh93 PSARC/2007/035 ksh93 Amendments Contributed by Roland Mainz <roland.mainz@nrubsig.org> --HG-- rename : usr/src/lib/libcmd/common/mapfile-vers => deleted_files/usr/src/lib/libcmd/common/mapfile-vers rename : usr/src/lib/libcmd/common/placeholder.c => deleted_files/usr/src/lib/libcmd/common/placeholder.c
Diffstat (limited to 'usr/src/lib/libast/common/comp/regexp.h')
-rw-r--r--usr/src/lib/libast/common/comp/regexp.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/usr/src/lib/libast/common/comp/regexp.h b/usr/src/lib/libast/common/comp/regexp.h
new file mode 100644
index 0000000000..ab00216b50
--- /dev/null
+++ b/usr/src/lib/libast/common/comp/regexp.h
@@ -0,0 +1,129 @@
+/***********************************************************************
+* *
+* This software is part of the ast package *
+* Copyright (c) 1985-2007 AT&T Knowledge Ventures *
+* and is licensed under the *
+* Common Public License, Version 1.0 *
+* by AT&T Knowledge Ventures *
+* *
+* A copy of the License is available at *
+* http://www.opensource.org/licenses/cpl1.0.txt *
+* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
+* *
+* Information and Software Systems Research *
+* AT&T Research *
+* Florham Park NJ *
+* *
+* Glenn Fowler <gsf@research.att.com> *
+* David Korn <dgk@research.att.com> *
+* Phong Vo <kpv@research.att.com> *
+* *
+***********************************************************************/
+#pragma prototyped
+/*
+ * regexp interface and partial implementation
+ * what a novel approach
+ * don't do it again
+ *
+ * OBSOLETE: use <regex.h>
+ */
+
+#ifndef _REGEXP_H
+#define _REGEXP_H
+
+#define NBRA 9
+
+typedef struct
+{
+ char* re_braslist[NBRA];
+ char* re_braelist[NBRA];
+ char* re_loc1;
+ char* re_loc2;
+ char* re_locs;
+ int re_circf;
+ int re_nbra;
+ int re_nodelim;
+ int re_sed;
+} regexp_t;
+
+#define braslist _re_info.re_braslist
+#define braelist _re_info.re_braelist
+#define circf _re_info.re_circf
+#define loc1 _re_info.re_loc1
+#define loc2 _re_info.re_loc2
+#define locs _re_info.re_locs
+#define nbra _re_info.re_nbra
+#define nodelim _re_info.re_nodelim
+#define sed _re_info.re_sed
+
+#define advance(a,b) _re_exec(&_re_info,a,b,1)
+#define compile(a,b,c,d) _re_read(&_re_info,a,b,c,d)
+#define step(a,b) _re_exec(&_re_info,a,b,0)
+
+#if _BLD_ast && defined(__EXPORT__)
+#define extern __EXPORT__
+#endif
+
+extern int _re_comp(regexp_t*, const char*, char*, unsigned int);
+extern int _re_exec(regexp_t*, const char*, const char*, int);
+extern char* _re_putc(int);
+extern char* _re_read(regexp_t*, const char*, char*, const char*, int);
+
+#undef extern
+
+#ifndef _REGEXP_DECLARE
+
+regexp_t _re_info;
+
+char*
+_re_read(register regexp_t* re, const char* instring, char* ep, const char* endbuf, int seof)
+{
+ register int c;
+
+ static const char* prev;
+
+#ifdef INIT
+ INIT;
+#endif
+
+ re->re_nodelim = 0;
+ if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
+ {
+ if (c != seof)
+ {
+ UNGETC(c);
+ re->re_nodelim = 1;
+ }
+ if (!re->re_sed && !prev)
+ { ERROR(41); }
+ RETURN((char*)endbuf);
+ }
+ UNGETC(c);
+ prev = 0;
+ for (;;)
+ {
+ if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
+ {
+ if (re->re_sed)
+ { ERROR(36); }
+ UNGETC(c);
+ re->re_nodelim = 1;
+ break;
+ }
+ if (c == '\\')
+ {
+ _re_putc(c);
+ if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
+ { ERROR(36); }
+ }
+ _re_putc(c);
+ }
+ if (c = _re_comp(re, _re_putc(0), ep, (char*)endbuf - ep))
+ { ERROR(c); }
+ prev = endbuf;
+ RETURN((char*)prev);
+}
+
+#endif
+
+#endif