This is matcher.m in view mode; [Download] [Up]
//
// testing of regular expression matching category.
// Both GNU and BSD types, depending on compile-time
// flag (GNU_REGEXP or BSD_REGEXP).
#import <stdio.h>
#import <stdlib.h>
#import <signal.h>
#import <fcntl.h>
#import <string.h>
#import <sys/time.h>
#import <RCString.h>
int
main(int c, char **v)
{
RCString *oString;
char buf[512];
char *bpMatch;
RCString *oMatch;
void usage();
#ifdef NeXT
int signalHandler();
// install a few signal handlers
signal(SIGSEGV, signalHandler);
signal(SIGBUS, signalHandler);
signal(SIGILL, signalHandler);
// turn on fairly high level of malloc error checking
malloc_debug(16);
#endif NeXT
if (c < 4) {
usage(*v);
exit(1);
}
// pause to allow use of MallocDebug
if (c > 4)
gets(buf);
oString = [RCString newFromString:*(v + 1)];
if (oString) {
printf("\"%s\" %s regular expression \"%s\"\n",
[oString data],
[oString matches:*(v + 2)]?"MATCHES" : "DOESN'T MATCH",
*(v + 2));
if ((bpMatch = [oString subStringMatching:*(v + 2)]))
{
printf("string that matches: \"%s\"\n", bpMatch);
free(bpMatch);
} else {
fprintf(stderr, "NULL string from match\n");
}
if ((oMatch = [oString objectMatching:*(v + 2)]))
{
printf("string from object that matches: \"%s\"\n",
[oMatch data]);
[oMatch free];
} else {
fprintf(stderr, "NULL object from match\n");
}
printf("string from object (with replacement): \"%s\"\n",
[[oString replaceSubStringMatching:*(v + 2) with:*(v + 3)] data]);
free(oString);
}
// pause to allow use of MallocDebug
if (c > 4)
gets(buf);
return(0);
}
void
usage(char *command)
{
fprintf(stderr, "%s: check regular expression stuff\n", command);
fprintf(stderr, "usage: %s string regexp replacment_string\n", command);
}
#ifdef NeXT
int
signalHandler(int something)
{
printf("signalHandler(%d) (0x%x)\n", something, (unsigned int)something);
exit(0);
}
#endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.