/*
 * Blocs_libres.c :
 * ----------------
 * Auteur         : Xavier Mertens  
 * Version        : 1  
 * Révision       : 0  
 * Langage        : Lattice c v5.0
 * Compatibilité  : 1.3 - 2.x
 * Description    : Routine renvoyant le nombre de blocs libres sur un  
 *                  périphérique.
 */

#include <libraries/dosextens.h>
#include <exec/memory.h>

/* 
   La routine :
   En entrée : le nom (df1:,df0:,dh0,ram:,...)
   En sortir : le nombre de blocs libres
*/

LONG NumFreeBlocks(char name[]){
  BPTR lock;
  struct InfoData*infodata;
  LONG numfreeblocks;

  infodata = AllocMem(sizeof(struct InfoData),MEMF_CLEAR);
  lock = Lock (name,ACCESS_READ);
  if (lock == NULL) return (-1);

  if (Info(lock,infodata)==FALSE) return (-1);

  numfreeblocks=(infodata->id_NumBlocks) - (infodata->id_NumBlocksUsed);
  UnLock(lock);
  return(numfreeblocks);
}

main(){
 LONG numfreeblocks;

 numfreeblocks=NumFreeBlocks("DF0:");
 if (numfreeblocks==-1) exit(FALSE);
 printf ("Blocs libres sur df0: %ld\n",numfreeblocks);

 numfreeblocks=NumFreeBlocks("DF1:");
 if (numfreeblocks==-1) exit(FALSE);
 printf ("Blocs libres sur df1: %ld\n",numfreeblocks);

 numfreeblocks=NumFreeBlocks("RAM:");
 if (numfreeblocks=-1) exit(FALSE);
 printf ("Blocs libres sur RAM: %ld\n",numfreeblocks);

} 

/* Eof */
