mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 487192: Move both copies of nsWildCard into xpcom. r/sr=bsmedberg
- Sync up filepicker's nsWildCard to fixes made to libjar's version.
This commit is contained in:
parent
8256d0bd8d
commit
ed77e28f6c
@ -51,7 +51,7 @@
|
|||||||
#include "plstr.h"
|
#include "plstr.h"
|
||||||
#include "prmem.h"
|
#include "prmem.h"
|
||||||
|
|
||||||
/* ----------------------------- _valid_subexp ------------------------------ */
|
/* ----------------------------- _valid_subexp ---------------------------- */
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
@ -38,9 +38,10 @@
|
|||||||
/* *
|
/* *
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* shexp.c: shell-like wildcard match routines
|
* nsWildCard.cpp: shell-like wildcard match routines
|
||||||
*
|
*
|
||||||
* See shexp.h for public documentation.
|
* See nsIZipReader.findEntries documentation in nsIZipReader.idl for
|
||||||
|
* a description of the syntax supported by the routines in this file.
|
||||||
*
|
*
|
||||||
* Rob McCool
|
* Rob McCool
|
||||||
*
|
*
|
||||||
@ -51,7 +52,7 @@
|
|||||||
#include "plstr.h"
|
#include "plstr.h"
|
||||||
#include "prmem.h"
|
#include "prmem.h"
|
||||||
|
|
||||||
/* ----------------------------- shexp_valid ------------------------------ */
|
/* ----------------------------- _valid_subexp ---------------------------- */
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -77,7 +78,7 @@ _valid_subexp(PRUnichar *expr, PRUnichar stop)
|
|||||||
++nsc;
|
++nsc;
|
||||||
if((!expr[++x]) || (expr[x] == ']'))
|
if((!expr[++x]) || (expr[x] == ']'))
|
||||||
return INVALID_SXP;
|
return INVALID_SXP;
|
||||||
for(++x;expr[x] && (expr[x] != ']');++x)
|
for(;expr[x] && (expr[x] != ']');++x)
|
||||||
if(expr[x] == '\\')
|
if(expr[x] == '\\')
|
||||||
if(!expr[++x])
|
if(!expr[++x])
|
||||||
return INVALID_SXP;
|
return INVALID_SXP;
|
||||||
@ -134,7 +135,7 @@ NS_WildCardValid(PRUnichar *expr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------- shexp_match ----------------------------- */
|
/* ----------------------------- _shexp_match ----------------------------- */
|
||||||
|
|
||||||
|
|
||||||
#define MATCH 0
|
#define MATCH 0
|
||||||
@ -235,8 +236,16 @@ _shexp_match(const PRUnichar *str, const PRUnichar *expr,
|
|||||||
else {
|
else {
|
||||||
int matched;
|
int matched;
|
||||||
|
|
||||||
for (matched=0;expr[y] != ']';y++)
|
for (matched=0;expr[y] != ']';y++) {
|
||||||
|
/* match an escaped ']' character */
|
||||||
|
if('\\' == expr[y] && ']' == expr[y+1]) {
|
||||||
|
if(']' == str[x])
|
||||||
|
matched |= 1;
|
||||||
|
y++; /* move an extra char to compensate for '\\' */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
matched |= (str[x] == expr[y]);
|
matched |= (str[x] == expr[y]);
|
||||||
|
}
|
||||||
if (neg ^ (!matched))
|
if (neg ^ (!matched))
|
||||||
ret = NOMATCH;
|
ret = NOMATCH;
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
@ -36,36 +36,23 @@
|
|||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* shexp.h: Defines and prototypes for shell exp. match routines
|
* nsWildCard.h: Defines and prototypes for shell exp. match routines
|
||||||
*
|
*
|
||||||
|
* See nsIZipReader.findEntries docs in nsIZipReader.idl for a description of
|
||||||
|
* the supported expression syntax.
|
||||||
|
*
|
||||||
|
* Note that the syntax documentation explicitly says the results of certain
|
||||||
|
* expressions are undefined. This is intentional to require less robustness
|
||||||
|
* in the code. Regular expression parsing is hard; the smaller the set of
|
||||||
|
* features and interactions this code must support, the easier it is to
|
||||||
|
* ensure it works.
|
||||||
*
|
*
|
||||||
* 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 nsWildCard_h__
|
#ifndef nsWildCard_h__
|
||||||
#define nsWildCard_h__
|
#define nsWildCard_h__
|
||||||
|
|
||||||
#include "prtypes.h"
|
#include "prtypes.h"
|
||||||
#include "nscore.h"
|
|
||||||
#include <ctype.h> /* isalnum */
|
#include <ctype.h> /* isalnum */
|
||||||
#include <string.h> /* strlen */
|
#include <string.h> /* strlen */
|
||||||
|
|
||||||
@ -103,16 +90,4 @@ extern int NS_WildCardValid(PRUnichar *expr);
|
|||||||
extern int NS_WildCardMatch(const PRUnichar *str, const PRUnichar *expr,
|
extern int NS_WildCardMatch(const PRUnichar *str, const PRUnichar *expr,
|
||||||
PRBool case_insensitive);
|
PRBool case_insensitive);
|
||||||
|
|
||||||
/*
|
|
||||||
* Same as above, but validates the exp first. 0 on match, 1 on non-match,
|
|
||||||
* -1 on invalid exp.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int NS_WildCardSearch(const PRUnichar *str, const PRUnichar *expr);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Same as above but uses case insensitive search.
|
|
||||||
*/
|
|
||||||
extern int NS_WildCardCaseSearch(const PRUnichar *str, const PRUnichar *expr);
|
|
||||||
|
|
||||||
#endif /* nsWildCard_h__ */
|
#endif /* nsWildCard_h__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user