⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss_bmh.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/* * (c) Copyright 1992, 1993 by Panagiotis Tsirigotis * All rights reserved.  The file named COPYRIGHT specifies the terms  * and conditions for redistribution. */static char RCSid[] = "$Id" ;char *malloc() ;#include "ss_impl.h"PRIVATE int bmh_setup() ;PRIVATE char *bmh_match() ;PRIVATE void bmh_done() ;struct ss_ops __strs_bmhops = { bmh_setup, bmh_match, bmh_done } ;PRIVATE int bmh_setup( hp )	header_s *hp ;{	register int patlen = SS_PATLEN( hp ) ;	register int limit = patlen - 1 ;			/* patlen is > 0 */	register char *pattern = SS_PATTERN( hp ) ;	register int i ;	shift_int *shift ;	shift = (shift_int *) malloc( ALPHABET_SIZE * sizeof( shift_int ) ) ;	if ( shift == (shift_int *)NULL )		return( SS_ERR ) ;	for ( i = 0 ; i < ALPHABET_SIZE ; i++ )		shift[ i ] = patlen ;		for ( i = 0 ; i < limit ; i++ )		shift[ (unsigned char) pattern[ i ] ] = limit - i ;	BMH_HEADER( hp )->shift = shift ;	return( SS_OK ) ;}PRIVATE char *bmh_match( hp, str, len )	header_s *hp ;	register char *str ;	int len ;{	register int i ;	int patlen = SS_PATLEN( hp ) ;	char *pattern = SS_PATTERN( hp ) ;	register char lpc = pattern[ patlen-1 ] ;		/* last pattern character */	shift_int *shift = BMH_HEADER( hp )->shift ;	i = patlen - 1 ;	while ( i < len )	{		char c = SS_MAP( hp, str[ i ] ) ;		if ( c == lpc )		{			int j, k ;			for ( j = patlen-1, k = i ;; )			{				if ( j == 0 )					return( &str[ k ] ) ;				j--, k-- ;				if ( pattern[ j ] != SS_MAP( hp, str[ k ] ) )					break ;			}		}		i += shift[ (unsigned char) c ] ;	}	return( CHAR_NULL ) ;}PRIVATE void bmh_done( hp )	header_s *hp ;{	(void) free( (char *)BMH_HEADER( hp )->shift ) ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -