90

ah non, y aura 5 fonctions en fait embarrassed
getTiOSVarType() -> un octet (exemple : 243 = 0xF3 = ASM_TAG pour un ASM)
getUserlibVarType() -> un octet (compris entre 0 et 15 en fait)
getVarType() -> un long (représentant une chaîne de 4o, exemple "ASM" ou "FUNC")
getLocalVarType() -> la même, mais en localisé (exemple "FONC" en français)
getSize() -> la taille du fichier d'origine

et peut-être
getTrueSize() -> la taille du fichier compressé
getComp() -> le type de compression (déjà fait en fait)


si le fichier n'est pas compressé, ces fonctions marchent quand même
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

91

Flanker :
getSize() -> la taille du fichier d'origine

j'appelerais plutôt ca getVarSize(), pour continuer sur la même lancée de nom
Flanker :
getTrueSize() -> la taille du fichier compressé
y'en a-t-il vraiment besoin ? dans une lib dynamique ? alors que ca se résume à *(unsigned short *)data ?

Et tu vas gérer comment les archives avec ces fonctions ?

92

hibou
:
Flanker :
getSize() -> la taille du fichier d'origine
j'appelerais plutôt ca getVarSize(), pour continuer sur la même lancée de nom

ok smile de toute façon les noms n'ont rien de figé, vu que pour l'instant c'est compress@000n grin
c'est juste dans le header qu'il y aura des noms smile
Flanker :
getTrueSize() -> la taille du fichier compressé
y'en a-t-il vraiment besoin ? dans une lib dynamique ? alors que ca se résume à *(unsigned short *)data ?
[/cite]
c'est plus par souci de complétude cheeky comme la fonction gettype donne le type des variables non compressées, je voulais qqc qui marche tout le temps ^^mais effectivement, je ne vais peut-être pas la mettre

Et tu vas gérer comment les archives avec ces fonctions ?

pour les archives, je ne sais pas encore. D'ailleurs il est fort probable qu'il faudra des fonctions séparées.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

93

