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.