/* Programa Ruleware.
	Si te mola me lo dices, me mandas comentarios, sugerencias, etc...
		x5581416@turing.ugr.es
		http://fly.to/sud

	Nota: Debes poner el directorio de windows ahi debajo
*/

#define DIRECTORIO_WINDOWS "C:\\WIN95"


#include <stdio.h>
#include <conio.h>
#include <dir.h>
#include <stdlib.h>


unsigned long eleva(long base, int exp) { // Eleva base a exp
	unsigned long aux=1;
	int i;
	for (i=0; i<exp; i++) {
		aux*=base;
	}
	return aux;
}



void escribe(long unsigned tmpl) {  // Escribe un long con . donde corresponda
//	cprintf("-%ld-",tmpl);
	int i;
	unsigned long tripla=tmpl;

	/* Calcular el orden del numero de entrada */
	for (i=0; tmpl>0; tmpl=tmpl/1000L,i++);
	i--;

	/* Imprimir primera tripla */
	cprintf("%lu", tripla/eleva(1000L,i));
	tripla=tripla % eleva(1000L,i);

	/* Imprimir resto de triplas (si las hay) */
	for (i--;i>=0;i--) {
		cprintf(".%03lu", tripla/eleva(1000L,i));
		tripla=tripla % eleva(1000L,i);
	}
}

unsigned long getfree() {       // Averigua el espacio libre de la unidad C
	unsigned int tmp1,tmp2,tmp3;
	asm {
		mov ah,36h
		mov dl,3      ;//n§ unidad C=3
		int 21h
		mov tmp1,ax
		mov tmp2,bx
		mov tmp3,cx
	}
	return (unsigned long)tmp1*tmp2*tmp3;
}



main() {
unsigned long swap1=0,swap2=0;
unsigned long swap,free,total;
FILE * f;
struct ffblk miarchivo;

if (findfirst("c:\\win386.swp",&miarchivo,0)==0)
	swap1=miarchivo.ff_fsize;
if (findfirst(DIRECTORIO_WINDOWS"\\win386.swp",&miarchivo,0)==0)
	swap2=miarchivo.ff_fsize;

swap=swap1+swap2;

if (swap == 0) {
	puts("\nNo encuentro archivo de intercambio");
	exit(-1);
}

puts("");

if ((swap1 != 0) && (swap2 != 0))
	puts("Encontrados dos archivos de intercambio (šNo sobra uno? ;o)\nC:\\WIN386.SWP, "DIRECTORIO_WINDOWS"\\WIN386.SWP\n");

textcolor(12); escribe(swap); cprintf(" swap");


free=getfree();


textcolor(10); puts(""); escribe(free); cprintf(" libres");

	total=swap+free;

	textcolor(7); cprintf(" --> ");

	textcolor(14); escribe(total); cprintf(" total",free);

	textcolor(7);
	cprintf(" \n");

return 0;
}
