1

voilà, à part ziplib, ppg et xpak, y a quoi comme formats bien ?

j'ai l'intention de faire une lib kernel qui permettrait d'utiliser simplement les différents format (un argument supplémentaire viendrait spécifier le type de compression choisie, quoi) et faudrait déjà que je fasse un état des lieux avant de commencer ^^
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

2

shrnklib, ou un truc ds le genre.
lzf0.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

ah oué, je vais chercher ç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

4

il y a aussi un truc qui s'appelle powercompress je crois ^^

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

5

et qui fait 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

6

qui est potentiellement "un format bien", j'en sais pas plus happy

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

7

ça fait un peu léger grin
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

8

Bah PowerCompress, c'est un gros logiciel qui utilise un format maison. Le logiciel est bien (utilitaire de compression avec interface graphique), mais son défaut est justement ce format de compression maison. Ce serait bien d'avoir un logiciel fournissant les même fonctionnalités avec la possibilité de choisir son format de compression (c'est ce que tu va faire peut-être Flanker ?)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

y aura pas d'interface graphique je pense
juste un passage en ligne de commande du genre

1 / 0 = compresslib("dossier\fichier", "ZIP")
1 / 0 = compresslib("dossier\fichier", "default")
1 / 0 = compresslib("dossier\","XPAK") <- compresse tout un dossier
"ZIP" = compresslib("dossier\fichier") <- décompresse

et int compresslib@0000(char* file, int compress_type);
int compresslib@0001(char* folder, int compress_type);
int compresslib@0002(char* file);
int compresslib@0003(char* folder);
int compresslib@0004(char* file); <- renvoie le type d'origine du fichier compressé
int compresslib@0005(char* file); <- renvoie la taille d'origine du fichier compressé

après, libre aux gens d'utiliser un front-end graphique

compresslib utilisera par contre les libs existantes, je ne vais pas recopier le code de chaque mode de compression #modnon#

en gros, ça permettra d'avoir une interface un peu unifiée tout en permettant un accès aux différents types de compression
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

10

OK. Bonne initiative smile
Par contre, ce qui serait pratique, c'est qu'on puisse rajouter des formats facilement.
Soit en utilisant des plug-ins, mais l'utilisateur risque de se retrouver avec un tas de plug-ins. Quoique, il pourrait ne mettre que ceux qui l'intéressent (et je doute que qq1 s'amuse à compresser ses fichiers en différents formats ).
Soit en utilisant un fichier de conf. Mais là ça devient un peu compliqué pour gérer les cas où le fichier de conf est erroné, si on veut que le soft soit stable.
Sinon, on peut tout simplement mettre à jour ta lib en dur.... Mais cette méthode a le désavantage de regrouper le code de toutes les libs nécessaires pour compresser dans les différents formats sad Sauf pour les libs dynamiques, si tu gères ça manuellement. Mais dans ce cas, autant gérer des plug-ins, non ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

11

Sasume :
OK. Bonne initiative smile
Par contre, ce qui serait pratique, c'est qu'on puisse rajouter des formats facilement.
Soit en utilisant des plug-ins, mais l'utilisateur risque de se retrouver avec un tas de plug-ins. Quoique, il pourrait ne mettre que ceux qui l'intéressent (et je doute que qq1 s'amuse à compresser ses fichiers en différents formats ).
Soit en utilisant un fichier de conf. Mais là ça devient un peu compliqué pour gérer les cas où le fichier de conf est erroné, si on veut que le soft soit stable.
Sinon, on peut tout simplement mettre à jour ta lib en dur.... Mais cette méthode a le désavantage de regrouper le code de toutes les libs nécessaires pour compresser dans les différents formats sad Sauf pour les libs dynamiques, si tu gères ça manuellement. Mais dans ce cas, autant gérer des plug-ins, non ?

oué, mais les plugs-in, le désavantage, c'est devoir recoder les libs déjà existantes
ce que je peux faire, c'est gérer les libs qui ont une interface de type basic dans un fichier de conf
par exemple :
format "KOMP" syntaxe compression flib2("komp:%s") avec %s = folder\file
format "XPAK" syntaxe decompression depak("%s")

etc....
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

12

Flanker
: oué, mais les plugs-in, le désavantage, c'est devoir recoder les libs déjà existantes

Je ne pense pas (mais j'ai peut-être mal réfléchi).
Je pense que le plug-in pourrait être simplement un front-end pour appeler les libs existantes, tout en fournissant une API qui convient à ta lib pour que tu puisses l'appeler.
En gros, chaque plug-in permettrait d'unifier l'API d'une (ou plusieurs) lib(s) déjà existante(s).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

13

Sasume
:
Flanker
: oué, mais les plugs-in, le désavantage, c'est devoir recoder les libs déjà existantes

Je ne pense pas (mais j'ai peut-être mal réfléchi).
Je pense que le plug-in pourrait être simplement un front-end pour appeler les libs existantes, tout en fournissant une API qui convient à ta lib pour que tu puisses l'appeler.
En gros, chaque plug-in permettrait d'unifier l'API d'une (ou plusieurs) lib(s) déjà existante(s).

oué, mais le front-end consistant quasiment tout le temps à faire un appel ti-basic du genre flib2("komp:folder\file"), ça ferait perdre bcp de place pour rien je pense

y a que les libs kernels qui auront besoin d'être codées en dur (et encore, c'est à vérifier, mais je pense que décrire la syntaxe des arguments à mettre serait un peu galère 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

14

Par exemple, on pourrait dire que les plug-ins sont des progs kernel (plus précisément des libs à priori), exposant cette API (en considérant qu'un plugin fournit un seul format de compression) :
unsigned long get_magic(); // Permet d'identifier que cette lib est bien un plug-in de compresslib
unsigned short compress_file(const char *file);
unsigned short compress_folder(const char *folder); // (pour les dossiers on peut p-ê faire autrement)
unsigned short get_type(const char *compressed_file);
unsigned short uncompress(const char *file);
// etc...


Ensuite, chaque lib (plugin) contiendrait un code du genre :
#include "unelib.h"

unsigned short compress_file(const char *file)
{
  // Code utilisant la lib en question pour compresser
}

// etc...
// Par exemple, pour un plugin utilisant ziplib :

#include "ziplib.h"

unsigned short compress_file(const char *file)
{
  SYM_ENTRY *sym_file = SymFindPtr(SYMSTR(file),0);
  ziplib_compress(sym_file,0);

  return ...;
}
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

15

Sasume :
Par exemple, on pourrait dire que les plug-ins sont des progs kernel (plus précisément des libs à priori), exposant cette API (en considérant qu'un plugin fournit un seul format de compression) :
unsigned long get_magic(); // Permet d'identifier que cette lib est bien un plug-in de compresslib
unsigned short compress_file(const char *file);
unsigned short compress_folder(const char *folder); // (pour les dossiers on peut p-ê faire autrement)
unsigned short get_type(const char *compressed_file);
unsigned short uncompress(const char *file);
// etc...


Ensuite, chaque lib (plugin) contiendrait un code du genre :
#include "unelib.h"

unsigned short compress_file(const char *file)
{
  // Code utilisant la lib en question pour compresser
}

// etc...
// Par exemple, pour un plugin utilisant ziplib :

#include "ziplib.h"

unsigned short compress_file(const char *file)
{
  SYM_ENTRY *sym_file = SymFindPtr(SYMSTR(file),0);
  ziplib_compress(sym_file,0);

  return ...;
}

bin après courte réflexion, ça se marie très bien avec le fichier de conf, non ?
si c'est une lib kernel, tu peux faire un plug-in qui propose une interface basic pour cette lib, plug-in dont la syntaxe sera notée dans le fichier de conf tongue

après, je veux bien donner la possibilité de gérer également une interface purement kernel pour les plugs-in (ce qui permet le passage de handles et de gérer les fichiers temporaires), mais qui soit décrite dans le fichier de conf
(il va exister de toute façon, vu que je veux définir un format de compression par défaut)
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

16

Ah ok, pour les formats de compression "non kernel", genre ppg ou xpak tu penses faire appel dans compresslib à superstart() ou xpak() ?
Je pensais que tu linkerais compresslib avec les les libs statiques qui permettent de décompresser le ppg ou le xpak...
Dans ce cas, c'est effectivement plus simple avec un fichier de conf. oui
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

17

Sasume :
Ah ok, pour les formats de compression "non kernel", genre ppg ou xpak tu penses faire appel dans compresslib à superstart() ou xpak() ?
Je pensais que tu linkerais compresslib avec les les libs statiques qui permettent de décompresser le ppg ou le xpak...
Dans ce cas, c'est effectivement plus simple avec un fichier de conf. oui

ah non, je ne veux pas linker en statique, sinon ma lib va prendre 50ko pour des formats pas toujours très utilisés tongue

pour le ppg, je ne sais pas encore ce que je vais faire, vu que je ne sais pas si superstart permet de décompresser qqc sans l'exécuter (et c'est un peu mon problème d'ailleurs, je vais peut-être devoir faire une lib kernel qui sache décompresser le ppg)
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

18

Flanker :
je vais peut-être devoir faire une lib kernel qui sache décompresser le ppg)

Einstein de thibaut savait décompresser les ppg.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

19

Twindruff
:
Flanker :
je vais peut-être devoir faire une lib kernel qui sache décompresser le ppg)

Einstein de thibaut savait décompresser les ppg.

bin oui, mais s'il faut lancer un shell pour décompresser le ppg, c'est pas très user-friendly cheeky
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

20

Attendez je lance windows pour pouvoir installer linux cheeky #troll#

Donc si lancer un shell pour decompresser c'est user friendly cheeky
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

21

Me prennez pas pour un mongol hum2 , je disais ça parceque Thibaut aurait pu te refiler son code, Flanker, si ça te faisait chier de le refaire.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

22

Twindruff :
Me prennez pas pour un mongol hum2 , je disais ça parceque Thibaut aurait pu te refiler son code, Flanker, si ça te faisait chier de le refaire.

ah ok smile

bah le code de ttstart est déjà dispo, suffit juste de faire une lib kernel autour ^^
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

23

pour xpak je compte exposer aussi une API plus bas niveau que la ligne de commande basic ^^ (en fait j'hésite entre mistub seulement et mistub+API nostub maison)

et si j'ai bien compris le pb pour une API maison c'est que pour gérer le ghost space, à moins d'exiger HW*Patch il faut que l'appelant déclare un buffer vide assez grand pour contenir tout le code, non ? (ce qui ne pose pas de pb pour un programme compressé, mais c'est plus embêtant pour un programme non compressé)



euh et sinon pour économiser la RAM il faudrait peut-être que tu utilises le chargement à la demande des libs ^^ (enfin ça dépend si tu comptes gérer 50 formats ou seulement 3)

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

24

Pollux
: et si j'ai bien compris le pb pour une API maison c'est que pour gérer le ghost space, à moins d'exiger HW*Patch il faut que l'appelant déclare un buffer vide assez grand pour contenir tout le code, non ?

Ou peut être convenir avec le programme client d'un protocole pour changer le masque de la protection d'exécution via le trap #11.

25

hmm c'est vrai que vu la rapidité des fonctions de compression/décompression, ça risque pas d'avoir un impact significatif sur la vitesse grin tu as une idée du temps qu'il faut pour changer le masque ?

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

26

Pollux :
pour xpak je compte exposer aussi une API plus bas niveau que la ligne de commande basic ^^ (en fait j'hésite entre mistub seulement et mistub+API nostub maison)

et si j'ai bien compris le pb pour une API maison c'est que pour gérer le ghost space, à moins d'exiger HW*Patch il faut que l'appelant déclare un buffer vide assez grand pour contenir tout le code, non ? (ce qui ne pose pas de pb pour un programme compressé, mais c'est plus embêtant pour un programme non compressé)



euh et sinon pour économiser la RAM il faudrait peut-être que tu utilises le chargement à la demande des libs ^^ (enfin ça dépend si tu comptes gérer 50 formats ou seulement 3)

euh pour les libs kernel, evideööent que je vais faire unchargement a la demande
par contre, pour les libs nostub, je vais faire un appel basic, donc je ne vois le pb de ghost space confus

bon, j´ arrete la, j´ai trop de öal avec les claviers allemands :/
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

27

pour le ghost space c'était un HS, tu ne serais pas concerné puisque tu appellerais en kernel ^^

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

28

ah , un clavier français, ça fait du bien ^^

ça resemblerait à quoi l'api maison ?
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

29

rien d'extraordinaire : un identificateur magique et un tableau de pointeur vers des fonctions... m'enfin je sais pas si y a encore la fameuse limite de kevin sur les dll, si non ça pourrait être encore plus simple ^^

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

30

ça serait possible que tu fasses qqc d'à peu près standardisable ?
quitte à mettre au point un système de lib dynamique nostub, autant le faire proprement ^^
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