Salut!

J'ai un projet (pédagogique), coder un petit shell.
Le petit plus, qu'il respecte les specifications POSIX.

Hehe et c'est là que commence le casse tête ^^. Ca fait 3 jours que je lis de la doc, notamment celle-ci: http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm
C'est (il me semble) ce qui se reproche le plus d'une version officielle et gratuite des spécificités décrites par la norme.

C'est immense! Et je m'y perd.. C'est la première fois que je me penche sur une norme et j'ai du mal à en extraire les infos et les règles qui vont m'être utiles...

Donc je me suis dis que je pourrai peut être décomposer ce shell en plusieurs parties et vous demander pour chacune d'elles, si vous savez de quel côté je dois regarder pour être sur de respecter ce que définit la norme.

La premiere partie c'est la "readline". J'aimerai développer une version simplifié de la "readline" maintenue par Chet Ramey.

C'est à dire, une fonction qui prend en paramètre un prompt et qui renvois la ligne validée par l'utilisateur, par l'envoi d'un '\n' ou d'un '\0' (EOF/EOL).
J'aimerai au moins implémenter la gestion de l'historique par l'appuie sur les flèches directionnelles (haut et bas). L'edition de lignes grace aux flèches droite et gauche, le retour arrière et la suppression. Et pourquoi pas la selection (en gras) pour permettre la suppression ou la copie d'une portion de la ligne. Ainsi que quelques touches du type "home" ou "end" pour se déplacer rapidement sur la ligne. De plus il faudrait (d'après POSIX??) que la taille de la ligne soit potentiellement infinie.

Pour la réaliser, j'ai droit à toute les fonctions du man 2 de MacOS, le reste je le recode ( pédagogie <3 ).
Cette fonction "my_readline" va donc devoir au moins:
- Modifier les attributs du terminal
- Lire sur l'entrée standard
- Ecrire sur les sorties standard et erreur
- Allouer et libérer de la memoire
- Jouer avec les termcaps
- Lire et Ecrire sur un fd (chargement/déchargement de l'historique des commandes)

Donc voilà, après 3 jours de lecture en diagonale, je n'arrive pas vraiment à définir ce qui peut faire que "my_readline" soit considéré "POSIX Compliant"...

Le fond du problème, c'est que j'ai vraiment du mal à extraire de cette doc, les infos, règles et spécificités qui me sont destiné (enfin, qui sont destiné à ce que veut faire ma fonction).

S'il y en a qui y voient plus clair que moi, merci de me faire profiter de vos lumières!
Sam