This is cSwapfile.m in view mode; [Download] [Up]
/* * This sourcecode is part of FileSpy, a logfile observing utility. * Copyright (C) 1996 Felix Rauch * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Notice that this program may not be possessed, used, copied, * distributed or modified by people having to do with nuclear * weapons. See the file CONDITIONS for details. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * To contact the original author, try: * e-mail: Felix.Rauch@nice.ch * Traditional mail: Felix Rauch * Sempacherstrasse 33 * 8032 Zurich * Switzerland */ #import "Controller.h" @implementation Controller(Swapfile) - swapfilenameClick:sender { const char *str = [prefSwapfileTextField stringValue]; if(*str == '\000') { if(swapfilename != NULL) { free(swapfilename); swapfilename = NULL; [prefSwapfileSizeTextField setStringValue:""]; [self stopSpyIfNeeded]; } return self; } if((swapfilename != NULL) && (strlen(swapfilename) < strlen(str))) { free(swapfilename); swapfilename = NULL; } if(swapfilename == NULL) { swapfilename = (char *)malloc(strlen(str)+1); } strcpy(swapfilename, str); [self startSpyIfNeeded]; return self; } - swapfileSetNameClick:sender { id openPanel; const char *const *files; char tmpfile[MAXFILENAMELENGHT]; const char *file = swapfilename; if(swapfilename == NULL) file = "/private/vm"; openPanel = [OpenPanel new]; [openPanel chooseDirectories:NO]; [openPanel allowMultipleFiles:NO]; if([openPanel runModalForDirectory:file file:NULL] == NX_OKTAG) { if((files = [openPanel filenames]) != (const char *const *)0) { sprintf(tmpfile, "%s/%s", [openPanel directory], files[0]); [prefSwapfileTextField setStringValue:tmpfile]; [self swapfilenameClick:self]; } } return self; } - swapfilesizeClick:sender { swapfilesize = [sender intValue] * 1024*1024; [self startSpyIfNeeded]; return self; } - updateSwapfile { struct stat st; if(stat(swapfilename, &st) < 0 && !swapfileError) { switch(errno) { case ENOENT: case ENOTDIR: printf("filespy: swapfile %s does not exist.\n", swapfilename); break; case EACCES: printf("filespy: can't access swapfile %s.\n", swapfilename); break; default: perror("filespy: stat"); } swapfileError = YES; } else if(!swapfileTooBig && st.st_size > swapfilesize) { printf("filespy: swapfile %s reached size of %.2f MB.\n", swapfilename, (float)st.st_size/(1024*1024)); swapfileTooBig = YES; } else if(swapfileTooBig && st.st_size <= swapfilesize) { printf("filespy: swapfile %s shrunk to %.2f MB.\n", swapfilename, (float)st.st_size/(1024*1024)); swapfileTooBig = NO; } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.