This is UncompressApp.m in view mode; [Download] [Up]
/* Generated by Interface Builder */
#import "UncompressApp.h"
#import <stdio.h>
#import <string.h>
#import <appkit/Form.h>
#import <appkit/Panel.h>
#import <appkit/Text.h>
#import <appkit/OpenPanel.h>
@implementation UncompressApp
- appDidInit:sender
{
openPanel = [OpenPanel new];
[openPanel allowMultipleFiles:YES];
mode = NO;
[nameWindow selectTextAt:0];
[[nameWindow window] makeKeyWindow];
return self;
}
- setMode:sender
{
mode = [sender intValue];
[nameWindow selectTextAt:0];
return self;
}
- setNameWindow:anObject
{
nameWindow = anObject;
return self;
}
- go:sender
{
const char *fname;
id textObj;
int end, errnum;
char command[BUFSIZ], tmpbuf[3];
int system();
fname = [nameWindow stringValueAt:0];
[nameWindow selectTextAt:0];
textObj = [nameWindow currentEditor];
end = [textObj textLength];
// Select Uncompress or Compress Command and fix string in nameWindow
[textObj getSubstring:tmpbuf start:end-2 length:2];
if (mode == NO) {
strcpy(command,"/usr/ucb/uncompress ");
if (strncmp(tmpbuf,".Z",2)) {
NXRunAlertPanel("Uncompress","File is not in compressed format", NULL, NULL, NULL);
return nil;
}
[textObj setSel:end-2 :end];
[textObj delete:nil];
}
else {
strcpy(command,"/usr/ucb/compress ");
if ( strncmp(tmpbuf,".Z",2) ) {
[textObj setSel:end :end];
[textObj replaceSel:".Z"];
} else {
NXRunAlertPanel("Compress","File is already compressed", NULL, NULL, NULL);
return nil;
}
}
// Execute command
strcat(command,fname);
if (errnum = system(command)) {
char *errorString = strerror(errnum);
NXRunAlertPanel("Uncompress","Didn't work! - %s", NULL, NULL, NULL,errorString);
return nil;
}
return self;
}
- (BOOL)appAcceptsAnotherFile:sender
{
return YES;
}
- (int)appOpenFile:(const char *)fileName type:(const char *)aType
{
[nameWindow setStringValue:fileName at:0];
[nameWindow selectTextAt:0];
return YES;
//[self go:nil];
}
- setFile:sender
{
const char *directory;
const char *const *files;
char path[BUFSIZ];
static const char *const dataType[2] = {"Z", NULL};
if ([openPanel runModalForTypes:(mode==NO)?dataType:NULL]) {
files = [openPanel filenames];
directory = [openPanel directory];
}
else return nil;
if (directory && *directory && files && *files) {
const char *const *ptr;
for(ptr = files; *ptr; ptr++) {
strcat(path, directory);
strcat(path, "/");
strcat(path, *ptr);
strcat(path," ");
}
path[strlen(path)-1] = 0;
[nameWindow setStringValue:path at:0];
[nameWindow selectTextAt:0];
} else {
NXRunAlertPanel("Uncompress","Null file name",NULL,NULL,NULL);
return nil;
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.