
#include "NPNS.h"

int SpoolContents( char *spooldir, char ***spoollist )

{

  int i;
  int count;

  BPTR lock;
  BPTR old_lock;

  struct FileInfoBlock *fib;

/*
 *   Lock spooldir so that nothing can change during the 2
 *   passes. 1st pass gets the Number of things in dir
 *   2nd saves the filenames for return.
 */

  if ( lock = Lock( spooldir, ACCESS_WRITE ) ) {

/*
 *   Change current dir to spool dir and alloc fib
 */

  	old_lock = CurrentDir( lock );
  	
	if ( fib = AllocDosObject( DOS_FIB, NULL ) ) {
   
/*
 *   count dir contents
 */

  		count = 0;
  		Examine( lock, fib );
 	 	while( ExNext( lock, fib ) ) count++;

		if ( count > 0 ) {

			(*spoollist) = (char **)AllocMem( ((long)count * sizeof(char *)), MEMF_ANY );
			for ( i = 0; i < count; i++ )
				(*spoollist)[i] = (char *)AllocMem( (NAME_SIZE * sizeof(char)), MEMF_ANY );

			Examine( lock, fib );
			for ( i = 0; i < count; i++ ) {

				ExNext( lock, fib );
				strcpy( (*spoollist)[i], spooldir );
				AddPart( (*spoollist)[i], fib->fib_FileName, NAME_SIZE );
	
			}   /* for */

		}   /* if */

		FreeDosObject( DOS_FIB, fib );

	}   /* if */
	
  	CurrentDir( old_lock );
	UnLock( lock );

  } else {

	PrintFault( IoErr(), spooldir );

  }   /* if lock */

  return(count);

}   /* SpoolContents */


/*========================================================================*
                       END FUNCTION SpoolContents
 *========================================================================*/