pour "getTrueSize()", ça a quand même l'avantage d'être plus lisible et de porter plus facilement le code (humm, on se demande sur quelle machine m'enfin bon.. pour la taille que ça prend.. hehe)
A la rigueur tu pourrais peut être faire une sorte de macro confus

94

Flanker
:

Et tu vas gérer comment les archives avec ces fonctions ?

pour les archives, je ne sais pas encore. D'ailleurs il est fort probable qu'il faudra des fonctions séparées.

Et si tu faisais un truc générique dans le genre :
int n = getNbEmbeddedFiles(archive); //retourne tout le temps 1 pour ceusse compressés par ziplib
for (int j = 0; j < n ; j++)
{
getVarType(archive, j);
getUserlibVarType(archive, j);
}

95

un moment j'avais l'idée de faire une fonction
getArchiveInfo(archive) qui renverrait un handle au format VAT (i.e. 4 octets pour le nombre de variables, et 14 octets par variable - dont 8 pour le nom, et 6 pour diverses infos)
6octets pour les infos (dont 2 pour la taille), ça risque d'être dur, mais sinon ça permettrait d'avoir un truc facilement utilisable. Enfin, c'est faisable si ne sélectionne qu'une seuie des 4 fonctions pour le type smile


avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

96

bon, j'arrive normalement à récupérer les infos pour les fichiers ZIP, PEP, acf (compression d'Einstein), KOMP, ppg
par contre, acf et ppg ne peuvent pas être compressés ou décompressés (faut que je fasse une lib basic ou kernel pour le ppg d'abord)
par contre, va falloir que je code une possibilité de faire un appel basic pour ma lib, vu qu'il faut que je teste toutes ces compressions, avec un fichier de chaque type
(
data_type:
 dc.b    243,$0,118,0,'ASM',0;1218
data_type_lib:
 dc.b    243,$1,000,0,'LIB',0
 dc.b    220,$2,000,0,'BAS',0
data_type_prgm:
 dc.b    220,$2,110,0,'PRGM';1210
data_type_func:
 dc.b    220,$3,109,0,'FUNC';1209
 dc.b    226,$6,116,0,'MAC',0;1216
 dc.b    224,$7,113,0,'TEXT';1213
 dc.b    221,$9,114,0,'DATA';1214
 dc.b    225,$A,115,0,'FIG',0;1215
 dc.b    223,$B,111,0,'PIC',0;1211
 dc.b    222,$C,096,0,'GDB',0;1196
 dc.b    217,$4,107,0,'LIST';1207
 dc.b    217,$5,108,0,'MAT',0;1208
 dc.b    219,$5,108,0,'MAT',0;1208
 dc.b    045,$8,112,0,'STR',0;1212
 dc.b    248,$E,119,0,'OTH',0;1219
 dc.b    001,$D,106,0,'EXPR';1206
data_type_exe:
 dc.b    243,$0,000,0,'EXE',0
)
et encore, je ne gère pas les images PV (en niveau de gris, qui sont stockées dans des expressions), et les STR qui sont utilisées pour stocker des données (mais ça va venir happy)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

97

bon, un petit !up

on peut maintenant [dé]-compresser ppg, xpak, komp, zip, lzfo, pep
j'ai rajouté une fonction
compress::extractHandle equ compress@0003
;HANDLE = compress::extractHandle(HANDLE handle);

qui renvoie un handle non compressé (ou le même s'il ne l'est pas) en détruisant l'ancien

les fonctions disponibles sont :
compress::compress  equ  compress@0000
;short value = compress::compress(const char *file, long compress_type);
compress::extract equ compress@0001
;long value = compress::extract(const char *file);
compress::isCompressed equ compress@0002
;long value = compress::isCompressed(const char *file);
compress::extractHandle equ compress@0003
;HANDLE = compress::extractHandle(HANDLE handle);
compress:getDefaultCompression equ compress@0005
;long value = compress::getDefaultCompression(void);
compress::getVarSize equ compress@0006
;long value = compress::getVarSize(const char *file);
compress::getTIOSVarType equ compress@0007
;char value = compress::getTIOSVarType(const char *file);
compress::getUserlibVarType equ compress@0008
;char value = compress::getUserlibVarType(const char *file);
compress::getStringVarType equ compress@0009
;long value = compress::getStringVarType(const char *file);
compress::getLocalVarType equ compress@000A
;long value = compress::getLocalVarType(const char *file);
compress::BasicCommand equ compress@000B
;void compress::BasicCommand(const char *command);

je pense rajouter les fonctions getTIOSVarTypeAddress, getStringVarTypeAddress, getLocalVarTypeAddress, getVarSizeAddress, getUserlibVarTypeAddress qui feraient la même chose que les fonctions précédentes, mais avec comme paramètre l'adresse du début du fichier (ça va sûrement être utile pour les PackArchives et autres groupes de fichiers)


pour les PackArchives, je ne sais pas encore ce que je vais faire sorry
peut-être une fonction
getArchiveInfo qui renverrait une liste des fichiers présents avec leur type, leur taille, etc...
et une fonction ExtractFileFromArchive et une ExtractAllFilesFromArchives

vous en pensez quoi ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

98

compress:getDefaultCompression
+:
Local
Localized serait p-ê mieux ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

99

oué possible ^^ merci ;smile
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

100

Flanker :
qui renvoie un handle non compressé (ou le même s'il ne l'est pas) en détruisant l'ancien
arg, c'est embêtant ça.

101

bah c'est à toi de faire une copie si tu veux le sauvegarder ^^
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

102

moi je veux juste faire une décompression temporaire. c'est le truc décompressé que je veux jeter à la fin, pas l'original.
sans ça, ca m'interesse plus du tout ta lib...

103

bon, je vais rajouter une fonction qui le fait alors ^^
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

104

105

bon, je pense faire une copie du handle, même si celui d'origine n'est pas compressé, comme ça, pas besoin de savoir s'il était compressé, quoiqu'il arrive tu demandes l'extraction et tu le jettes, sans te poser de question. Ca te va ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

106

ben non, au revient au pb précédent. Que ce soit mon prog qui le fasse, ou la lib, c'est pas le pb, ce qui me gêne c'est de gacher la mémoire
J'ai comme l'impression que tu as des pb avec une lib de compression qui te supprime le fichier source, non ?

107

y a que ziplib que ne supprime pas le fichier source grin
en même temps, ce n'est pas trop grave, vu que la plupart du temps le fichier d'origine sera archivé ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

108

ha, les autres tu les appelles en ligne de commande, c'est ça ?

mouais, c'est pas top comme solution, mais c'est un moindre mal. Le gachis de mémoire ce fera juste pendant la décompression.
Aujourd'hui je gère le fait que je dois jeter le Handle ou non suivant qu'il était compressé ou non, donc avec le isCompress, je peux éviter d'avoir des copies de fichier inutiles.
Ce sera pour hibView 1.1 ^^.

109

hibou :
ha, les autres tu les appelles en ligne de commande, c'est ça ?

mouais, c'est pas top comme solution, mais c'est un moindre mal. Le gachis de mémoire ce fera juste pendant la décompression.
Aujourd'hui je gère le fait que je dois jeter le Handle ou non suivant qu'il était compressé ou non, donc avec le isCompress, je peux éviter d'avoir des copies de fichier inutiles.
Ce sera pour hibView 1.1 ^^.

oui, voilà, c'est exactement ça, en ligne de commande et bon, en théorie ça serait possible d'éviter la perte, mais ça serait vraiment crade et pas fiable sorry
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

110

> et une fonction ExtractFileFromArchive et une ExtractAllFilesFromArchives
Ca existe pas dans les appels systemes du kernel ?
Je ne sais plus.

111

si, mais uniquement pour les pack archives tongue
de toute façon, faut encore que je réfléchisse pour ça ^^
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant