SCR/AL1 - TOME III. Les librairies utilitaires
Syntax
LzhEncodeGnl(getfn, putfn, sizfn)
int (*getfn)(), (*putfn)();
long (*sizfn)();
Description
Fonction générale de compactage de données basée sur l'algorithme de Lempel-Zev et sur la méthode de Huffmann.
Cette fonction prend 3 pointeurs vers des fonctions en argument :
Valeur retournée
Le code retour est nul sauf en cas d'erreur
Dans le cas du compactage d'un fichier, les fonctions peuvent être par exemple définies comme suit :
FILE *LZH_infile, *LZH_outfile;
LzhGetFile()
{
return(getc(LZH_infile));
}
LzhPutFile(c)
int c;
{
return(putc(c, LZH_outfile));
}
long LzhSizFile()
{
long pos;
fseek(LZH_infile, 0L, 2);
pos = ftell(LZH_infile);
fseek(LZH_infile, 0L, 0);
return(pos);
}
et l'appel à la fonction d'encodage :
LzhEncodeFile(filein, fileout)
char *filein, *fileout;
{
int rc;
LZH_infile = fopen(filein, "rb");
if(LZH_infile == 0) return(-1);
LZH_outfile = fopen(fileout, "wb+");
if(LZH_outfile == 0) {
fclose(LZH_infile);
return(-1);
}
rc = LzhEncodeGnl(LzhGetFile, LzhPutFile, LzhSizFile);
fclose(LZH_infile);
fclose(LZH_outfile);
return(rc);
}
Rien n'empêche donc de ne compacter qu'une partie de fichier ou de stocker dans le fichier résultat d'autres données comme le nom du fichier en clair. De plus, on peut facilement encrypter les données compactées en intervenant au niveau de la fonction putfn.
Voir également
LzhDecodeGnl(), LzhEncodeFile(), LzhEncodeStr()
LzhDecodeGnl(getfn, putfn)
LzhEncodeGnl(getfn, putfn, sizfn)
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be