home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / Split_GUI.lha / Split_v1.0 / Sources.lha / Sources / askfile.c next >
Encoding:
C/C++ Source or Header  |  1995-03-04  |  1.7 KB  |  88 lines

  1. #include <utility/tagitem.h>
  2. #include <string.h>
  3. #include <proto/exec.h>
  4. #include <proto/asl.h>
  5. #include <proto/dos.h>
  6.  
  7. extern void clearHeader( void );
  8. extern void updateGadgets( void );
  9. extern void newChunkList( void );
  10. extern char filename[], chunkname[];
  11. extern ULONG filesize;
  12.  
  13.  
  14. STRPTR msg_selectsource, msg_selectdest;
  15.  
  16. static char drawer[95];
  17. static char name[33];
  18.  
  19. struct TagItem sourcetags[] = {
  20. { ASLFR_TitleText, NULL },
  21. { ASLFR_InitialDrawer, (ULONG)drawer },
  22. { ASLFR_InitialFile, (ULONG)name },
  23. { ASLFR_InitialHeight, 210L },
  24. { ASLFR_RejectIcons, TRUE },
  25. { TAG_END, NULL } };
  26.  
  27. struct Library *AslBase;
  28.  
  29. static BOOL askFile( STRPTR dest )
  30. {
  31. struct FileRequester *request;
  32. BOOL result = FALSE;
  33.  
  34. if ( AslBase = OpenLibrary( "asl.library", 0L ) )
  35.     {
  36.     if ( request = (struct FileRequester *)AllocAslRequest( ASL_FileRequest, sourcetags ) )
  37.         {
  38.         if ( AslRequest( request, sourcetags ) )
  39.             {
  40.             strcpy( drawer, request->fr_Drawer );
  41.             strcpy( name, request->fr_File );
  42.  
  43.             strcpy( dest, request->fr_Drawer );
  44.             if ( dest[0] )
  45.                 {
  46.                 strcpy( drawer, dest );
  47.                 if ( dest[ strlen(dest)-1 ] != ':' && dest[ strlen(dest)-1 ] != '/' )
  48.                     strcat( dest, "/" );
  49.                 }
  50.             strcat( dest, FilePart(request->fr_File) );
  51.             result = TRUE;
  52.             }
  53.         FreeAslRequest( request );
  54.         }
  55.     CloseLibrary( AslBase );
  56.     }
  57. return result;
  58. }
  59.  
  60.  
  61. void askDest( void )
  62. {
  63. sourcetags[0].ti_Data = (ULONG)msg_selectdest;
  64. if ( askFile( chunkname ) )
  65.     updateGadgets();
  66. }
  67.  
  68.  
  69. void askSource( void )
  70. {
  71. sourcetags[0].ti_Data = (ULONG)msg_selectsource;
  72. if ( askFile( filename ) )
  73.     {
  74.     BPTR lock;
  75.     struct FileInfoBlock fib;
  76.  
  77.     if ( lock = Lock( filename, ACCESS_READ ) )
  78.         {
  79.         if ( Examine( lock, &fib ) )
  80.             filesize = fib.fib_Size;
  81.         else filesize = 0;
  82.         UnLock( lock );
  83.         }
  84.     newChunkList();
  85.     updateGadgets();
  86.     }
  87. }
  88.