LowerCase: 统一转为小写字母;
StartWith:字符串b是否是以字符串a开头。
startWithIgnoreCase:字符串b是否是以字符串a开头,忽略大小写。
robotsMatch:字符串b是否被模式a禁止。robots.txt在服务器端的根目录下,其声明某些file是不能被访问。关于robots.txt的具体格式,参见我转载的文章。以后分析file.cc会用到。
endWith:测试b是否以a结尾;
endWithIgnoreCase:测试b是否以a结尾,忽略大小写。
caseContain:b中是否包含a
newString:copy一个string;
readfile:读整个文件到一片内存中。主要的问题是不知道文件有多大,这里采用动态扩展的方法使用内存。
首先将文件中的内容读到一个buf中,然后在内存中拷贝到第二个res中。第二片内存是实际记录的,其size动态扩展,最后一位被置0。
/* Read a whole file
*/
char *readfile (int fds) {
ssize_t pos = 0;
ssize_t size = 512;
int cont = 1;
char buf[500];
ssize_t nbRead;
char *res = new char[size];
while(cont == 1) {
switch (nbRead = read(fds, &buf, 500)) {
case 0 : cont = 0; break;
case -1 : if (errno != EINTR && errno != EIO) cont = -1; break;
default :
if (pos + nbRead >= size) {
size *= 2;
char *tmp = new char[size];
memcpy(tmp, res, pos);
delete res;
res = tmp;
}
memcpy(res+pos, buf, nbRead);
pos += nbRead;
break;
}
}
res[pos] = 0;
return res;
}
nextToken:找到下一个分隔符,与robtost.txt有关。
matchXXXXX:不太明白,privilegedExts[i]在哪定义的,干什么的?