home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / HPACK78S.ZIP / data / testio.c < prev    next >
C/C++ Source or Header  |  1992-11-05  |  7KB  |  272 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "defs.h"
  4. #include "hpackio.h"
  5. #include "system.h"
  6.  
  7. /* Any system-specific functions we may need */
  8.  
  9. void initMacInfo( void );
  10. void clearLocks( void );
  11.  
  12. /* External vars expected by some routines */
  13.  
  14. int screenHeight, screenWidth;
  15. int dateFormat = 0;
  16.  
  17. /* Test vars used in the program: Two filenames, a SLASH-delimited path, and
  18.    input/output data for the read/write tests.  Note that the R/W test data
  19.    contains \n, \r, and \n\r to test for EOL translation by the OS */
  20.  
  21. char *fileName = "test", *fileName2 = "test1";
  22. BYTE outData[] = "abcdefghijklmnopqrstuvwxyz\nxxx\rxxx\n\rxxx";
  23. BYTE inData[ 100 ];
  24. #if defined( __MSDOS__ )
  25.   char filePath[ 100 ] = "d:";
  26.   char fdFileName[ 100 ] = "a:test";
  27. #elif defined( __AMIGA__ )
  28. /*  char filePath[ 100 ] = "Nutta:Applications/Lattice"; */
  29.   char filePath[ 100 ] = "DH0:Dice";
  30.   char fdFileName[ 100 ] = "fd0:test";
  31. #elif defined( __ARC__ )
  32.   char filePath[ 100 ] = "$.HPACK";
  33.   char fdFileName[ 100 ] = "adfs:0.$.test";
  34. #elif defined( __ATARI__ )
  35.   char filePath[ 100 ] = "???????";        /*!!!!!!!!!!*/
  36.   char fdFileName[ 100 ] = "a:test";
  37. #elif defined( __MAC__ )
  38.   char filePath[ 100 ] = "Macintosh HD:\x01Grads\x01Peter";
  39.   char fdFileName[ 100 ] = "Unlabeled:\x01test";
  40. #endif /* Various OS-dependant pathnames */
  41. char fileNamePath[ 100 ];
  42.  
  43. /* The following function is normally in error.c */
  44.  
  45. void fileError( void )
  46.     {
  47.     puts( "fileError() called - miscellaneous file error" );
  48.     }
  49.  
  50. /* The test code for the <os_name>.c functions */
  51.  
  52. void main( void )
  53.     {
  54.     FILEINFO fileInfo;
  55.     FD theFD;
  56.     int count;
  57.     long pos;
  58.     BYTE *memPtr;
  59.  
  60.     /* Set up OS-specific info */
  61. #ifdef __MAC__
  62.     initMacInfo();
  63. #endif /* __MAC__ */
  64.  
  65.     /* Test hcreat() */
  66.     puts( "Performing hcreat()" );
  67.     if( ( theFD = hcreat( fileName, CREAT_ATTR ) ) == IO_ERROR )
  68.         {
  69.         puts( "hcreat() failed" );
  70.         return;
  71.         }
  72.     else
  73.         hclose( theFD );
  74.  
  75.     /* Test hopen() */
  76.     puts( "Performing hopen()" );
  77.     if( ( theFD = hopen( fileName, O_RDWR ) ) == IO_ERROR )
  78.         {
  79.         puts( "hopen() failed" );
  80.         return;
  81.         }
  82.  
  83.     /* Test hwrite() */
  84.     puts( "Performing hwrite()" );
  85.     if( ( count = hwrite( theFD, outData, 26 ) ) != 26 )
  86.         {
  87.         hclose( theFD );
  88.         printf( "hwrite() failed, wrote %d bytes\n", count );
  89.         return;
  90.         }
  91.  
  92.     /* Test hlseek() */
  93.     puts( "Performing hlseek()" );
  94.     if( ( pos = hlseek( theFD, 1L, SEEK_SET ) ) != 1L )
  95.         {
  96.         hclose( theFD );
  97.         printf( "hlseek() failed for SEEK_SET, moved to pos %ld\n", pos );
  98.         return;
  99.         }
  100.     if( ( pos = hlseek( theFD, 5L, SEEK_CUR ) ) != 6L )
  101.         {
  102.         hclose( theFD );
  103.         printf( "hlseek() failed for SEEK_CUR, moved to pos %ld\n", pos );
  104.         return;
  105.         }
  106.     if( ( pos = hlseek( theFD, -5L, SEEK_END ) ) != 21L )
  107.         {
  108.         hclose( theFD );
  109.         printf( "hlseek() failed for SEEK_END, moved to pos %ld\n", pos );
  110.         return;
  111.         }
  112.     hlseek( theFD, 0L, SEEK_SET );        /* Return to start of file */
  113.  
  114.     /* Test hread() */
  115.     puts( "Performing hread()" );
  116.     if( ( count = hread( theFD, inData, 26 ) ) != 26 )
  117.         {
  118.         hclose( theFD );
  119.         printf( "hread() failed, read %d bytes\n", count );
  120.         return;
  121.         }
  122.     if( memcmp( inData, outData, 26 ) )
  123.         {
  124.         hclose( theFD );
  125.         puts( "Data read != data written" );
  126.         return;
  127.         }
  128.  
  129.     /* Test hclose() */
  130.     puts( "Performing hclose()" );
  131.     if( hclose( theFD ) == IO_ERROR )
  132.         {
  133.         puts( "hclose() failed" );
  134.         return;
  135.         }
  136.  
  137.     /* Test hrename() */
  138.     puts( "Performing hrename()" );
  139.     theFD = hcreat( fileName, CREAT_ATTR );
  140.     hclose( theFD );
  141.     if( hrename( fileName, fileName2 ) == IO_ERROR )
  142.         {
  143.         puts( "hrename() failed" );
  144.         return;
  145.         }
  146.     printf( "Check that the file '%s' exists, then hit a key\n", fileName2 );
  147.     getchar();
  148.  
  149.     /* Test hunlink() */
  150.     puts( "Performing hunlink()" );
  151.     if( hunlink( fileName2 ) == IO_ERROR )
  152.         {
  153.         puts( "hunlink() failed" );
  154.         return;
  155.         }
  156.     printf( "Check that the file '%s' has been deleted, then hit a key\n", fileName2 );
  157.     getchar();
  158.  
  159.     /* Test htruncate() */
  160.     puts( "Performing htruncate()" );
  161.     theFD = hcreat( fileName, CREAT_ATTR );
  162.     hwrite( theFD, outData, 26 );
  163.     hlseek( theFD, 10, SEEK_SET );
  164.     if( htruncate( theFD ) == IO_ERROR )
  165.         {
  166.         hclose( theFD );
  167.         puts( "htruncate() failed" );
  168.         return;
  169.         }
  170.     hclose( theFD );
  171.     printf( "Check that the file '%s' is 10 bytes long, then hit a key\n", fileName );
  172.     getchar();
  173.     hunlink( fileName );
  174.  
  175.     /* Test hmkdir() */
  176.     puts( "Performing hmkdir()" );
  177.     if( hmkdir( "TestDir", 0 ) == IO_ERROR )
  178.         {
  179.         puts( "hmkdir() failed" );
  180.         return;
  181.         }
  182.     puts( "Check that the directory 'TestDir' exists, then hit a key" );
  183.     getchar();
  184.  
  185.     /* Test pathname handling */
  186.     strcpy( fileNamePath, filePath );
  187.     strcat( fileNamePath, SLASH_STR );
  188.     strcat( fileNamePath, "testfile" );
  189.     printf( "Creating file %s with path component %s\n", fileNamePath, filePath );
  190.     puts( "Make sure the path is valid" );
  191.     if( ( theFD = hcreat( fileNamePath, CREAT_ATTR ) ) == IO_ERROR )
  192.         {
  193.         hclose( theFD );
  194.         puts( "hcreat() with path failed" );
  195.         return;
  196.         }
  197.     hclose( theFD );
  198.     if( hunlink( fileNamePath ) == IO_ERROR )
  199.         {
  200.         puts( "hunlink() with path failed" );
  201.         return;
  202.         }
  203.  
  204.     /* Test findFirst()/findNext() on files only */
  205.     printf( "\nFinding all files on path %s\n", filePath );
  206.     strcat( filePath, SLASH_STR );
  207.     strcat( filePath, MATCH_ALL );
  208.     if( !findFirst( filePath, FILES, &fileInfo ) )
  209.         puts( "No files" );
  210.     else
  211.         do
  212.             {
  213.             printf( "Filename %s, filesize %ld, filetime 0x%lX, file attr 0x%X\n", \
  214.                     fileInfo.fName, fileInfo.fSize, fileInfo.fTime, fileInfo.fAttr );
  215.             }
  216.         while( findNext( &fileInfo ) );
  217.     findEnd( &fileInfo );
  218.  
  219.     /* Test findFirst()/findNext() on files and directories */
  220.     printf( "\nFinding all files and directories on path %s\n", filePath );
  221.     if( !findFirst( filePath, FILES_DIRS, &fileInfo ) )
  222.         puts( "No files/dirs" );
  223.     else
  224.         do
  225.             {
  226.             if( isDirectory( fileInfo ) )
  227.                 printf( "Dirname %s, dirtime 0x%lX, dir attr 0x%X\n", \
  228.                         fileInfo.fName, fileInfo.fTime, fileInfo.fAttr );
  229.             else
  230.                 printf( "Filename %s, filesize %ld, filetime 0x%lX, file attr 0x%X\n", \
  231.                         fileInfo.fName, fileInfo.fSize, fileInfo.fTime, fileInfo.fAttr );
  232.             }
  233.         while( findNext( &fileInfo ) );
  234.     findEnd( &fileInfo );
  235.  
  236. #ifdef __AMIGA__
  237.     clearLocks();
  238. #endif /* __AMIGA__ */
  239.  
  240.     /* Test setFileTime() */
  241.     printf( "Setting timestamp for file %s to the epoch + delta\n", fileName );
  242.     theFD = hcreat( fileName, CREAT_ATTR );
  243.     hclose( theFD );
  244.     setFileTime( fileName, 1000L );
  245.     printf( "Check that the file '%s' is has a timestamp just past the epoch, then hit a key\n", fileName );
  246.     getchar();
  247.     hunlink( fileName );
  248.  
  249.     puts( "\nDone" );
  250.  
  251.     /* Test brokenness of write() call */
  252.     puts( "Testing write() functionality.  Make sure there is less than 10K of" );
  253.     printf( "  free space on the destination disk for file %s,\n" );
  254.     puts( "  then hit a key" );
  255.     getchar();
  256.     if( ( memPtr = hmalloc( 16384 ) ) == NULL )
  257.         {
  258.         puts( "Can't malloc I/O buffer" );
  259.         return;
  260.         }
  261.     theFD = hcreat( fdFileName, CREAT_ATTR );
  262.     count = hwrite( theFD, memPtr, 16384 );
  263.     if( !count )
  264.         puts( "This is a broken write() - no data written" );
  265.     else
  266.         printf( "Successfully wrote %d of 16384 bytes\n", count );
  267.     hclose( theFD );
  268.     puts( "Check the file size just to be sure, then hit a key" );
  269.     getchar();
  270.     hfree( memPtr );
  271.     }
  272.