x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
glob.c - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\DarkPuzzle\libs\bullet_sdk\jam-2.5\glob.c
旋转
特效
属性
历史版本
/* * Copyright 1994 Christopher Seiwald. All rights reserved. * * This file is part of Jam - see jam.c for Copyright information. */ /* * glob.c - match a string against a simple pattern * * Understands the following patterns: * * * any number of characters * ? any single character * [a-z] any single character in the range a-z * [^a-z] any single character not in the range a-z * \x match x * * External functions: * * glob() - match a string against a simple pattern * * Internal functions: * * globchars() - build a bitlist to check for character group match * * 11/04/02 (seiwald) - const-ing for string literals */ # include "jam.h" # define CHECK_BIT( tab, bit ) ( tab[ (bit)/8 ] & (1<<( (bit)%8 )) ) # define BITLISTSIZE 16 /* bytes used for [chars] in compiled expr */ static void globchars( const char *s, const char *e, char *b ); /* * glob() - match a string against a simple pattern */ int glob( const char *c, const char *s ) { char bitlist[ BITLISTSIZE ]; const char *here; for( ;; ) switch( *c++ ) { case '\0': return *s ? -1 : 0; case '?': if( !*s++ ) return 1; break; case '[': /* scan for matching ] */ here = c; do if( !*c++ ) return 1; while( here == c || *c != ']' ); c++; /* build character class bitlist */ globchars( here, c, bitlist ); if( !CHECK_BIT( bitlist, *(unsigned char *)s ) ) return 1; s++; break; case '*': here = s; while( *s ) s++; /* Try to match the rest of the pattern in a recursive */ /* call. If the match fails we'll back up chars, retrying. */ while( s != here ) { int r; /* A fast path for the last token in a pattern */ r = *c ? glob( c, s ) : *s ? -1 : 0; if( !r ) return 0; else if( r < 0 ) return 1; --s; } break; case '\\': /* Force literal match of next char. */ if( !*c || *s++ != *c++ ) return 1; break; default: if( *s++ != c[-1] ) return 1; break; } } /* * globchars() - build a bitlist to check for character group match */ static void globchars( const char *s, const char *e, char *b ) { int neg = 0; memset( b, '\0', BITLISTSIZE ); if( *s == '^') neg++, s++; while( s < e ) { int c; if( s+2 < e && s[1] == '-' ) { for( c = s[0]; c <= s[2]; c++ ) b[ c/8 ] |= (1<<(c%8)); s += 3; } else { c = *s++; b[ c/8 ] |= (1<<(c%8)); } } if( neg ) { int i; for( i = 0; i < BITLISTSIZE; i++ ) b[ i ] ^= 0377; } /* Don't include \0 in either $[chars] or $[^chars] */ b[0] &= 0376; }
glob.c
网页地址
文件地址
上一页
21/73
下一页
下载
( 2 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.