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.