ftp.nice.ch/pub/next/connectivity/news/Alexandra.0.82.s.tar.gz#/alex8/plain-subject.c

This is plain-subject.c in view mode; [Download] [Up]

#include <string.h>
#import "plain-subject.h"
#import <stdio.h>
#import <appkit/nextstd.h>

static short delta[7][256];
static BOOL	 didInit=NO;

char *plain_subject(char *subject,BOOL *reply)
	{
	char *originalSubject=subject;
	int	 state=2,i;
	
	if(!subject){
		NXLogError("plain_subject.c: called with NULL pointer");
		return NULL;
	}
	
	if(!didInit)
		{
		didInit=YES;
		memset(delta,0,6*256*sizeof(short));
		for(i=0;i<256;i++)
			delta[6][i]=1;
		delta[2]['r']=3; delta[2]['R']=3;
		delta[3]['e']=4; delta[3]['E']=4;
		delta[4]['^']=5; delta[4][':']=6;
		delta[5]['0']=5; delta[5]['1']=5; delta[5]['2']=5; delta[5]['3']=5;  
		delta[5]['4']=5; delta[5]['5']=5; delta[5]['6']=5; delta[5]['7']=5;  
		delta[5]['8']=5; delta[5]['9']=5; delta[5][':']=6;
		delta[6][' ']=6; delta[6][  0]=0;
		}
	while(state>1)
		state=delta[state][(unsigned char)*originalSubject++];
	*reply=state;
	if(*reply)
		originalSubject--;
	else
		originalSubject=subject;
	return originalSubject;
	}

/*

                                    digit      space
									/	\	   /   \ 	
	     R,r        E,e         ^   \   /   :  \   /
	(2) -----> (3) -----> (4) -----> (5) -----> (6) -----> ((1))
							\___________________/
										:
										
*/

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.