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.