1016 lines
35 KiB
C++
1016 lines
35 KiB
C++
/*////////////////////////////////////////////////////////////////////////*\*/
|
||
/*
|
||
/// Nombre: JDIR .CPP ///
|
||
/// Modulo: ///
|
||
/// Descripci¢n: Dir especial, para mostrar en color los archivos ///
|
||
/// ///
|
||
/// Autor: Jos‚ David Guill‚n Dominguez ///
|
||
/// Fecha: 06 - 07 - 1995 ///
|
||
/// 05 - 11 - 1995 ( fixed bugs ) ///
|
||
/// 19 - 12 - 1995 ( re_coded all ) ///
|
||
/// ///
|
||
/// Comentario: ///
|
||
/// ///
|
||
/// ///
|
||
/// ///
|
||
/// Compilador Borland C++ 3.0 ///
|
||
*/
|
||
/* //////////////////////////////////////////////////////////////////////// */
|
||
|
||
#include <io.h>
|
||
#include <dir.h>
|
||
#include <stdio.h>
|
||
#include <conio.h>
|
||
#include <alloc.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
#include <ctype.h>
|
||
|
||
#include "Jdirect.h" /*para funciones de acceso a directorio*/
|
||
|
||
|
||
#define MAXLDIR 90 /*longitud m xima nombre directorio*/
|
||
|
||
#define UNA_COLUMNA 1
|
||
#define DOS_COLUMNAS 2
|
||
#define TRES_COLUMNAS 3
|
||
#define CUATRO_COLUMNAS 4
|
||
#define CINCO_COLUMNAS 5
|
||
#define SEIS_COLUMNAS 6
|
||
|
||
#define POR_TAMANYO 1
|
||
#define POR_NOMBRE 2
|
||
#define POR_EXTENCION 3
|
||
|
||
|
||
void Help( void );
|
||
void Que_Color( void );
|
||
void Muestra_Archivos( int Columnas );
|
||
void CargaDatosFich( FileInfo far *fp );
|
||
void informe_final( char Unidad, char tipo );
|
||
void formatea_u_long( unsigned long Numero, char *Inter_Chg );
|
||
|
||
int Carga_Archivos( char *Comodin, int atr );
|
||
char Rellena_path( char *path, char *half_path );
|
||
int sort_function( const void far *a, const void far *b );
|
||
|
||
unsigned int Numero_Archivos = 0, Numero_rArchivos = 0;
|
||
unsigned long Espacio_T_consumido, Espacio_Tr_consumido = 0;
|
||
|
||
char Directorio, oculto;
|
||
FileInfo far *fi, far *fi_TMP, ftmp;
|
||
|
||
long Longitud, L1, L2;
|
||
char BufferA[13], BufferB[13];
|
||
char Nombre_archivo[13], Extension[5], Fecha_Larga[10], Fecha_Corta[10],
|
||
HORA[10], ATRIBUTO_L[10], ATRIBUTO_C[6], Columnas;
|
||
int Ordenado;
|
||
char Recursivo = 0, NoPausar = 0, Buffer[255];
|
||
|
||
// ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
// ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
// ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
// ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
void EsperarTecla(void)
|
||
{
|
||
if ( !NoPausar )
|
||
{
|
||
textcolor(YELLOW);
|
||
cprintf("< Presione una tecla para continuar >\r");
|
||
while( !kbhit() ); getch();
|
||
cprintf(" \r");
|
||
}
|
||
};
|
||
|
||
|
||
void RestaurarEntorno()
|
||
{
|
||
char *p;
|
||
|
||
if ( ( p = getenv("JD_DIR") ) == NULL )
|
||
{
|
||
Columnas = TRES_COLUMNAS; Ordenado = POR_NOMBRE;
|
||
} else {
|
||
switch( p[0] )
|
||
{
|
||
case 'N': Ordenado = POR_NOMBRE; break;
|
||
case 'E': Ordenado = POR_EXTENCION; break;
|
||
case 'S': Ordenado = POR_TAMANYO; break;
|
||
default: Ordenado = POR_NOMBRE; break;
|
||
}
|
||
if ( ( p[1] - '0' ) > 0 && ( p[1] - '0' ) <= 6 ) Columnas = ( p[1] - '0' );
|
||
}
|
||
};
|
||
|
||
int ProcesarLineaComandos( int argc, char *argv[] )
|
||
{
|
||
char i, cont; /* Contador de par metro */
|
||
|
||
cont = 0;
|
||
for(i = 1; i != argc; i++)
|
||
if ( *argv[i] == '/' ) /* Comandos internos */
|
||
{
|
||
if ( *(argv[i]+1) >= '1' && *(argv[i]+1) <= '6' ) Columnas = *(argv[i]+1) - '0';
|
||
if ( *(argv[i]+1) == 'e' || *(argv[i]+1) == 'E' ) Ordenado = POR_EXTENCION;
|
||
if ( *(argv[i]+1) == 's' || *(argv[i]+1) == 'S' ) Ordenado = POR_TAMANYO;
|
||
if ( *(argv[i]+1) == 'r' || *(argv[i]+1) == 'R' )
|
||
{
|
||
Recursivo = 1;
|
||
if ( *(argv[i]+2) == 'c' || *(argv[i]+1) == 'C' )
|
||
NoPausar = 1;
|
||
}
|
||
if ( *(argv[i]+1) == 'c' || *(argv[i]+1) == 'C' ) NoPausar = 1;
|
||
if ( *(argv[i]+1) == '?' ) { Help(); return -1; }
|
||
cont++;
|
||
}
|
||
if ( argc == 1 ) argc = 2; else
|
||
if ( cont == argc -1 ) { strcpy( argv[1], "*.*"); }
|
||
|
||
return argc;
|
||
};
|
||
|
||
|
||
void MuestraDirectorio( char *path ) // DEBE SER UN PATH COMPLETO
|
||
{
|
||
int Entrada, i;
|
||
|
||
textcolor(CYAN); cprintf("Path: %s\r\n", path );
|
||
if ( Carga_Archivos( path, 0xF7 ) != -1 )
|
||
{
|
||
qsort((void *)fi, Numero_Archivos, sizeof(FileInfo), sort_function);
|
||
Muestra_Archivos( Columnas ); informe_final( path[0]-'A' , 0);
|
||
Espacio_Tr_consumido += Espacio_T_consumido; Numero_rArchivos += Numero_Archivos;
|
||
}
|
||
|
||
if ( Recursivo )
|
||
{
|
||
// BEGIN 05-10-99
|
||
fnsplit(path,ATRIBUTO_C,Buffer,Nombre_archivo,Extension);
|
||
fnmerge(path,ATRIBUTO_C,Buffer,"*","*");
|
||
// END 05-10-99
|
||
if ( Carga_Archivos( path, 0x10 ) == -1 ) return;
|
||
if ( strcmp( fi[1].name, ".." ) == 0 ) Entrada = 2; else Entrada = 0;
|
||
for( ; Entrada < Numero_Archivos; Entrada++)
|
||
{
|
||
// BEGIN 05-10-99 (NULL,NULL)
|
||
fnsplit(path,ATRIBUTO_C,Buffer, NULL,NULL ); //Nombre_archivo,Extension);
|
||
// END 05-10-99
|
||
strcat( Buffer, fi[Entrada].name );
|
||
fnmerge(path,ATRIBUTO_C,Buffer,Nombre_archivo,Extension);
|
||
EsperarTecla();
|
||
MuestraDirectorio( path );
|
||
// BEGIN 05-10-99 (NULL,NULL)
|
||
fnsplit(path,ATRIBUTO_C,Buffer, NULL, NULL );//Nombre_archivo,Extension);
|
||
// END 05-10-99
|
||
i = strlen( Buffer );
|
||
while ( i > 1 && Buffer[--i] != '\\' );
|
||
if ( Buffer[i-1] != '\0' ) while ( i > 1 && Buffer[--i] != '\\' ); Buffer[i] = '\0';
|
||
// BEGIN 05-10-99 ("*","*")
|
||
fnmerge(path,ATRIBUTO_C,Buffer, "*", "*" );//Nombre_archivo,Extension);
|
||
// END 05-10-99
|
||
|
||
if ( Carga_Archivos( path, 0x10 ) == -1 ) return;
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
/********************************************************************
|
||
* main
|
||
********************************************************************/
|
||
void main(int argc, char *argv[])
|
||
{
|
||
char i, path[255];
|
||
|
||
highvideo(); textcolor(YELLOW); cprintf("\r\nJD_Dir\r\n");
|
||
|
||
RestaurarEntorno();
|
||
argc = ProcesarLineaComandos( argc, argv );
|
||
|
||
for(i = 1; i < argc; i++)
|
||
if ( *argv[i] != '/' ) // Filtramos los comandos internos
|
||
{
|
||
Rellena_path( path, argv[i] );
|
||
MuestraDirectorio( path );
|
||
informe_final( path[0]-'A', 1);
|
||
}
|
||
|
||
}
|
||
/*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/
|
||
|
||
/*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/
|
||
/*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/
|
||
|
||
/*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/
|
||
|
||
int Carga_Archivos(char *Comodin, int atr )
|
||
{
|
||
int contador;
|
||
|
||
farfree(fi);
|
||
if( (fi = (FileInfo far *)farcalloc(50, sizeof(FileInfo) )) == NULL )
|
||
{
|
||
textcolor(BLUE); cprintf("\r\nError buscando memoria.\r\n");
|
||
normvideo(); textcolor(LIGHTGRAY); return -1;
|
||
}
|
||
|
||
Espacio_T_consumido = 0;
|
||
Numero_Archivos = contador = 0;
|
||
|
||
if ( findfirst(Comodin, &ftmp, atr) != 0)
|
||
{
|
||
textcolor(LIGHTGREEN); cprintf("Fichero/s no encontrado/s\n\r");
|
||
textcolor(LIGHTGRAY);
|
||
cprintf("\r\n"); return -1;
|
||
}
|
||
|
||
{
|
||
fi[Numero_Archivos] = ftmp;
|
||
Numero_Archivos++;
|
||
while (findnext(&ftmp) == 0)
|
||
{
|
||
if ( atr != 0x10 || ftmp.atrib & atr )
|
||
{
|
||
fi[Numero_Archivos] = ftmp;
|
||
Numero_Archivos++;
|
||
contador++;
|
||
if(contador==49)
|
||
{
|
||
if( ( fi = (FileInfo far *)farrealloc(fi, sizeof(FileInfo)*(Numero_Archivos + 50) ) )==NULL )
|
||
{
|
||
textcolor(BLUE); cprintf("\r\nError buscando memoria.\r\n");
|
||
normvideo(); textcolor(WHITE);
|
||
return -1;
|
||
}
|
||
contador = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
void Muestra_Archivos( int Columnas )
|
||
{
|
||
|
||
int i, lineas = 0, PartCol;
|
||
//char Buffer[80];
|
||
textcolor(BLUE);
|
||
|
||
switch( Columnas )
|
||
{
|
||
case 1:
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
for(i=0; i < Numero_Archivos; i++)
|
||
{
|
||
CargaDatosFich(&fi[i]);
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> ");
|
||
else
|
||
{
|
||
textcolor(YELLOW); formatea_u_long( (unsigned long) Longitud, Buffer );
|
||
cprintf(" %11s", Buffer );
|
||
}
|
||
textcolor(CYAN); cprintf(" %s ", Fecha_Larga);
|
||
textcolor(LIGHTBLUE); cprintf("%s", HORA);
|
||
textcolor(BLUE); cprintf("%s\r\n", ATRIBUTO_L);
|
||
lineas++;
|
||
if(lineas==21)
|
||
{
|
||
EsperarTecla();
|
||
lineas = 0;
|
||
}
|
||
}
|
||
textcolor(BLUE);
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
break;
|
||
|
||
case TRES_COLUMNAS:
|
||
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
|
||
PartCol = (Numero_Archivos/3);
|
||
PartCol += ( ( Numero_Archivos - (PartCol*3) )!=0 ? 1: 0 );
|
||
for(i=0; i < PartCol; i++)
|
||
{
|
||
/* /////////////////////// Columna 1*/
|
||
if ( i < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i]);
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> "); else
|
||
{
|
||
textcolor(YELLOW); formatea_u_long( (unsigned long) Longitud, Buffer );
|
||
cprintf(" %11s ", Buffer );
|
||
}
|
||
}
|
||
/* /////////////////////// Columna 2*/
|
||
if( (i+PartCol) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+PartCol]);
|
||
textcolor(BLUE); cprintf("³");
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> "); else
|
||
{
|
||
textcolor(YELLOW); formatea_u_long( (unsigned long) Longitud, Buffer );
|
||
cprintf(" %11s ", Buffer );
|
||
}
|
||
/* /////////////////////// Columna 3*/
|
||
if( (i+(PartCol*2)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*2)]);
|
||
textcolor(BLUE); cprintf("³");
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> \r\n"); else
|
||
{
|
||
textcolor(YELLOW); formatea_u_long( (unsigned long) Longitud, Buffer );
|
||
cprintf(" %11s\r\n", Buffer );
|
||
}
|
||
} else { textcolor(BLUE); cprintf("³\r\n"); }
|
||
} else { textcolor(BLUE);
|
||
strcpy( BufferA, "³ ³\r\n");
|
||
cprintf("%s", BufferA);
|
||
}
|
||
|
||
lineas++;
|
||
if(lineas==21)
|
||
{
|
||
EsperarTecla();
|
||
lineas = 0;
|
||
|
||
/*
|
||
cprintf("< Presione una tecla para continuar >");
|
||
while( !kbhit() ); getch(); lineas = 0;
|
||
cprintf("\r\n");
|
||
*/
|
||
}
|
||
}
|
||
textcolor(BLUE);
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
break;
|
||
|
||
case CUATRO_COLUMNAS:
|
||
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
|
||
PartCol = (Numero_Archivos/4);
|
||
PartCol += ( ( Numero_Archivos - (PartCol*4) )!=0 ? 1: 0 );
|
||
for(i=0; i < PartCol; i++)
|
||
{
|
||
/* /////////////////////// Columna 1*/
|
||
if ( i < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i]);
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> "); else
|
||
{
|
||
textcolor(YELLOW); cprintf("% 7ld", Longitud );
|
||
}
|
||
}
|
||
/* /////////////////////// Columna 2*/
|
||
if( (i+PartCol) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+PartCol]);
|
||
textcolor(BLUE); cprintf("³");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> "); else
|
||
{
|
||
textcolor(YELLOW); cprintf("% 7ld", Longitud );
|
||
}
|
||
/* /////////////////////// Columna 3*/
|
||
if( (i+(PartCol*2)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*2)]);
|
||
textcolor(BLUE); cprintf("³");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> "); else
|
||
{
|
||
textcolor(YELLOW); cprintf("% 7ld", Longitud );
|
||
}
|
||
/* /////////////////////// Columna 4 */
|
||
if( (i+(PartCol*3)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*3)]);
|
||
textcolor(BLUE); cprintf("³");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" <dir> \r\n"); else
|
||
{
|
||
textcolor(YELLOW); cprintf("% 7ld\r\n", Longitud );
|
||
}
|
||
} else { textcolor(BLUE); cprintf("³\r\n"); }
|
||
|
||
} else { textcolor(BLUE);
|
||
cprintf("³ ³ ³\r\n");
|
||
}
|
||
} else { textcolor(BLUE);
|
||
cprintf("³ ³ ³ \r\n");
|
||
}
|
||
|
||
lineas++;
|
||
if(lineas==21)
|
||
{
|
||
EsperarTecla();
|
||
lineas = 0;
|
||
|
||
/*
|
||
cprintf("< Presione una tecla para continuar >");
|
||
while( !kbhit() ); getch(); lineas = 0;
|
||
cprintf("\r\n");
|
||
*/
|
||
}
|
||
}
|
||
textcolor(BLUE);
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
break;
|
||
|
||
case CINCO_COLUMNAS:
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
|
||
PartCol = (Numero_Archivos/5);
|
||
PartCol += ( ( Numero_Archivos - (PartCol*5) )!=0 ? 1: 0 );
|
||
for(i=0; i < PartCol; i++)
|
||
{
|
||
/* /////////////////////// Columna 1 */
|
||
if ( i < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i]);
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" D"); else cprintf(" ");
|
||
}
|
||
/* /////////////////////// Columna 2*/
|
||
if( (i+PartCol) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+PartCol]);
|
||
textcolor(BLUE); cprintf("³ ");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" D"); else cprintf(" ");
|
||
/* /////////////////////// Columna 3*/
|
||
if( (i+(PartCol*2)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*2)]);
|
||
textcolor(BLUE); cprintf("³ ");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" D"); else cprintf(" ");
|
||
/* /////////////////////// Columna 4*/
|
||
if( (i+(PartCol*3)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*3)]);
|
||
textcolor(BLUE); cprintf("³ ");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" D"); else cprintf(" ");
|
||
|
||
/* /////////////////////// Columna 5*/
|
||
if( (i+(PartCol*4)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*4)]);
|
||
textcolor(BLUE); cprintf("³ ");
|
||
Que_Color(); cprintf("%s", Nombre_archivo);
|
||
if( Directorio ) cprintf(" D\r"); else cprintf(" \r");
|
||
} else { textcolor(BLUE); cprintf("³\r\n"); }
|
||
} else { textcolor(BLUE);
|
||
cprintf("³ ³\r\n");
|
||
}
|
||
} else { textcolor(BLUE);
|
||
cprintf("³ ³ ³\r\n");
|
||
}
|
||
} else { textcolor(BLUE);
|
||
cprintf("³ ³ ³ ³\r\n");
|
||
}
|
||
|
||
lineas++;
|
||
if(lineas==21)
|
||
{
|
||
EsperarTecla();
|
||
lineas = 0;
|
||
/*
|
||
cprintf("< Presione una tecla para continuar >");
|
||
while( !kbhit() ); getch(); lineas = 0;
|
||
cprintf("\r\n");
|
||
*/
|
||
}
|
||
}
|
||
textcolor(BLUE);
|
||
cprintf("ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
break;
|
||
|
||
case SEIS_COLUMNAS:
|
||
/* // 12345678.123 12345678.123 12345678.123 12345678.123 12345678.123 12345678.123*/
|
||
cprintf(" ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ\r\n");
|
||
|
||
PartCol = (Numero_Archivos/6);
|
||
PartCol += ( ( Numero_Archivos - (PartCol*6) )!=0 ? 1: 0 );
|
||
for(i=0; i < PartCol; i++)
|
||
{
|
||
/* /////////////////////// Columna 1 */
|
||
if ( i < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
}
|
||
/* /////////////////////// Columna 2*/
|
||
if( (i+PartCol) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+PartCol]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
/* /////////////////////// Columna 3 */
|
||
if( (i+(PartCol*2)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*2)]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
/* /////////////////////// Columna 4*/
|
||
if( (i+(PartCol*3)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*3)]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
/* /////////////////////// Columna 5*/
|
||
if( (i+(PartCol*4)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*4)]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
/* /////////////////////// Columna 6*/
|
||
if( (i+(PartCol*5)) < Numero_Archivos )
|
||
{
|
||
CargaDatosFich(&fi[i+(PartCol*5)]);
|
||
Que_Color(); cprintf(" %s", Nombre_archivo);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
cprintf("\r\n");
|
||
lineas++;
|
||
if(lineas==21)
|
||
{
|
||
EsperarTecla();
|
||
lineas = 0;
|
||
}
|
||
}
|
||
textcolor(BLUE);
|
||
cprintf(" ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ");
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
/********************************************************************\
|
||
|* MuestraDatosFich: datos sobre el fichero *fi. *|
|
||
\********************************************************************/
|
||
void CargaDatosFich(FileInfo far *fp)
|
||
{
|
||
static char *meses[] = { "Ene", "Feb", "Mar", "Abr", "May", "Jun",
|
||
"Jul", "Ago", "Sep", "Oct", "Nov", "Dic" };
|
||
char n[13]; /*nombre*/
|
||
char s[4]; /*y sufijo*/
|
||
char *p;
|
||
|
||
/*_f*/strcpy(n,fp->name); /*copia nombre <2>*/
|
||
s[0] = 0; /*ning£n sufijo*/
|
||
p = strchr(n,'.'); /*busca separador*/
|
||
if (p != NULL && p > n) { /*si lo encuentra <3>*/
|
||
*p = 0; /*termina nombre en n[]*/
|
||
strcpy(s,p+1); /*y copia sufijo*/
|
||
}
|
||
sprintf(Nombre_archivo, "%-9s%-3s",n,s);
|
||
sprintf(Extension, "%s", s);
|
||
|
||
if (fp->atrib & FA_DIREC) { /*si directorio <4>*/
|
||
Directorio = 1;
|
||
} else { /*si fichero normal*/
|
||
|
||
Directorio = 0;
|
||
Longitud = fp -> size;
|
||
Espacio_T_consumido += Longitud;
|
||
}
|
||
|
||
|
||
if( fp->date.month-1 >=1 && fp->date.month-1 <= 12 )
|
||
sprintf(Fecha_Larga, "%2d %3s %2d",fp->date.day, /*muestra fecha <6>*/
|
||
meses[fp->date.month-1],fp->date.year+80);
|
||
|
||
if( fp->date.month-1 >=1 && fp->date.month-1 <= 12 )
|
||
sprintf(Fecha_Corta, "% 2d-% 2d-% 2d",fp->date.day, /*muestra fecha <6>*/
|
||
fp->date.month,fp->date.year+80);
|
||
|
||
|
||
sprintf(HORA, "%2d:%02d:%02d ",fp->time.hours, /*muestra hora*/
|
||
fp->time.min,fp->time.sec*2);
|
||
|
||
if (fp->atrib & FA_SYSTEM) { /*muestra atributos <7>*/
|
||
strcpy(ATRIBUTO_L, "System ");
|
||
strcpy(ATRIBUTO_C, "S");
|
||
} else {
|
||
strcpy(ATRIBUTO_L, " ");
|
||
strcpy(ATRIBUTO_C, " ");
|
||
}
|
||
|
||
if (fp->atrib & FA_HIDDEN) {
|
||
strcpy(ATRIBUTO_L, "Oculto ");
|
||
strcpy(ATRIBUTO_C, "O");
|
||
oculto = 1;
|
||
} else {
|
||
oculto = 0;
|
||
strcpy(ATRIBUTO_L, " ");
|
||
strcpy(ATRIBUTO_C, " ");
|
||
}
|
||
if (fp->atrib & FA_RDONLY) {
|
||
strcpy(ATRIBUTO_L, "Protegido ");
|
||
strcpy(ATRIBUTO_C, "P");
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
void Que_Color(void)
|
||
{
|
||
|
||
/*// Todo lo que este oculto*/
|
||
if ( oculto ) { textcolor(GREEN); return; }
|
||
/*// Directorios*/
|
||
if ( Directorio ) { textcolor(LIGHTMAGENTA); return; }
|
||
/*// Ejecutables *.BAT dee proceso por Lotes*/
|
||
if ( !strcmpi(Extension, "BAT") ) { textcolor(RED); return; }
|
||
/*// Ejecutables *.EXE*/
|
||
if ( !strcmpi(Extension, "EXE") ) { textcolor(LIGHTCYAN); return; }
|
||
/*// Ejecutables *.COM*/
|
||
if ( !strcmpi(Extension, "COM") ) { textcolor(LIGHTGREEN); return; }
|
||
|
||
/* //Texto*/
|
||
if ( !strcmpi(Extension, "TXT") ) { textcolor(WHITE); return; }
|
||
if ( !strcmpi(Extension, "DOC") ) { textcolor(WHITE); return; }
|
||
/*// Texto con formatos especiales*/
|
||
if ( !strcmpi(Extension, "WRI") ) { textcolor(WHITE); return; }
|
||
if ( !strcmpi(Extension, "WPC") ) { textcolor(WHITE); return; }
|
||
if ( !strcmpi(Extension, "RTF") ) { textcolor(WHITE); return; }
|
||
|
||
/*// M£sica*/
|
||
if ( !strcmpi(Extension, "MID") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "MOD") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "VOC") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "CMF") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "WAV") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "S3M") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "MP1") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "MP2") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "MP3") ) { textcolor(BLUE); return; }
|
||
if ( !strcmpi(Extension, "QPV") ) { textcolor(BLUE); return; }
|
||
|
||
/* // Imagenes y videos*/
|
||
if ( !strcmpi(Extension, "FLI") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "FLC") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "MPG") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "MOV") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "AVI") ) { textcolor(MAGENTA); return; }
|
||
|
||
if ( !strcmpi(Extension, "CEL") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "PNG") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "PCX") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "GIF") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "JPG") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "LBM") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "TGA") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "DIB") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "MAC") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "WPG") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "BMP") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "PIC") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "RLE") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "CUT") ) { textcolor(MAGENTA); return; }
|
||
if ( !strcmpi(Extension, "TIF") ) { textcolor(MAGENTA); return; }
|
||
|
||
/* // Lenguajes*/
|
||
if ( !strcmpi(Extension, "C") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "CPP") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "C++") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "PAS") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "ASM") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "VBX") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "LIB") ) { textcolor(BROWN); return; }
|
||
if ( !strcmpi(Extension, "BAS") ) { textcolor(BROWN); return; }
|
||
|
||
/*// Compresores*/
|
||
if ( !strcmpi(Extension, "ZIP") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "ARJ") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "ARC") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "AIN") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "LZH") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "TGZ") ) { textcolor(LIGHTBLUE); return; }
|
||
if ( !strcmpi(Extension, "RAR") ) { textcolor(LIGHTBLUE); return; }
|
||
|
||
/*
|
||
if ( !strcmpi(Extension, "") ) { textcolor(); return; }
|
||
if ( !strcmpi(Extension, "") ) { textcolor(); return; }
|
||
if ( !strcmpi(Extension, "") ) { textcolor(); return; }
|
||
*/
|
||
|
||
textcolor(LIGHTGRAY);
|
||
}
|
||
/*
|
||
//
|
||
// Ü Ü ÜÜÜÜ Ü ÜÜÜÜ
|
||
// Û Û Û Û Û Û
|
||
// ÛßßÛ Ûßß Û Ûßßß
|
||
// Û Û Û Û Û
|
||
// ß ß ßßßß ßßßß ß
|
||
*/
|
||
void Help(void)
|
||
{
|
||
int i;
|
||
|
||
clrscr(); textcolor(WHITE); textbackground(BLUE);
|
||
|
||
cprintf("Copyright (c) J.D. Soft. 1994-98. Jos‚ David Guill‚n Dominguez... JD_DIR vú2.5");
|
||
textbackground(BLACK);
|
||
|
||
textcolor(LIGHTBLUE);
|
||
for ( i=2; i<12; i++ )
|
||
{
|
||
gotoxy(1,i); cprintf("³"); gotoxy(80,i); cprintf("³");
|
||
}
|
||
textcolor(BLUE); gotoxy(1,12); cprintf("³"); gotoxy(80,12); cprintf("³");
|
||
textcolor(LIGHTBLUE);
|
||
gotoxy(1,13); cprintf("³"); gotoxy(80,13); cprintf("³");
|
||
gotoxy(1,14); cprintf("³"); gotoxy(80,14); cprintf("³");
|
||
textcolor(BLUE);
|
||
gotoxy(1,15); cprintf("³"); gotoxy(80,15); cprintf("³");
|
||
gotoxy(1,16); cprintf("³"); gotoxy(80,16); cprintf("³");
|
||
textcolor(LIGHTBLUE); gotoxy(1,17); cprintf("³"); gotoxy(80,17); cprintf("³");
|
||
textcolor(BLUE);
|
||
for ( i=18; i<22; i++ )
|
||
{
|
||
gotoxy(1,i); cprintf("³"); gotoxy(80,i); cprintf("³\r\n");
|
||
}
|
||
gotoxy(1,23); cprintf("³"); gotoxy(80,23); cprintf("³");
|
||
|
||
textcolor(DARKGRAY); gotoxy(60,15); cprintf(" Ü ßÜ Û ß ");
|
||
gotoxy(60,16); cprintf(" ßÜ ß ß ß");
|
||
gotoxy(60,17); cprintf(" Ü ßÜ ß °°°°°°");
|
||
gotoxy(60,18); cprintf(" ßßÜ ß °°°±±±±±±");
|
||
gotoxy(60,19); cprintf("ÜÜ ß °°°±±±±²²²²²");
|
||
gotoxy(60,20); cprintf(" ßÜ °°±±±±²²²ÛÛÛÛÛ");
|
||
gotoxy(60,21); cprintf("ßÜÜ °±±±²²²ÛÛÛÛÛÛÛÛ");
|
||
gotoxy(60,22); cprintf(" °±±²²ÛÛÛÛÛÛÛÛß ");
|
||
gotoxy(60,23); cprintf("ßß °°±²²ÛÛÛÛÛÛÛÛ ");
|
||
|
||
textcolor(YELLOW); gotoxy( 2,15); cprintf("Par metros:");
|
||
gotoxy( 2,16); cprintf(" /# N£mero de columnas [1,3,4,5,6]");
|
||
gotoxy( 2,17); cprintf(" /S ¢ /E Ordenar por Tam¤o ¢ Extensi¢n");
|
||
gotoxy( 2,18); cprintf(" /R[c] Recursivo [Sin realizar pausas]");
|
||
textcolor(RED); gotoxy( 2,20); cprintf(" þPara configurar la ordenaci¢n y columnas por defecto");
|
||
gotoxy( 2,21); cprintf(" puedes usar la variable de entorno 'JD_DIR'");
|
||
textcolor(YELLOW); gotoxy( 2,22); cprintf(" --> set JD_DIR=[Ordenacion>N|S|E][Columnas]");
|
||
|
||
textcolor(LIGHTRED); gotoxy( 3,4); cprintf("Rev.5");
|
||
textcolor(RED); gotoxy( 3,5); cprintf("Dedico el par metro /R a OSCAR, al fin y al cabo");
|
||
gotoxy( 3,6); cprintf("lo puse por ‚l.");
|
||
|
||
textcolor(LIGHTRED);
|
||
gotoxy(55, 4); cprintf("Saludos a:");
|
||
textcolor(RED);
|
||
gotoxy(56, 5); cprintf("Alvaro Joshua Marcial");
|
||
gotoxy(56, 6); cprintf("Israel Millan Oscar ");
|
||
gotoxy(56, 7); cprintf("Lopez VD Zapper ");
|
||
gotoxy(56, 8); cprintf("Manolo Carlos Fernan ");
|
||
textcolor(LIGHTRED);
|
||
gotoxy(55,10); cprintf("Y a todos a los que no ");
|
||
gotoxy(55,11); cprintf("recuerdo ahora mismo ;-)");
|
||
textcolor(WHITE);
|
||
|
||
gotoxy(20, 6); cprintf( " __ ");
|
||
gotoxy(10, 7); cprintf( " ____ / / \\ ");
|
||
gotoxy(10, 8); cprintf( " / /³ ÛßßÜ /| ");
|
||
gotoxy(10, 9); cprintf( " ßßßÛ | Û Û/ ___---ÜÜ ");
|
||
gotoxy(10,10); cprintf( " //\\Û ³_ÛÜÜß ùù ÜÜßßï ");
|
||
gotoxy(10,11); cprintf( " __ßÜÜß/ ÜÜÜßßï ___ ");
|
||
gotoxy(10,12); cprintf( " ù-__ ÜÜßßßï ,-, | ");
|
||
gotoxy(10,13); cprintf( " / ÜÜßßï /-- /ù\\ |_ | .");
|
||
gotoxy(10,14); cprintf( " ùßß ù-, \\_/ | ");
|
||
gotoxy(10,15); cprintf( " --ï ");
|
||
/*
|
||
__
|
||
____ / / \
|
||
/ /³ ÛßßÜ /|
|
||
ßßßÛ | Û Û/ ___---ÜÜ
|
||
//\Û ³_ÛÜÜß ùù ÜÜßßï
|
||
__ßÜÜß/ ÜÜÜßßï /
|
||
ù-__ ÜÜßßßï ,/\ /^\
|
||
/ ÜÜßßï ,/ ï\ `\ `\
|
||
ùßß \/ï\ `\/ï
|
||
/ï
|
||
*/
|
||
/*
|
||
__
|
||
____ / / \
|
||
/ /³ ÛßßÜ /|
|
||
ßßßÛ | Û Û/ ___---ÜÜ
|
||
//\Û ³_ÛÜÜß ùù ÜÜßßï
|
||
__ßÜÜß/ ÜÜÜßßï ___
|
||
ù-__ ÜÜßßßï ,-, |
|
||
/ ÜÜßßï /-- /ù\ |_ | .
|
||
ùßß ù-, \_/ |
|
||
--ï
|
||
*/
|
||
gotoxy(1,24);
|
||
|
||
}
|
||
|
||
/*
|
||
//
|
||
// ÜÜÜÜ ÜÜÜÜ ÜÜÜ Ü Ü ÜÜ ÜÜÜ ÜÜÜ ÜÜ Ü ÜÜÜÜ Ü Ü ÜÜÜÜÜ
|
||
// Û Û Û Û Û ÛßÜßÛ Û Û Û Û Û Û Û Û Û ÛÛ Û Û
|
||
// Ûßß Û Û ÛÛß Û Û ÛßßÛ Û Ûß ÛßßÛ Ü Ü Û Û Û Û Û Û Û ÜÜÜ
|
||
// Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û ßß Û Û Û Û ÛÛ Û Û
|
||
// ß ßßßß ß ß ß ß ß ß ß ßßß ß ß ßßß ßßßß ßßßß ß ß ßßßßß
|
||
*/
|
||
void formatea_u_long( unsigned long Numero, char *Inter_Chg) {
|
||
|
||
char Buffer1[80];
|
||
char Buffer2[80];
|
||
int c;
|
||
|
||
sprintf(Buffer1, "%lu", Numero);
|
||
strcpy(Buffer2, "\0");
|
||
strrev(Buffer1);
|
||
c = strlen( Buffer1 );
|
||
while( c >= 3 ){
|
||
c -= 3;
|
||
strncat( Buffer2, Buffer1, 3);
|
||
strrev(Buffer1);
|
||
Buffer1[c] = '\0';
|
||
strrev(Buffer1);
|
||
if(strlen(Buffer1)!=0)
|
||
strcat( Buffer2, "." );
|
||
}
|
||
strcat( Buffer2, Buffer1);
|
||
strrev(Buffer2);
|
||
strcpy(Inter_Chg, Buffer2);
|
||
|
||
/*// return Buffer2;*/
|
||
}
|
||
|
||
/*
|
||
//
|
||
// ÜÜÜÜÜ Ü Ü ÜÜÜÜ ÜÜÜÜÜ ÜÜÜÜ Ü Ü ÜÜÜÜ ÜÜÜÜ ÜÜÜÜÜ Ü Ü ÜÜÜ Ü
|
||
// Û ÛÛ Û Û Û Û Û Û ÛßÜßÛ Û Û Û ÛÛ Û Û Û Û
|
||
// Û Û Û Û Ûßß Û Û ÛßÛß Û Û Ûßß Ûßß Û Û Û Û ÛßßßÛ Û
|
||
// Û Û ÛÛ Û Û Û Û Û Û Û Û Û Û Û ÛÛ Û Û Û
|
||
// ßßßßß ß ß ß ßßßßß ß ß ß ß ßßßß ß ßßßßß ß ß ß ß ßßßß
|
||
*/
|
||
void informe_final(char Unidad, char tipo)
|
||
{
|
||
int unidad; /*unidad a examinar (0=A:, 1=B:, etc.)*/
|
||
union REGS r; /*registros para llamada a DOS*/
|
||
long ctot; /*n£mero total clusters en el disco <1>*/
|
||
unsigned int clib; /*n£mero de clusters libres*/
|
||
int scl; /*n£mero de sectores por cluster*/
|
||
unsigned long bcl; /*n£mero de bytes por cluster*/
|
||
long btot; /*n£mero de bytes totales <2>*/
|
||
long blib; /*n£mero de bytes libres*/
|
||
|
||
char Buffer[80];
|
||
char ID_Volumen[13] = "JD ComputeR";
|
||
float E_Total;
|
||
|
||
if ( (unidad = Unidad) == -1 )
|
||
unidad = bdos(0x19,0,0); /*utiliza actual */;
|
||
|
||
r.h.ah = 0x36; /*Get Disk Free Space*/
|
||
r.h.dl = unidad+1;
|
||
intdos(&r,&r); /*llama a DOS <6>*/
|
||
|
||
scl = r.x.ax; /*sectores por cluster*/
|
||
bcl = (long)scl*r.x.cx; /*bytes por cluster*/
|
||
ctot = r.x.dx; /*clusters total*/
|
||
clib = r.x.bx; /*clusters libres*/
|
||
if ( tipo == 0 )
|
||
{
|
||
textcolor(YELLOW); cprintf("%13d", Numero_Archivos);
|
||
textcolor(LIGHTBLUE); cprintf(" Archivo/s, consumen un total de ");
|
||
textcolor(YELLOW); formatea_u_long(Espacio_T_consumido, Buffer);
|
||
cprintf("%s", Buffer );
|
||
textcolor(LIGHTBLUE); cprintf(" bytes");
|
||
if ( Recursivo ) cprintf( "\r\n" );
|
||
} else {
|
||
if ( Recursivo )
|
||
{
|
||
textcolor(YELLOW); cprintf("\n\r%13d", Numero_rArchivos);
|
||
textcolor(LIGHTBLUE); cprintf(" Archivo/s, consumen un TOTAL de ");
|
||
textcolor(YELLOW);
|
||
if ( Espacio_Tr_consumido > 1048576 )
|
||
{
|
||
sprintf( Buffer, "%.2f", (float)Espacio_Tr_consumido/1048576 );
|
||
} else
|
||
formatea_u_long(Espacio_Tr_consumido, Buffer);
|
||
cprintf("%s", Buffer );
|
||
textcolor(LIGHTBLUE);
|
||
if ( Espacio_Tr_consumido > 1048576 )
|
||
cprintf(" Mbytes");
|
||
else
|
||
cprintf(" bytes");
|
||
}
|
||
textcolor(LIGHTBLUE); cprintf(" de ");
|
||
E_Total = ( ( (float)(ctot*bcl) ) / 1048576 );
|
||
textcolor(YELLOW); cprintf("%.1f", E_Total );
|
||
textcolor(LIGHTBLUE); cprintf(" Mbytes\r\n"); /*\n*/
|
||
|
||
|
||
textcolor(YELLOW); formatea_u_long( (unsigned long)(clib*bcl), Buffer );
|
||
cprintf("%13s", Buffer );
|
||
textcolor(LIGHTBLUE); cprintf(" bytes de espacio libre en ");
|
||
textcolor(YELLOW); cprintf("%c:", (unidad + 65) );
|
||
textcolor(LIGHTBLUE); cprintf(" Volumen:");
|
||
|
||
sprintf( ID_Volumen, "%c:\*.*", (unidad + 65) );
|
||
findfirst( ID_Volumen, &fi[0], FA_LABEL );
|
||
if ( fi[0].atrib & FA_LABEL )
|
||
{
|
||
strncpy( ID_Volumen, fi[0].name, 8 ); ID_Volumen[8] = '\0';
|
||
Buffer[0]=0;
|
||
while( ID_Volumen[Buffer[0]] != NULL && Buffer[0]<8) Buffer[0]++;
|
||
if ( Buffer[0]==8 )
|
||
strncat( ID_Volumen, &(fi[0].name[9]), 3);
|
||
|
||
textcolor(LIGHTRED); cprintf(" %s", ID_Volumen );
|
||
}
|
||
textcolor(LIGHTGRAY);
|
||
cprintf("\r\n");
|
||
}
|
||
|
||
}
|
||
|
||
|
||
int sort_function( const void far *a, const void far *b)
|
||
{
|
||
|
||
switch( Ordenado ){
|
||
case POR_NOMBRE:
|
||
fi_TMP = (FileInfo *)a;
|
||
/*_f*/strncpy( BufferA, fi_TMP -> name, 12);
|
||
fi_TMP = (FileInfo *)b;
|
||
/*_f*/strncpy( BufferB, fi_TMP -> name, 12);
|
||
BufferA[12] = '\0';
|
||
BufferB[12] = '\0';
|
||
return( strcmp(BufferA, BufferB) );
|
||
case POR_TAMANYO:
|
||
fi_TMP = (FileInfo *)a; L1 = fi_TMP -> size;
|
||
fi_TMP = (FileInfo *)b; L2 = fi_TMP -> size;
|
||
if ( L1 < L2 ) return -1;
|
||
if ( L1 == L2 ) return 0;
|
||
if ( L1 > L2 ) return 1;
|
||
break;
|
||
case POR_EXTENCION:
|
||
fi_TMP = (FileInfo *)a;
|
||
/*_f*/strncpy( BufferA, strrev(fi_TMP -> name), 3);
|
||
strrev(fi_TMP -> name);
|
||
fi_TMP = (FileInfo *)b;
|
||
/*_f*/strncpy( BufferB, strrev(fi_TMP -> name), 3);
|
||
strrev(fi_TMP -> name);
|
||
BufferA[3] = '\0'; BufferB[3] = '\0';
|
||
strrev(BufferA); strrev(BufferB);
|
||
return( strcmp(BufferA, BufferB) );
|
||
}
|
||
return 0;
|
||
|
||
}
|
||
|
||
|
||
|
||
char Rellena_path( char *path, char *half_path )
|
||
{
|
||
char unidad[5], directorio[255], nombre[15], ext[6], flags;
|
||
char *ptr, cont, Buffer[255];
|
||
|
||
flags = fnsplit( half_path, unidad, directorio, nombre, ext );
|
||
*unidad = toupper( *unidad );
|
||
if ( !(flags & DRIVE) ) *unidad=getdisk() + 'A';
|
||
if ( !(flags & DIRECTORY) )
|
||
{
|
||
if ( getcurdir( *unidad - 'A'+ 1, Buffer ) != -1 )
|
||
sprintf( directorio, "\\%s", Buffer );
|
||
else
|
||
sprintf( directorio, "\\NO ESTA DISPONIBLE" );
|
||
}
|
||
if ( strcmp( directorio, ":") == 0 )
|
||
strcpy( directorio, "\\");
|
||
|
||
if ( !(flags & FILENAME) ) { strcpy( nombre, "*"); strcpy( ext, ".*"); }
|
||
|
||
fnmerge( path, unidad, directorio, nombre, ext );
|
||
|
||
if ( strchr( path, '*' ) == NULL && strchr( path, '?' ) == NULL &&
|
||
findfirst( path, &ftmp, (FA_HIDDEN | FA_DIREC) ) == 0 )
|
||
if (ftmp.atrib & FA_DIREC)
|
||
strcat(path, "\\*.*");
|
||
|
||
return *unidad;
|
||
}
|
||
|