This is CookieFile.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "CookieFile.h" #import <strings.h> #import <string.h> #import <c.h> #import <libc.h> @implementation CookieFile + (CookieFile *)findName :(char *)name fromList:(List *)list { int count,maxcount; for(count = 0,maxcount = [list count]; count < maxcount; count++) { char *myfilename = [[list objectAt:count] filename]; if(!strcasecmp(name,myfilename)) return [list objectAt:count]; } return NULL; } - (int)filelength { return file_length; } - setFilelength :(int)length { file_length = length; return self; } - fillOut { char mypath[MAXPATHLEN]; NXStream *stream; sprintf(mypath,"%s/Library/Cookies/%s",getenv("HOME"),filename); stream = NXMapFile(mypath, NX_READONLY); if(!stream) { sprintf(mypath,"/LocalLibrary/Cookies/%s",filename); stream = NXMapFile(mypath,NX_READONLY); } if(!stream) return 0; [self readCookies :stream]; NXCloseMemory(stream, NX_FREEBUFFER); return self; } - initFromName :(char *)name fromList:(List *)list { if([CookieFile findName :name fromList:list]) return FALSE; [self init]; strcpy(filename,name); return self; } - init { [super init]; filename[0] = 0; flags.selected = TRUE; cookies = NULL; return self; } - setSelected :(BOOL)value { flags.selected = value; return self; } - (BOOL)selected { return flags.selected; } - (BOOL)readCookies :(NXStream *)stream { String *tempString; BOOL foundCookie = FALSE; Cookie *tempCookie; tempString = [[[String alloc] init] preAlloc:1024]; tempCookie = [[Cookie alloc] init]; if(!cookies) cookies = [[List alloc] init]; while([tempString readString:stream]) { switch([tempString string][0]) { case '#' : if([tempString string][1] == '#') break; if(foundCookie) { if([tempCookie blank]) [tempCookie free]; else [cookies addObject:tempCookie]; tempCookie = [[Cookie alloc] init]; foundCookie = FALSE; } [tempCookie addLine:&([tempString string][1])]; foundCookie = TRUE; break; default : if(foundCookie) { [tempCookie addLine:&([tempString string][1])]; } else { if([tempString string][0]) { [tempCookie addLine:[tempString string]]; [cookies addObject:tempCookie]; tempCookie = [[Cookie alloc] init]; } } break; } } if((foundCookie) && ![tempCookie blank]) [cookies addObject:tempCookie]; else [tempCookie free]; [tempString free]; return TRUE; } - (int)count { if(!cookies) [self fillOut]; if(cookies) return [cookies count]; return 0; } - (Cookie *)pickRandom { if(!cookies) [self fillOut]; return [cookies objectAt:random()%[cookies count]]; } - (Cookie *)pickNumber :(int)number { if(!cookies) [self fillOut]; return [cookies objectAt:number]; } - (void)free { if(cookies) { [cookies freeObjects]; [cookies free]; } [super free]; } - (char *)filename { return filename; } - setFilename :(char *)string { strcpy(filename,string); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.