mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 06:43:32 +00:00
Moved xp_reg to network/utils/mkreg. It was only used in netlib, anyway.
This commit is contained in:
parent
466104cca7
commit
c58f0c13b4
@ -26,7 +26,8 @@ DIRS = \
|
||||
cnvts \
|
||||
mimetype \
|
||||
main \
|
||||
protocol
|
||||
protocol \
|
||||
util
|
||||
|
||||
ifdef MODULAR_NETLIB
|
||||
DIRS += module
|
||||
|
@ -38,7 +38,6 @@
|
||||
#include "gui.h"
|
||||
#include "msgcom.h"
|
||||
|
||||
#include "xp_reg.h"
|
||||
#if defined(XP_UNIX) || defined(XP_WIN32)
|
||||
#include "prnetdb.h"
|
||||
#else
|
||||
|
@ -136,6 +136,7 @@ LINCS=-I$(PUBLIC)\jtools \
|
||||
-I$(PUBLIC)\httpurl \
|
||||
-I$(PUBLIC)\cnetinit \
|
||||
-I$(PUBLIC)\mimetype \
|
||||
-I$(PUBLIC)\network \
|
||||
-I$(PUBLIC)\security
|
||||
#!endif
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
||||
#define WANT_ENUM_STRING_IDS
|
||||
#include "allxpstr.h"
|
||||
#undef WANT_ENUM_STRING_IDS
|
||||
#include "xp_reg.h"
|
||||
#include "mkreg.h"
|
||||
|
||||
#ifndef NSPR20
|
||||
#if defined(XP_UNIX) || defined(XP_WIN32)
|
||||
@ -1606,8 +1606,8 @@ proxy_regExpMatch(JSContext *mc, JSObject *obj, unsigned int argc,
|
||||
const char *url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
|
||||
const char *pat = JS_GetStringBytes(JSVAL_TO_STRING(argv[1]));
|
||||
|
||||
if (url && pat && XP_RegExpValid((char *) pat) && /* XXX */
|
||||
!XP_RegExpMatch((char *) url, (char *) pat, TRUE)) {/* XXX */
|
||||
if (url && pat && NET_RegExpValid((char *) pat) && /* XXX */
|
||||
!NET_RegExpMatch((char *) url, (char *) pat, TRUE)) {/* XXX */
|
||||
*rval = JSVAL_TRUE;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "mkparse.h"
|
||||
#include "xp_time.h"
|
||||
#include "mkfsort.h"
|
||||
#include "prtime.h"
|
||||
|
||||
extern int MK_OUT_OF_MEMORY;
|
||||
|
||||
@ -558,15 +559,14 @@ MODULE_PRIVATE time_t
|
||||
NET_ParseDate(char *date_string)
|
||||
{
|
||||
#ifndef USE_OLD_TIME_FUNC
|
||||
time_t date;
|
||||
PRTime date;
|
||||
|
||||
TRACEMSG(("Parsing date string: %s\n",date_string));
|
||||
|
||||
/* try using XP_ParseTimeString instead
|
||||
/* try using PR_ParseTimeString instead
|
||||
*/
|
||||
date = XP_ParseTimeString(date_string, TRUE);
|
||||
|
||||
if(date)
|
||||
|
||||
if(PR_ParseTimeString(date_string, TRUE, &date))
|
||||
{
|
||||
TRACEMSG(("Parsed date as GMT: %s\n", asctime(gmtime(&date))));
|
||||
TRACEMSG(("Parsed date as local: %s\n", ctime(&date)));
|
||||
@ -576,7 +576,7 @@ NET_ParseDate(char *date_string)
|
||||
TRACEMSG(("Could not parse date"));
|
||||
}
|
||||
|
||||
return(date);
|
||||
return((time_t) date);
|
||||
|
||||
#else
|
||||
struct tm time_info; /* Points to static tm structure */
|
||||
@ -1662,7 +1662,11 @@ net_parse_http_index_201_line(HTTPIndexParserData *obj, char *data_line)
|
||||
break;
|
||||
|
||||
case LAST_MODIFIED_TOKEN:
|
||||
file_struct->date = XP_ParseTimeString(token, TRUE);
|
||||
{
|
||||
PRTime prtime;
|
||||
PR_ParseTimeString(token, TRUE, &prtime);
|
||||
file_struct->date = (time_t) prtime;
|
||||
}
|
||||
break;
|
||||
|
||||
case CONTENT_TYPE_TOKEN:
|
||||
|
@ -27,6 +27,7 @@ IGNORE_MANIFEST=1
|
||||
DEPTH=..
|
||||
|
||||
DIRS= \
|
||||
util \
|
||||
main \
|
||||
mimetype \
|
||||
cache \
|
||||
|
@ -90,6 +90,7 @@ NETLIBS=\
|
||||
$(DIST)\lib\netcache.lib \
|
||||
$(DIST)\lib\netcnvts.lib \
|
||||
$(DIST)\lib\mimetype.lib \
|
||||
$(DIST)\lib\netutil.lib \
|
||||
$(DIST)\lib\network.lib \
|
||||
$(NULL)
|
||||
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "net.h"
|
||||
|
||||
extern "C" {
|
||||
#include "xp_reg.h"
|
||||
#include "secnav.h"
|
||||
#include "preenc.h"
|
||||
};
|
||||
@ -1208,28 +1207,6 @@ LM_SendOnHelp(MWContext *context)
|
||||
MOZ_FUNCTION_STUB;
|
||||
}
|
||||
|
||||
/*
|
||||
*---------------------------------------------------------------------------
|
||||
* From ns/lib/xp/xp_reg.c
|
||||
*---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
PUBLIC int
|
||||
XP_RegExpMatch(char *str, char *xp, Bool case_insensitive)
|
||||
{
|
||||
MOZ_FUNCTION_STUB;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
PUBLIC int
|
||||
XP_RegExpValid(char *exp)
|
||||
{
|
||||
MOZ_FUNCTION_STUB;
|
||||
return INVALID_SXP;
|
||||
}
|
||||
|
||||
/*
|
||||
*---------------------------------------------------------------------------
|
||||
* From ns/lib/xp/xplocale.c
|
||||
|
@ -35,11 +35,12 @@ EX_LIBS = \
|
||||
$(DIST)/bin/libftpurl.so \
|
||||
$(DIST)/bin/libgophurl.so \
|
||||
$(DIST)/bin/libremoturl.so \
|
||||
$(DIST)/bin/libhttpurl.so \
|
||||
$(DIST)/bin/libhttpurl.so \
|
||||
$(DIST)/bin/libnetcache.so \
|
||||
$(DIST)/bin/libmimetype.so \
|
||||
$(DIST)/bin/libnetwork.so \
|
||||
$(DIST)/bin/libnetlib.so \
|
||||
$(DIST)/bin/libnetlib.so \
|
||||
$(DIST)/bin/libnetutil.so \
|
||||
$(DIST)/bin/libreg.so \
|
||||
$(DIST)/bin/libxpcom.so \
|
||||
$(DIST)/bin/libpwcac.so \
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "mime.h"
|
||||
#include "shist.h"
|
||||
#include "glhist.h"
|
||||
#include "xp_reg.h"
|
||||
#include "mknews.h"
|
||||
#include "mktcp.h"
|
||||
#include "mkparse.h"
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "mkutils.h"
|
||||
#include "mknewsgr.h"
|
||||
#include "msgcom.h"
|
||||
#include "xp_reg.h"
|
||||
#include "mkreg.h"
|
||||
#include "xp_qsort.h"
|
||||
|
||||
#define DYN_ARRAY_INIT_SIZE 2
|
||||
@ -579,7 +579,7 @@ int net_NumberOfGroupsInLevel(SubgroupList *SGptr,
|
||||
|
||||
TRACEMSG(("Comparing %s and %s", large_buffer, search_string));
|
||||
|
||||
if(!XP_RegExpSearch(large_buffer, search_string))
|
||||
if(!NET_RegExpSearch(large_buffer, search_string))
|
||||
num_at_this_level++;
|
||||
}
|
||||
|
||||
@ -633,7 +633,7 @@ int net_recursiveDisplayNewsgroups(MWContext *context,
|
||||
PR_snprintf(large_buffer, BUFFER_SIZE, "%.400s", NGptr->name);
|
||||
}
|
||||
|
||||
if(!XP_RegExpSearch(large_buffer, search_string))
|
||||
if(!NET_RegExpSearch(large_buffer, search_string))
|
||||
display_this_one = TRUE;
|
||||
else
|
||||
display_this_one=FALSE;
|
||||
|
5
network/util/MANIFEST
Normal file
5
network/util/MANIFEST
Normal file
@ -0,0 +1,5 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist directory
|
||||
#
|
||||
|
||||
mkreg.h
|
36
network/util/Makefile
Normal file
36
network/util/Makefile
Normal file
@ -0,0 +1,36 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH = ../..
|
||||
|
||||
MODULE = network
|
||||
LIBRARY_NAME = netutil
|
||||
|
||||
CSRCS = \
|
||||
mkreg.c \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS=mkreg.h
|
||||
|
||||
include $(DEPTH)/config/config.mk
|
||||
|
||||
REQUIRES = network
|
||||
|
||||
include $(DEPTH)/config/rules.mk
|
||||
|
||||
|
||||
|
82
network/util/makefile.win
Normal file
82
network/util/makefile.win
Normal file
@ -0,0 +1,82 @@
|
||||
#!gmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
IGNORE_MANIFEST=1
|
||||
#
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Makefile to build the Network LIB
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
|
||||
#
|
||||
# Make sure we have MOZILLA_CLIENT defined so we get the
|
||||
# proper JS includes
|
||||
#
|
||||
LCFLAGS = $(LCFLAGS) -DMOZILLA_CLIENT
|
||||
|
||||
!ifdef BUILD_DEBUG_GC
|
||||
LCFLAGS = $(LCFLAGS) -DDEBUG_GC
|
||||
!endif
|
||||
|
||||
LLIBS= \
|
||||
$(NULL)
|
||||
|
||||
MISCDEP=$(LLIBS)
|
||||
|
||||
OBJS= \
|
||||
.\$(OBJDIR)\mkreg.obj \
|
||||
$(NULL)
|
||||
|
||||
|
||||
CSRCS = \
|
||||
mkreg.c \
|
||||
$(NULL)
|
||||
|
||||
MODULE=network
|
||||
DEPTH=..\..
|
||||
|
||||
LIBRARY_NAME=netutil
|
||||
|
||||
EXTRA_LIBS=
|
||||
|
||||
REQUIRES= network
|
||||
EXPORTS= \
|
||||
mkreg.h \
|
||||
$(NULL);
|
||||
|
||||
C_OBJS = \
|
||||
$(NULL)
|
||||
|
||||
|
||||
# use LINCS on win32 for now since REQUIRES seems to be broken
|
||||
#!if "$(MOZ_BITS)" != "16"
|
||||
LINCS= \
|
||||
-I$(PUBLIC)\network \
|
||||
$(NULL)
|
||||
#!endif
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
libs:: $(LIBRARY)
|
||||
$(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib
|
||||
|
||||
symbols::
|
||||
@echo "LIBRARY_NAME is $(LIBRARY_NAME)"
|
||||
@echo "LIBRARY is $(LIBRARY)"
|
304
network/util/mkreg.c
Normal file
304
network/util/mkreg.c
Normal file
@ -0,0 +1,304 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/* *
|
||||
*
|
||||
*
|
||||
* shexp.c: shell-like wildcard match routines
|
||||
*
|
||||
* See shexp.h for public documentation.
|
||||
*
|
||||
* Rob McCool
|
||||
*
|
||||
*/
|
||||
|
||||
#include "mkreg.h"
|
||||
#include "plstr.h"
|
||||
#include "prmem.h"
|
||||
|
||||
/* ----------------------------- shexp_valid ------------------------------ */
|
||||
|
||||
|
||||
PRIVATE int
|
||||
_valid_subexp(char *exp, char stop)
|
||||
{
|
||||
register int x,y,t;
|
||||
int nsc,np,tld;
|
||||
|
||||
x=0;nsc=0;tld=0;
|
||||
|
||||
while(exp[x] && (exp[x] != stop)) {
|
||||
switch(exp[x]) {
|
||||
case '~':
|
||||
if(tld) return INVALID_SXP;
|
||||
else ++tld;
|
||||
case '*':
|
||||
case '?':
|
||||
case '^':
|
||||
case '$':
|
||||
++nsc;
|
||||
break;
|
||||
case '[':
|
||||
++nsc;
|
||||
if((!exp[++x]) || (exp[x] == ']'))
|
||||
return INVALID_SXP;
|
||||
for(++x;exp[x] && (exp[x] != ']');++x)
|
||||
if(exp[x] == '\\')
|
||||
if(!exp[++x])
|
||||
return INVALID_SXP;
|
||||
if(!exp[x])
|
||||
return INVALID_SXP;
|
||||
break;
|
||||
case '(':
|
||||
++nsc;np = 0;
|
||||
while(1) {
|
||||
if(exp[++x] == ')')
|
||||
return INVALID_SXP;
|
||||
for(y=x;(exp[y]) && (exp[y] != '|') && (exp[y] != ')');++y)
|
||||
if(exp[y] == '\\')
|
||||
if(!exp[++y])
|
||||
return INVALID_SXP;
|
||||
if(!exp[y])
|
||||
return INVALID_SXP;
|
||||
if(exp[y] == '|')
|
||||
++np;
|
||||
t = _valid_subexp(&exp[x],exp[y]);
|
||||
if(t == INVALID_SXP)
|
||||
return INVALID_SXP;
|
||||
x+=t;
|
||||
if(exp[x] == ')') {
|
||||
if(!np)
|
||||
return INVALID_SXP;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ')':
|
||||
case ']':
|
||||
return INVALID_SXP;
|
||||
case '\\':
|
||||
if(!exp[++x])
|
||||
return INVALID_SXP;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
++x;
|
||||
}
|
||||
if((!stop) && (!nsc))
|
||||
return NON_SXP;
|
||||
return ((exp[x] == stop) ? x : INVALID_SXP);
|
||||
}
|
||||
|
||||
PUBLIC int
|
||||
NET_RegExpValid(char *exp)
|
||||
{
|
||||
int x;
|
||||
|
||||
x = _valid_subexp(exp, '\0');
|
||||
return (x < 0 ? x : VALID_SXP);
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------- shexp_match ----------------------------- */
|
||||
|
||||
|
||||
#define MATCH 0
|
||||
#define NOMATCH 1
|
||||
#define ABORTED -1
|
||||
|
||||
PRIVATE int _shexp_match(char *str, char *exp, Bool case_insensitive);
|
||||
|
||||
PRIVATE int
|
||||
_handle_union(char *str, char *exp, Bool case_insensitive)
|
||||
{
|
||||
char *e2 = (char *) PR_Malloc(sizeof(char)*strlen(exp));
|
||||
register int t,p2,p1 = 1;
|
||||
int cp;
|
||||
|
||||
while(1) {
|
||||
for(cp=1;exp[cp] != ')';cp++)
|
||||
if(exp[cp] == '\\')
|
||||
++cp;
|
||||
for(p2 = 0;(exp[p1] != '|') && (p1 != cp);p1++,p2++) {
|
||||
if(exp[p1] == '\\')
|
||||
e2[p2++] = exp[p1++];
|
||||
e2[p2] = exp[p1];
|
||||
}
|
||||
for (t=cp+1; ((e2[p2] = exp[t]) != 0); ++t,++p2) {}
|
||||
if(_shexp_match(str,e2, case_insensitive) == MATCH) {
|
||||
PR_Free(e2);
|
||||
return MATCH;
|
||||
}
|
||||
if(p1 == cp) {
|
||||
PR_Free(e2);
|
||||
return NOMATCH;
|
||||
}
|
||||
else ++p1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PRIVATE int
|
||||
_shexp_match(char *str, char *exp, Bool case_insensitive)
|
||||
{
|
||||
register int x,y;
|
||||
int ret,neg;
|
||||
|
||||
ret = 0;
|
||||
for(x=0,y=0;exp[y];++y,++x) {
|
||||
if((!str[x]) && (exp[y] != '(') && (exp[y] != '$') && (exp[y] != '*'))
|
||||
ret = ABORTED;
|
||||
else {
|
||||
switch(exp[y]) {
|
||||
case '$':
|
||||
if( (str[x]) )
|
||||
ret = NOMATCH;
|
||||
else
|
||||
--x; /* we don't want loop to increment x */
|
||||
break;
|
||||
case '*':
|
||||
while(exp[++y] == '*'){}
|
||||
if(!exp[y])
|
||||
return MATCH;
|
||||
while(str[x]) {
|
||||
switch(_shexp_match(&str[x++],&exp[y], case_insensitive)) {
|
||||
case NOMATCH:
|
||||
continue;
|
||||
case ABORTED:
|
||||
ret = ABORTED;
|
||||
break;
|
||||
default:
|
||||
return MATCH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if((exp[y] == '$') && (exp[y+1] == '\0') && (!str[x]))
|
||||
return MATCH;
|
||||
else
|
||||
ret = ABORTED;
|
||||
break;
|
||||
case '[':
|
||||
neg = ((exp[++y] == '^') && (exp[y+1] != ']'));
|
||||
if (neg)
|
||||
++y;
|
||||
|
||||
if ((isalnum(exp[y])) && (exp[y+1] == '-') &&
|
||||
(isalnum(exp[y+2])) && (exp[y+3] == ']'))
|
||||
{
|
||||
int start = exp[y], end = exp[y+2];
|
||||
|
||||
/* Droolproofing for pinheads not included */
|
||||
if(neg ^ ((str[x] < start) || (str[x] > end))) {
|
||||
ret = NOMATCH;
|
||||
break;
|
||||
}
|
||||
y+=3;
|
||||
}
|
||||
else {
|
||||
int matched;
|
||||
|
||||
for (matched=0;exp[y] != ']';y++)
|
||||
matched |= (str[x] == exp[y]);
|
||||
if (neg ^ (!matched))
|
||||
ret = NOMATCH;
|
||||
}
|
||||
break;
|
||||
case '(':
|
||||
return _handle_union(&str[x],&exp[y], case_insensitive);
|
||||
break;
|
||||
case '?':
|
||||
break;
|
||||
case '\\':
|
||||
++y;
|
||||
default:
|
||||
if(case_insensitive)
|
||||
{
|
||||
if(toupper(str[x]) != toupper(exp[y]))
|
||||
ret = NOMATCH;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(str[x] != exp[y])
|
||||
ret = NOMATCH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(ret)
|
||||
break;
|
||||
}
|
||||
return (ret ? ret : (str[x] ? NOMATCH : MATCH));
|
||||
}
|
||||
|
||||
PUBLIC int
|
||||
NET_RegExpMatch(char *str, char *xp, Bool case_insensitive) {
|
||||
register int x;
|
||||
char *exp = PL_strdup(xp);
|
||||
|
||||
if(!exp)
|
||||
return 1;
|
||||
|
||||
for(x=strlen(exp)-1;x;--x) {
|
||||
if((exp[x] == '~') && (exp[x-1] != '\\')) {
|
||||
exp[x] = '\0';
|
||||
if(_shexp_match(str,&exp[++x], case_insensitive) == MATCH)
|
||||
goto punt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(_shexp_match(str,exp, FALSE) == MATCH) {
|
||||
PR_Free(exp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
punt:
|
||||
PR_Free(exp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------ shexp_cmp ------------------------------- */
|
||||
|
||||
PUBLIC int
|
||||
NET_RegExpSearch(char *str, char *exp)
|
||||
{
|
||||
switch(NET_RegExpValid(exp))
|
||||
{
|
||||
case INVALID_SXP:
|
||||
return -1;
|
||||
case NON_SXP:
|
||||
return (strcmp(exp,str) ? 1 : 0);
|
||||
default:
|
||||
return NET_RegExpMatch(str, exp, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
PUBLIC int
|
||||
NET_RegExpCaseSearch(char *str, char *exp)
|
||||
{
|
||||
switch(NET_RegExpValid(exp))
|
||||
{
|
||||
case INVALID_SXP:
|
||||
return -1;
|
||||
case NON_SXP:
|
||||
return (strcmp(exp,str) ? 1 : 0);
|
||||
default:
|
||||
return NET_RegExpMatch(str, exp, TRUE);
|
||||
}
|
||||
}
|
||||
|
105
network/util/mkreg.h
Normal file
105
network/util/mkreg.h
Normal file
@ -0,0 +1,105 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* shexp.h: Defines and prototypes for shell exp. match routines
|
||||
*
|
||||
*
|
||||
* This routine will match a string with a shell expression. The expressions
|
||||
* accepted are based loosely on the expressions accepted by zsh.
|
||||
*
|
||||
* o * matches anything
|
||||
* o ? matches one character
|
||||
* o \ will escape a special character
|
||||
* o $ matches the end of the string
|
||||
* o [abc] matches one occurence of a, b, or c. The only character that needs
|
||||
* to be escaped in this is ], all others are not special.
|
||||
* o [a-z] matches any character between a and z
|
||||
* o [^az] matches any character except a or z
|
||||
* o ~ followed by another shell expression will remove any pattern
|
||||
* matching the shell expression from the match list
|
||||
* o (foo|bar) will match either the substring foo, or the substring bar.
|
||||
* These can be shell expressions as well.
|
||||
*
|
||||
* The public interface to these routines is documented below.
|
||||
*
|
||||
* Rob McCool
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SHEXP_H
|
||||
#define SHEXP_H
|
||||
|
||||
#include "xp_core.h"
|
||||
|
||||
/*
|
||||
* Requires that the macro MALLOC be set to a "safe" malloc that will
|
||||
* exit if no memory is available. If not under MCC httpd, define MALLOC
|
||||
* to be the real malloc and play with fire, or make your own function.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
#ifdef MCC_HTTPD
|
||||
#include "../mc-httpd.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <ctype.h> /* isalnum */
|
||||
#include <string.h> /* strlen */
|
||||
|
||||
|
||||
|
||||
/* --------------------------- Public routines ---------------------------- */
|
||||
|
||||
|
||||
/*
|
||||
* shexp_valid takes a shell expression exp as input. It returns:
|
||||
*
|
||||
* NON_SXP if exp is a standard string
|
||||
* INVALID_SXP if exp is a shell expression, but invalid
|
||||
* VALID_SXP if exp is a valid shell expression
|
||||
*/
|
||||
|
||||
#define NON_SXP -1
|
||||
#define INVALID_SXP -2
|
||||
#define VALID_SXP 1
|
||||
|
||||
extern int NET_RegExpValid(char *exp);
|
||||
|
||||
/*
|
||||
* shexp_match
|
||||
*
|
||||
* Takes a prevalidated shell expression exp, and a string str.
|
||||
*
|
||||
* Returns 0 on match and 1 on non-match.
|
||||
*/
|
||||
extern int NET_RegExpMatch(char *str, char *exp, Bool case_insensitive);
|
||||
|
||||
/*
|
||||
*
|
||||
* Same as above, but validates the exp first. 0 on match, 1 on non-match,
|
||||
* -1 on invalid exp.
|
||||
*/
|
||||
|
||||
extern int NET_RegExpSearch(char *str, char *exp);
|
||||
|
||||
/* same as above but uses case insensitive search
|
||||
*/
|
||||
extern int NET_RegExpCaseSearch(char *str, char *exp);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user