home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / ArchiveUtils / UnTar / Source / Main.m < prev    next >
Encoding:
Text File  |  1993-01-19  |  1.6 KB  |  87 lines

  1.  
  2. #import "Main.h"
  3. #import <appkit/Application.h>
  4. #import <appkit/Listener.h>
  5. #import <appkit/Panel.h>
  6. #import <appkit/Speaker.h>
  7.  
  8. extern int    chdir(const char *);
  9. extern int    system(const char *);
  10. extern char * strcpy(char *,const char *);
  11. extern size_t strlen(const char *);
  12.  
  13. char *stlchr(const char *,int);
  14.  
  15. id  infoPanel=nil;
  16. id  helpPanel=nil;
  17. BOOL appShouldQuit=NO;
  18.  
  19. @implementation Main
  20.  
  21. - info:sender
  22. {
  23.     if (!infoPanel) {
  24.         infoPanel = [NXApp loadNibSection:"Info.nib" owner:self withNames:NO];
  25.         [infoPanel useOptimizedDrawing:YES];
  26.     }
  27.     [infoPanel makeKeyAndOrderFront:self];
  28.     return self;
  29. }
  30.  
  31. - help:sender
  32. {
  33.     if (!helpPanel) {
  34.         helpPanel=[NXApp loadNibSection:"Help.nib" owner:self withNames:NO];
  35.         [helpPanel useOptimizedDrawing:YES];
  36.     }
  37.     [helpPanel makeKeyAndOrderFront:self];
  38.     return self;
  39. }
  40.  
  41. - (BOOL)appAcceptsAnotherFile:sender
  42. {
  43.     return YES;
  44. }
  45.  
  46. - (int)app:sender openFile:(const char *)filename type:(const char *)aType
  47. {
  48.     char buffer[1000];
  49.  
  50.     sprintf(buffer, "tar -xf %s", filename);
  51.     chdir(stlchr(filename,'/'));
  52.     system(buffer);
  53.  
  54.     appShouldQuit=YES;
  55.     return YES;
  56. }
  57.  
  58. - appDidInit:sender
  59. {
  60.     if (appShouldQuit) {
  61.         port_t workspacePort = NXPortFromName(NX_WORKSPACEREQUEST,NULL);
  62.  
  63.         if (workspacePort != PORT_NULL) {
  64.             [[NXApp appSpeaker] setSendPort:workspacePort];
  65.             [[NXApp appSpeaker] selectorRPC:"updateBrowser:" paramTypes:"@", sender];
  66.         }
  67.         [NXApp terminate:sender];
  68.     }
  69.     return self;
  70. }
  71.  
  72. @end
  73.  
  74. char *stlchr(const char *name,int chr)
  75. {
  76.     static char    buffer[1000];
  77.     int            x;
  78.  
  79.     strcpy(buffer,name);
  80.     for (x = strlen(buffer); x; x--)
  81.         if (buffer[x] == chr) {
  82.             buffer[x] = '\0';
  83.             break;
  84.         }
  85.     return (buffer); 
  86. }
  87.