Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Mauvaise nouvelle si vous possédez un de ces smartphones : très bientôt vous ...
[Actualités]
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
[Actualités]
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
[Actualités]
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
[Actualités]
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tr...
[Actualités]
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélÃ...
[Actualités]
WhatsApp nous permet désormais de réagir à un message en « tirant des confet...
[Actualités]
Les pliables ne décollent pas ? Samsung réduit ses plans de production
[Actualités]
PS5, Sony bannit-il les utilisateurs qui utilisent le navigateur "caché" de la ...
[Actualités]
Test The Thing Remastered (PS5) - Une refonte du classique de 2002
[Articles]
Legacy of Kain Soul Reaver 1&2 Remastered
[Articles]
The Thing Remastered
[Articles]
Mario & Luigi : L'épopée fraternelle
[Articles]
Deel acquiert la plateforme mondiale de gestion de la rémunération Assemble
[Articles]
Xuan Yuan Sword: The Gate of Firmament
[Articles]
Cyber-sécurité : bilan 2024 et regard vers 2025 par Andy Garth, directeur Aff...
[Articles]
Diesel Legacy: The Brazen Age
[Articles]
FANTASIAN Neo Dimension
[Articles]
Fairy Tail 2
[Articles]
Réseaux sociaux inondés d'arnaques deepfake ; Formbook, voleur d'informations ...
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] indent - indente un programme C, ou change son style. [size=18] [b]Résumé[/b] [/size] [b]indent [/b] [options] [fichiers] [b]indent [/b] [options] [fichier] [-o fichier] [b]indent [/b] --version [size=18] [b]Description[/b] [/size] Cette page de man est générée à partir du fichier [i]indent.texinfo[/i]. C'est l'édition de "The [b]indent[/b] Manual", pour la dernière mise à jour de la version d'Indent. [b]indent[/b] rend le programme plus lisible en faisant automatiquement les indentations et le formatage. Il permet aussi de convertir un programme d'un style d'écriture à un autre. [b]indent comprend un bonne part de la syntaxe du C, mais il peut traiter[/b] des fichiers dont la syntaxe est incomplète ou erronée. Dans les version 1.2 et plus récentes, le style GNU est le style d'indentation par défaut. [size=18] [b]Options[/b] [/size] [b]-bad, [b]--blank-lines-after-declarations[/b][/b] [table][row][col] [/col][col]Place une ligne blanche après les déclarations. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-bap, [b]--blank-lines-after-procedures[/b][/b] [table][row][col] [/col][col]Place une ligne blanche après le corps des procédures. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-bbb, [b]--blank-lines-before-block-comments[/b][/b] [table][row][col] [/col][col]Place une ligne blanche avant les commentaires sous forme de boîte. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-bbo, [b]--break-before-boolean-operator[/b][/b] [table][row][col] [/col][col]Préfère couper les lignes devant les opérateurs booléens [b][/b] Voir [b][/b] COUPURE DES LIGNES TROP LONGUES.[/col][/row][/table] [b]-bc, [b]--blank-lines-after-commas[/b][/b] [table][row][col] [/col][col]Passe à la ligne après une virgule dans une déclaration. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-bl, [b]--braces-after-if-line[/b][/b] [table][row][col] [/col][col]Met des crochets sur la ligne suivant un [b]if[/b], un [b]while[/b], un [b]for[/b], une déclaration de fonction, etc. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-bli[i]n[/i][b][/b], [b]--brace-indent[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Nombre d'espaces pour l'indentation des crochets [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-bls, [b]--braces-after-struct-decl-line[/b][/b] [table][row][col] [/col][col]Met des crochets sur la ligne suivant une déclaration de structure. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-br, [b]--braces-on-if-line[/b][/b] [table][row][col] [/col][col]Met les crochet sur la ligne après [b]if[/b], etc. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-brs, [b]--braces-on-struct-decl-line[/b][/b] [table][row][col] [/col][col]Met des crochets sur la même ligne après une déclaration de structure. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-bs, [b]--Bill-Shannon[/b], [b]--blank-before-sizeof[/b][/b] [table][row][col] [/col][col]Place un espace entre [b]sizeof[/b] et son argument. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-c[i]n[/i][b][/b], [b]--comment-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Place les commentaires à droite du code à la colonne [i]n[/i]. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-cbi[i]n[/i][b][/b], [b]--case-brace-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Indente les crochets après un case de N espaces. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-cd[i]n[/i][b][/b], [b]--declaration-comment-column[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Place les commentaires à droite des déclaration à la colonne [i]n[/i]. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-cdb, [b]--comment-delimiters-on-blank-lines[/b][/b] [table][row][col] [/col][col]Place les délimiteurs de commentaires sur une ligne blanche. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-cdw, [b]--cuddle-do-while[/b][/b] [table][row][col] [/col][col]Colle le `}' et le while d'un [b]do[/b] {} while;. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-ce, [b]--cuddle-else[/b][/b] [table][row][col] [/col][col]Colle le else avec le `}' qui le précède. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-ci[i]n[/i][b][/b], [b]--continuation-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Indentation continue de [i]n[/i] espaces. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-cli[i]n[/i][b][/b], [b]--case-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Indentation pour les case de [i]n[/i] espaces. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-cp[i]n[/i][b][/b], [b]--else-endif-column[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Place les commentairs à droite des assertions [b]#else[/b] et de [b][/b] #endif à la colonne [i]n[/i]. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-cs, [b]--space-after-cast[/b][/b] [table][row][col] [/col][col]Place une espace après un opérateur de transtypage. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-d[i]n[/i][b][/b], [b]--line-comments-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Spécifie l'indentation des commentaires qui ne sont pas à droite de code. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-bfda, [b]--break-function-decl-args[/b][/b] [table][row][col] [/col][col]Coupe la ligne avant tous les arguments d'une déclaration. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-bfde, [b]--break-function-decl-args[/b][/b] [table][row][col] [/col][col]Coupe la ligne après le dernier argument d'une déclaration. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-di[i]n[/i][b][/b], [b]--declaration-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Place les variables à la colonne [i]n[/i]. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-fc1, [b]--format-first-column-comments[/b][/b] [table][row][col] [/col][col]Place les commentaires à la première colonne. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-fca, [b]--format-all-comments[/b][/b] [table][row][col] [/col][col]Ne pas désactiver le formatage des commentaires. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-gnu, [b]--gnu-style[/b][/b] [table][row][col] [/col][col]Utilise le style GNU. C'est l'option par défaut. [b][/b] Voir [b][/b] STYLES COURANTS.[/col][/row][/table] [b]-hnl, [b]--honour-newlines[/b][/b] [table][row][col] [/col][col]Préfère respecter les sauts de ligne du fichier d'entrée. [b][/b] Voir [b][/b] COUPURE DES LIGNES TROP LONGUES.[/col][/row][/table] [b]-i[i]n[/i][b][/b], [b]--indent-level[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Fixe le niveau d'indentation à [i]n[/i] espace. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-ip[i]n[/i][b][/b], [b]--parameter-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Indente les paramètres dans le vieux style d'écriture des fonctions de [i]n[/i] spaces. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-kr, [b]--k-and-r-style[/b][/b] [table][row][col] [/col][col]Utilise le style Kernighan & Ritchie. [b][/b] Voir [b][/b] STYLES COURANTS.[/col][/row][/table] [b]-l[i]n[/i][b][/b], [b]--line-length[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Fixe la longueur maximale d'une ligne de code à [i]n[/i]. [b][/b] Voir [b][/b] COUPURE DES LIGNES TROP LONGUES.[/col][/row][/table] [b]-lc[i]n[/i][b][/b], [b]--comment-line-length[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Fixe la longueur maximale d'une ligne de commentaire à [i]n[/i]. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-lp, [b]--continue-at-parentheses[/b][/b] [table][row][col] [/col][col]Aligner les lignes d'une parenthèse. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-lps, [b]--leave-preprocessor-space[/b][/b] [table][row][col] [/col][col]Laisser l'espace entre `#' et une directive du préprocesseur. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-nbad, [b]--no-blank-lines-after-declarations[/b][/b] [table][row][col] [/col][col]Ne place pas de lignes blanches après les déclarations. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-nbap, [b]--no-blank-lines-after-procedures[/b][/b] [table][row][col] [/col][col]Ne place pas de lignes blanches après le corps des procédures. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-nbbo, [b]--break-after-boolean-operator[/b][/b] [table][row][col] [/col][col]Ne pas préférer couper les lignes avant les opérateurs booléens. [b][/b] Voir [b][/b] COUPURE DES LIGNES TROP LONGUES.[/col][/row][/table] [b]-nbc, [b]--no-blank-lines-after-commas[/b][/b] [table][row][col] [/col][col]Ne pas placer de saut de ligne après les virgules dans les déclarations. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-nbfda, [b]--dont-break-function-decl-args[/b][/b] [table][row][col] [/col][col]Ne pas placer chaque argument d'une fonction sur une ligne séparée lors de sa déclaration. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-ncdb, [b]--no-comment-delimiters-on-blank-lines[/b][/b] [table][row][col] [/col][col]Ne pas placer les délimiteurs de commentaires [b]/*[/b] et [b]*/[/b] sur des lignes séparées. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-ncdw, [b]--dont-cuddle-do-while[/b][/b] [table][row][col] [/col][col]Ne pas coller [b]}[/b] et [b]while[/b] dans un [b]do[/b] {} while;. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nce, [b]--dont-cuddle-else[/b][/b] [table][row][col] [/col][col]Ne pas coller [b]}[/b] et [b]else[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-ncs, [b]--no-space-after-casts[/b][/b] [table][row][col] [/col][col]Ne pas placer d'espace après les opérateurs de transtypage. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nfc1, [b]--dont-format-first-column-comments[/b][/b] [table][row][col] [/col][col]Ne pas formater les commentaires dans la première colonne. (comportement pas défaut.) [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-nfca, [b]--dont-format-comments[/b][/b] [table][row][col] [/col][col]Ne pas formater les commentaires. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-nhnl, [b]--ignore-newlines[/b][/b] [table][row][col] [/col][col]Ne pas préférer respecter les sauts de ligne du fichier d'entrée. [b][/b] Voir [b][/b] COUPURE DES LIGNES TROP LONGUES.[/col][/row][/table] [b]-nip, [b]--no-parameter-indentation[/b][/b] [table][row][col] [/col][col]Ne pas indenter les paramètres. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-nlp, [b]--dont-line-up-parentheses[/b][/b] [table][row][col] [/col][col]Ne pas aligner les parenthèses. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-npcs, [b]--no-space-after-function-call-names[/b][/b] [table][row][col] [/col][col]Ne pas placer d'espace après la fonction dans les appels de fonctions. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nprs, [b]--no-space-after-parentheses[/b][/b] [table][row][col] [/col][col]Ne pas placer d'espace après chaque '(' et chaque ')'. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-npsl, [b]--dont-break-procedure-type[/b][/b] [table][row][col] [/col][col]Place le type de la procédure sur la même ligne que son nom. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-nsaf, [b]--no-space-after-for[/b][/b] [table][row][col] [/col][col]Ne place pas d'espace après chaque [b]for[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nsai, [b]--no-space-after-if[/b][/b] [table][row][col] [/col][col]Ne place pas d'espace après chaque [b]if[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nsaw, [b]--no-space-after-while[/b][/b] [table][row][col] [/col][col]Ne place pas d'espace après chaque [b]while[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nsc, [b]--dont-star-comments[/b][/b] [table][row][col] [/col][col]Ne place pas d'`*' à gauche des commentaires. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-nsob, [b]--leave-optional-blank-lines[/b][/b] [table][row][col] [/col][col]Ne pas supprimer les lignes superflues. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-nss, [b]--dont-space-special-semicolon[/b][/b] [table][row][col] [/col][col]Ne pas placer d'espace avant le point virgule après certaines assertions. Désactive `-ss'. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-nut, [b]--no-tabs[/b][/b] [table][row][col] [/col][col]Utilise des espaces plutôt que des tabulations. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-nv, [b]--no-verbosity[/b][/b] [table][row][col] [/col][col]Mode non verbeux. [b][/b] Voir [b][/b] MISCELLANEOUS OPTIONS.[/col][/row][/table] [b]-orig, [b]--original[/b][/b] [table][row][col] [/col][col]Utilise le style original de Berkeley. [b][/b] Voir [b][/b] STYLES COURANTS.[/col][/row][/table] [b]-npro, [b]--ignore-profile[/b][/b] [table][row][col] [/col][col]Ne pas lire les fichiers de profil `.indent.pro'. [b][/b] Voir [b][/b] INVOKING INDENT.[/col][/row][/table] [b]-pcs, [b]--space-after-procedure-calls[/b][/b] [table][row][col] [/col][col]Place un espace entre le nom d'une procedure appelée et `('. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-pi[i]n[/i][b][/b], [b]--paren-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Specifie l'indentation par parenthèse ouvrante quand une assertion est coupée sur plusieurs lignes. Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-pmt, [b]--preserve-mtime[/b][/b] [table][row][col] [/col][col]Conserver les droits et l'horodatage du fichier. Voir [b][/b] MISCELLANEOUS OPTIONS.[/col][/row][/table] [b]-prs, [b]--space-after-parentheses[/b][/b] [table][row][col] [/col][col]Place une espace avant chaque '(' et après chaque ')'. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-psl, [b]--procnames-start-lines[/b][/b] [table][row][col] [/col][col]Place le type d'une procédure sur la ligne au dessus de son nom. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-saf, [b]--space-after-for[/b][/b] [table][row][col] [/col][col]Place un espace après chaque [b]for[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-sai, [b]--space-after-if[/b][/b] [table][row][col] [/col][col]Place un espace après chaque [b]if[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-saw, [b]--space-after-while[/b][/b] [table][row][col] [/col][col]Place un espace après chaque [b]while[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-sbi[i]n[/i][b][/b], [b]--struct-brace-indentation[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Spécifie l'indentation pour [b]strut[/b], [b]union[/b] et [b]enum[/b]. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-sc, [b]--start-left-side-of-comments[/b][/b] [table][row][col] [/col][col]Ajouter le caractère `*' au début des commentaires, pour former des boîtes. [b][/b] Voir [b][/b] COMMENTAIRES.[/col][/row][/table] [b]-sob, [b]--swallow-optional-blank-lines[/b][/b] [table][row][col] [/col][col]Supprimer les lignes blanches superflues. [b][/b] Voir [b][/b] LIGNES BLANCHES.[/col][/row][/table] [b]-ss, [b]--space-special-semicolon[/b][/b] [table][row][col] [/col][col]Quand une assertion [b]for[/b] ou [b]while[/b] tient sur une ligne, placer un espace avant le point virgule. [b][/b] Voir [b][/b] ASSERTIONS.[/col][/row][/table] [b]-st, [b]--standard-output[/b][/b] [table][row][col] [/col][col]Écrit sur la sortie standard. [b][/b] Voir [b][/b] INVOCATION D'D' INDENT.[/col][/row][/table] [b]-T[/b] [table][row][col] [/col][col]Indique à [b]indent[/b] le nom des types. [b][/b] Voir [b][/b] DÉCLARATIONS.[/col][/row][/table] [b]-ts[i]n[/i][b][/b], [b]--tab-size[/b][i]n[/i][b][/b][/b] [table][row][col] [/col][col]Spécifie la taille de la tabulation, en espaces. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-ut, [b]--use-tabs[/b][/b] [table][row][col] [/col][col]Utilise les tabulations. C'est l'option par défaut. [b][/b] Voir [b][/b] INDENTATION.[/col][/row][/table] [b]-v, [b]--verbose[/b][/b] [table][row][col] [/col][col]Mode verbeux. [b][/b] Voir [b][/b] MISCELLANEOUS OPTIONS.[/col][/row][/table] [b]-version[/b] [table][row][col] [/col][col]Afficher le numéro de version de [b]indent[/b]. [b][/b] Voir [b][/b] MISCELLANEOUS OPTIONS. [/col][/row][/table] [size=18] [b]Invocation[/b] [/size] Comme dans la version 1.3, le format de la commande [b]indent[/b] est : .in +5 .nf .na indent [[i]options[/i]] [[i]input-files[/i]] indent [[i]options[/i]] [[i]single-input-file[/i]] [-o [i]output-file[/i]] .in -5 .ad .fi Ce format n'est pas le même que celui de versions plus anciennes, ni que celui d'autres versions d' [b]indent.[/b] La première forme accepte plusieurs fichiers en entrée. [b]Indent[/b] fait une copie de chaque fichier, et le fichier original est remplacé par sa version indentée. Voir [b]BACKUP[/b] FILES. Le seconde forme n'accepte qu'un fichier en entrée, ou l'entrée standard, et permet de spécifier un fichier de sortie. Utilisez l'option `-st' pour une sortie sur la sortie standard. Cela n'est possible qu'avec la deuxième forme. Si aucun nom de ficher d'entrée n'est fourni, l'entrée standard est utilisée. C'est aussi le cas si le nom de fichier est `-'. Ces trois commandes indentent `confus.c' et écrivent le résultat dans `clair.c' : .in +5 .nf .na indent confus.c -o clair.c indent -st confus.c > clair.c cat confus.c | indent -o clair.c .in -5 .ad .fi La plupart des options d'[b]indent[/b] servent à définir de quelle façon le code est formaté. Chaque option une forme longue, comme dans la version 1.2. Celles-ci ont pour préfixe `--' ou `+' ( `+' est transformé en `--' pour maintenir la conformité avec le standard POSIX). Dans ce document on utilise plutôt la forme courte tradionnelle. Voir la [b]LISTE[/b] DES OPTIONS qui indique les deux formes. La commande : .in +5 .nf .na indent -br test/metabolism.c -l85 .in -5 .ad .fi indente `test/metabolism.c' avec les options `-br' et `-l85', et écrit le fichier de sauvegarde dans le répertoire `test'. Avec les noms d'option longs le même commande devient : .in +5 .nf .na indent --braces-on-if-line --line-length185 test/metabolism.c indent +braces-on-if-line +line-length185 test/metabolism.c .in -5 .ad .fi Si vous utilisez souvent le même ensemble d'options vous pouvez placer celles-ci dans un fichier de profil nommé `.indent.pro'. [b]indent[/b] cherche d'abord un fichier de profil défini par la variable [b]INDENT_PROFILE[/b]. Si cette variable n'est pas définie il cherche le fichier `.indent.pro' dans le répertoire courant, puis dans le répertoire personnel de l'utilisateur. Les autres version d'[b]indent[/b] ont un comportement différent : elles chargent tous les fichiers s'ils existent. Le fichier de profil est simplement le liste des options telle qu'elle apparaîtrait sur la ligne de commande, séparées par des espaces, des tabulations ou des sauts de ligne. On peut utiliser les commentaires du C ou du C++. Les options de la ligne de commande sont traitées [i]après[/i] celles du fichier de profil et priment sur elles, à une exception près : les options explicites priment toujours sur les options globales (voir [b]STYLES[/b] COURANTS). L'option `-npro' force [b]indent[/b] à ne pas lire les fichiers de profil. [size=18] [b]Fichiers de sauvegarde[/b] [/size] Comme dans sa version 1.3, GNU [b]indent[/b] fait une sauvegarde dans le style GNU, comme GNU Emacs. On peut donc faire des sauvegardes [i]simples[/i] ou [i]numérotées.[/i] Les fichiers de sauvegarde simples sont nommés d'après le nom du fichier auquel on ajoute un suffixe, par défaut un tilde (`~'), ou la chaîne définie par la variable d'environnement [b]SIMPLE_BACKUP_SUFFIX[/b]. Les sauvegardes numérotées du fichier momeraths.c vont ressembler à `momeraths.c.~23~', où 23 est la numéro de la sauvegarde. Si on fait une sauvegarde numérotée de `src/momeraths.c', elle s'appellera `src/momeraths.c.~.I V~', où .I V est supérieur à la plus haute version qui existe déja dans le répertoire. La variable d'environnement [b]VERSION_WIDTH[/b] permet d'indiquer le nombre de chiffres significatifs. Si elle vaut 2, par exemple, les fichiers ressembleront à `momeraths.c.~04~' Le type de sauvegarde est fonction de la variable d'environnement [b]VERSION_CONTROL[/b], qui peut contenir `simple', pour une copie simple, `numbered', pour une copie numérotée, ou encore `numbered-existing', pour faire une copie numérotée uniquement s'il en existe déja une dans le répertoire, et sinon une simple. Les autres versions d'[b]indent[/b] utilisent le suffixe .BAK. Ce comportement peut être obtenu en donnant à [b]SIMPLE_BACKUP_SUFFIX[/b] la valeur `.BAK'. Notez aussi que les autres versions d'[b]indent[/b] font toujours les sauvegardes dans le réperoire courant, contrairement au comportement actuel de GNU [b]indent[/b]. [size=18] [b]Styles courants[/b] [/size] Il existe plusieurs styles courants d'écriture en C. Le style GNU, le style Kernighan & Ritchie, et le style de Berkeley. Un style peut être défini par une option [i]globale[/i], ou par un ensemble d'options explicites. Les options explicites priment toujours sur celles définies par au sein l'option globale. Comme dans la version 1.2, le style par défaut est le style GNU. On peut aussi le spécifier avec l'option globale `-gnu', qui correspond à : .in +5 .nf .na -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -nprs -psl -saf -sai -saw -nsc -nsob .in -5 .ad .fi Le style GNU est le style de préference du projet GNU. C'est celui que GNU Emacs encourage à utiliser, et dans lequel les portions en C de Emacs sont écrites. (Les personnes intéressés par le développement de programmes pour le projet GNU peuvent utilement se référer à "Standard de Codage GNU", qu traite également de la sémantique et de la portabilité, par exemple pour les questions touchant à l'utilisation de la mémoire ou à la taille des entiers). Le style Kernighan & Ritchie a commencé à être utilisé après la parution du fameux livre "The C Programming Language". Il est spécifié par l'option `-kr', et correspond à : .in +5 .nf .na -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -nprs -npsl -saf -sai -saw -nsc -nsob -nss .in -5 .ad .fi Le style Kernighan & Ritchie ne place pas tout le temps les commentaires à droite du code à la même colonne (il ne place pas non plus toujours un seul espace à la droite du code). Le choix a donc été fait de la colonne 33. Le style original de Berkeley est obtenu avec l'option `-orig' (ou `--original'). Il correspond à : .in +5 .nf .na -nbad -nbap -bbo -bc -br -brs -c33 -cd33 -cdb -ce -ci4 -cli0 -cp33 -di16 -fc1 -fca -hnl -i4 -ip4 -l75 -lp -npcs -nprs -psl -saf -sai -saw -sc -nsob -nss -ts8 .in -5 .ad .fi [size=18] [b]Lignes blanches[/b] [/size] Les styles de programmation utilisent les lignes blanches à plusieurs occasions. Voici les options d'[b]indent[/b] les concernant: L'option `-bad' provoque l'ajout d'une ligne blanche après chaque bloc de déclarations. Avec l'option `-nbad', cet ajout n'aura pas lieu. L'option `-bap' provoque l'ajout d'une ligne blanche après chaque corps de procédure. Avec l'option `-nbad', cet ajout n'aura pas lieu. L'option `-bbb' provoque l'ajout d'une ligne blanche après chaque bloc de commentaire (voir [b]COMMENTAIRES[/b]). Avec l'option `-nbbb', cet ajout n'aura pas lieu. L'option `-sob` provoque la suppression de toutes les lignes blanches superflues. Avec l'option `-nsob', cette suppression n'aura pas lieu. [size=18] [b]--blank-lines-after-declarations[/b] [/size] L'option `-bad' provoque l'ajout d'une ligne blanche après chaque bloc de déclarations. Avec l'option `-nbad', cet ajout n'aura pas lieu. Par exemple, .in +5 .nf .na char *foo; char *bar; /* Séparation entre deux blocs de déclarations. */ int baz; .in -5 .ad .fi donnera avec [b]indent[/b] -bad .in +5 .nf .na char *foo; char *bar; /* Séparation entre deux blocs de déclarations. */ int baz; .in -5 .ad .fi et avec [b]indent[/b] -nbad .in +5 .nf .na char *foo; char *bar; /* Séparation entre deux blocs de déclarations. */ int baz; .in -5 .ad .fi [size=18] [b]--blank-lines-after-procedures[/b] [/size] L'option `-bap' provoque l'ajout d'une ligne blanche après chaque corps de procédure. Avec l'option `-nbad', cet ajout n'aura pas lieu. Par exemple, .in +5 .nf .na int foo () { puts("Salut !"); } /* La procédure bar est moins importante. */ char * bar () { puts("est-ce bien utile ?"); } .in -5 .ad .fi donnera avec [b]indent[/b] -bap .in +5 .nf .na int foo () { puts ("Salut !"); } /* La procédure bar est moins importante. */ char * bar () { puts("est-ce bien utile ?"); } .in -5 .ad .fi et avec [b]indent[/b] -nbad .in +5 .nf .na int foo () { puts ("Hi"); } /* La procédure bar est moins importante. */ char * bar () { puts("est-ce bien utile ?"); } .in -5 .ad .fi [size=18] [b]Commentaires[/b] [/size] [b]indent formate les commentaires dans le style C (commençant par `/*',[/b] se terminant par `*/', et pouvant contenir des sauts de ligne) et dans le style C++ (commençant par `//' et se terminant avec la ligne). [b]indent traite les commentaires différemment selon leur contexte. Il[/b] distingue ceux qui suivent une instruction, ceux qui suivent une déclaration, ceux qui suivent une directive du préprocesseur et ceux qui ne sont pas précédés de code d'aucune sorte, par exemple ceux qui commencent une ligne (mais pas forcément à la première colonne). [b]indent fait aussi la différence entre les commentaires situés à [/b] l'intérieur de procédures et de blocs , et ceux qui ne le sont pas. Ceux qui commencent une ligne à l'intérieur d'une procedure seront indentés à la colonne où le code est indenté à cet endroit, sauf s'il commence au début de la ligne, auquel cas il est laissé inchangé. [b]indent laisse les commentaires sous forme de boîte inchangés. Ce type[/b] de commentaire est défini rigoureusement ainsi : le `/*' initial est immédiatement suivi par `*', `=', `_', `-', ou par un saut de ligne suivi d'un `*' aligné avec l'astérisque situé au dessus, comme on le voit sur ces exemples : .in +5 .nf .na /************************************ * Un commentaire dans une boîte !! * ************************************/ /* * Un autre style de commentaire * inclus dans une «boîte». */ .in -5 .ad .fi [b]indent laissera ces commentaires inchangés. Il changera seulement les [/b] tabulations en un nombre d'espaces correspondant. Si l'option `-bbb' est spécifiée, tout commentaire sous forme de boîte sera précédé d'une ligne blanche, sauf s'il est précédé de code sur sa première ligne. Les commentaires qui n'ont pas cette forme seront formatés, c'est-à -dire alignés sur la marge de droite et remplis d'espaces à gauche. Un simple saut de ligne sera considéré comme un espace, mais une ligne blanche, ou un groupe d'au moins deux sauts de lignes, comme un changement de paragraphe. Le formatage des commentaires qui commencent après la première colonne est activé par l'option `-fca'. Pour formater ceux qui commencent à la première colonne, utilisez l'option `-fc1'. Ces formatages sont inactivés par défaut. La marge de droite est par défaut à la colonne 78, mais peut être spécifiée avec l'option `-lc'. Si celle-ci ne permet pas l'affichage d'un commentaire, elle sera modifiée pour la durée de ce commentaire. La marge ne sera pas respectée si le commentaire n'est pas formaté. Si un commentaire commence une ligne (c'est-à -dire s'il il n'y a pas de de texte, qui ne soit pas lui même un commentaire, à sa gauche), il sera indenté à la colonne à laquelle il sera trouvé, sauf s'il se trouve à l' intérieur d'un bloc de code (et qu'il ne commence pas à la première colonne), auquel cas il sera indenté comme ce code. Ceci peut être modifié par l'option `-d' qui spécifie de combien le commentaire est déplacé vers la [i]gauche[/i]. Ainsi, `-d2' place les commentaires deux colonnes à gauche du code. Pour aligner le commentaire avec le code, utilisez l'option `-fc1'. Un commentaire commençant à la première colonne ne sera pas formaté. Les commentaires situés à droite du code sont placés par défaut à la colonne 33. Cela peut être modifié par l'une des trois options suivantes. `-c' spécifie la colonne pour les commentaires qui suivent du code en général, `-cd' pour ceux qui suivent des déclarations et `-c' pour ceux qui suivent les directives du preprocesseur [b]#else[/b] et [b]#endif[/b]. Si le code à gauche d'un commentaire dépasse la colonne à laquelle le commentaire doit commencer, celui-ci commencera à la première tabulation après le code, ou dans le cas d'une directive de compilation, un espace après la fin de cette directive. L'option `-cdb' place les délimiteurs de commentaires sur des lignes à part. Ainsi le commentaire [b]/*[/b] Loving hug */ deviendra : .in +5 .nf .na /* Il vaudrait mieux tout effacer */ .in -5 .ad .fi Les astérisques peuvent être placés au début des commentaires occupant plusieurs lignes avec l'option `-sc'. Un commentaire d'une ligne comme le précédent devient alors, avec `-cdb -sc' : .in +5 .nf .na /* * Il vaudrait mieux tout effacer */ .in -5 .ad .fi [size=18] [b]Assertions[/b] [/size] Les options `-br' ou `-bl' spécifient comment formater les crochets. L'option `-br' les formate ainsi : .in +5 .nf .na if (x > 0) { x--; } .in -5 .ad .fi L'option `-bl' les formate ainsi : .in +5 .nf .na if (x > 0) { x--; } .in -5 .ad .fi On peut ajouter à l'option `-bl' l'option `-bli' qui spécifie de combien d'espaces les crochets sont indentés. La valeur par défaut est 2. `-bli0' donne le résultat suivant : .in +5 .nf .na if (x > 0) { x--; } .in -5 .ad .fi On peut ajouter à l'option `-br' l'option `-ce', qui indique à [b]indent[/b] de placer le [b]else[/b] immédiatement après le `}' qui le précède dans une construction if-then-else. Ainsi, avec `-br -ce', on obtient par exemple : .in +5 .nf .na if (x > 0) { x--; } else { fprintf (stderr, "...OK "); } .in -5 .ad .fi Ainsi avec `-br -nce', on obtiendrait .in +5 .nf .na if (x > 0) { x--; } else { fprintf (stderr, "...OK "); } .in -5 .ad .fi L'option `-cdw' indique à indent de placer le [b]while[/b] juste après le `}' dans une boucle do-while, pour donner par exemple : .in +5 .nf .na do { x--; } while (x); .in -5 .ad .fi Avec `-ncdw' on obtiendrait : .in +5 .nf .na do { x--; } while (x); .in -5 .ad .fi L'option `-cli' spécifie de combien d'espaces doit être indenté chaque branchement case par rapport à la droite de l'instruction [b]switch[/b]. La valeur par défaut est zéro, et donne quelque chose comme : .in +5 .nf .na switch (i) { case 0: break; case 1: { ++i; } default: break; } .in -5 .ad .fi Avec l'option `-cli2', ce code deviendrait : .in +5 .nf .na switch (i) { case 0: break; case 1: { ++i; } default: break; } .in -5 .ad .fi L'indentation des crochets après l'instruction case peut être spécifiée par l'option `-cbi[i]n[/i]'. Par exemple, `-cli2 -cbi0' donnera : .in +5 .nf .na switch (i) { case 0: break; case 1: { ++i; } default: break; } .in -5 .ad .fi Si un point-virgule est sur la même ligne qu'une assertion [b]for[/b] ou [b]while[/b], l'option `-ss' permet de placer un espace avant le point-virgule. Cela met bien en évidence le point-virgule, on voit mieux que l'assertion [b]while[/b] ou [b]for[/b] n'a pas de corps. Avec l'option `-nss', ce comportement n'a pas lieu. L'option `-pcs' place un espace entre le nom d'une procédure appelée et le `(' (par exemple, [b]puts[/b] ("OK");). L'option `-npcs' retirera cet espace. L'option `-cs' place un espace après les opérateurs de transtypage. L'option `-bs' place un espace entre [b]sizeof[/b] et son argument. Dans certaines versions cette option est appelée l'option `Bill_Shannon'. L'option `-saf' place un espace entre un [b]for[/b] et la parenthèse qui le suit. C'est le comportement par défaut. L'option `-sai' place un espace entre un [b]if[/b] et la parenthèse qui le suit. C'est le comportement par défaut. L'option `-saw' place un espace entre un [b]while[/b] et la parenthèse qui le suit. C'est le comportement par défaut. L'option `-prs' placera un espace entre les parenthèses et ce qu'elles contiennent. Cela donnera par exemple : .in +5 .nf .na while ( ( e_code - s_code ) < ( dec_ind - 1 ) ) { set_buf_break ( bb_dec_ind ); *e_code++ = ' '; } .in -5 .ad .fi [size=18] [b]DÉclarations[/b] [/size] Par défaut [b]indent[/b] aligne les identificateurs, à la colonne spécifiée par l'option `-di'. `-di16' donnera par exemple : .in +5 .nf .na int foo; char *bar; .in -5 .ad .fi On peut spécifier une petite valeur à l'option `-di' (un ou deux) pour que les identificateurs soient placés le plus à gauche possible : .in +5 .nf .na int foo; char *bar; .in -5 .ad .fi La valeur donnée à `-di' affectera toujours les variables qui sont sur des lignes séparées. Par exemple `-di2' donnera : .in +5 .nf .na int foo; .in -5 .ad .fi L'option `-bc' permet de passer une ligne après chaque virgule dans une déclaration : .in +5 .nf .na int a, b, c; .in -5 .ad .fi L'option `-nbc' force le comportement contraire : .in +5 .nf .na int a, b, c; .in -5 .ad .fi L'option `-bfda' permet de passer une ligne après chaque virgule dans la déclaration des arguments d'une fonction. Ceux-ci vont apparaître à un niveau d'indentation immédiatement supérieur à celui de la déclaration de la fonction. C'est pratique pour les fonctions qui prennent beaucoup d'arguments. L'option `-bfde' permet de passer une ligne avant le crochet fermant. Les options `-nbdfa' et `-nbdfe' ont les comportements contraires. Le comportement par défaut est `-nbdfa -nbdfe'. Par exemple, .in +5 .nf .na void foo (int arg1, char arg2, int *arg3, long arg4, char arg5); .in -5 .ad .fi donne avec l'option `-bfda' : .in +5 .nf .na void foo ( int arg1, char arg2, int *arg3, long arg4, char arg5); .in -5 .ad .fi et avec en plus l'option `-bfde' : .in +5 .nf .na void foo ( int arg1, char arg2, int *arg3, long arg4, char arg5 ); .in -5 .ad .fi L'option `-psl' place, lors d'une définition de procédure, le type de celle-ci sur la ligne précédant son nom. Ce style est nécessaire pour que le programme [b]etags[/b] puisse correctement lire le code, de même que pour certaines fonctions du [b]mode[/b] C d'Emacs. L'option `-T' permet d'indiquer à [b]indent[/b] les noms de tous les types définis par [b]typedef[/b] dans votre programme. `-T' peut être spécifié plusieurs fois. Par exemple si vous avez de telles déclarations : .in +5 .nf .na typedef unsigned long CODE_ADDR; typedef enum {red, blue, green} COLOR; .in -5 .ad .fi vous pourrez utiliser les options `-T CODE_ADDR -T COLOR'. Les options `-brs' ou `-bls' spécifient comment formater les crochets dans une déclaration de structure. L'option `-brs' donne : .in +5 .nf .na struct foo { int x; }; .in -5 .ad .fi et l'option `-bls' donne : .in +5 .nf .na struct foo { int x; }; .in -5 .ad .fi [size=18] [b]Indentation[/b] [/size] L'indentation consiste à placer chaque ligne de code à une certaine distance de la marge de droite. après le début d'un bloc, par exemple après un [b]if[/b] ou un [b]for[/b], le niveau d'indentation est augmenté de la valeur spécifiée par l'option `-i'. Si le début d'un bloc est situé sur plusieurs lignes, chaque ligne est indentée par rapport à la prédédente d'un nombre d'espaces spécifié par l'option `-ci'. La valeur par défaut de `-ci' est 0. Cependant si l'option `-lp' est spécifiée, et si une ligne a une parenthèse ouvrante qui ne se ferme pas sur cette même ligne, alors les lignes suivantes seront alignées sur la position qui suit immédiatement cette parenthèse ouvrante. Cela s'applique aussi à `[', et à `{' (dans les listes d'initialisations). Voilà par exemple un résultat possible avec `-nlp -ci3' : .in +5 .nf .na p1 = first_procedure (second_procedure (p2, p3), third_procedure (p4, p5)); .in -5 .ad .fi et avec `-lp', qui donne un code peut-être un peu plus clair : .in +5 .nf .na p1 = first_procedure (second_procedure (p2, p3), third_procedure (p4, p5)); .in -5 .ad .fi Quand une assertion est située entre plusieurs paires de parenthèses, chaque paire supplémentaire entraîne un niveau d'indentation supplémentaire : .in +5 .nf .na if ((((i < 2 && k > 0) || p == 0) && q == 1) || n = 0) .in -5 .ad .fi L'option `-ip[i]N[/i]\' permet de spécifier le nombre d'espaces supplémentaires par parenthèse. Avec `-ip0' le code précédent deviendrait : .in +5 .nf .na if ((((i < 2 && k > 0) || p == 0) && q == 1) || n = 0) .in -5 .ad .fi [b]indent suppose que les tabulations sont placées à des intervalles[/b] réguliers à la fois dans les flux d'entrée et dans les flux de sortie. Ces intervalles sont de 8 colonnes par défaut, et peuvent être spécifiés avec l'option `-ts' (comme dans la version 1.2). Les tabulations sont traitées comme la quantité équivalente d'espaces. L'identation des déclarations de type dans l'ancienne façon de déclarer les fonctions est contrôlée par l'option `-ip'. L'option `-ip5' donnera par exemple : .in +5 .nf .na char * create_world (x, y, scale) int x; int y; float scale; { . . . } .in -5 .ad .fi Pour assurer la compatibilité avec les autres versions d'indent, l'option `-nip' est définie et est équivalente à `ip0'. On peut en ANSI C placer un espace, dans les directives du préprocesseur, entre le `#' et le nom de la commande. Le comportement par défaut d'[b]indent[/b] est d'enlever cet espace. L'option `-lps' permet de laisser cet espace. L'option `-nlps' redonne le comportement par défaut. L'option `-ppi' remplace `-nlps' et `-lps'. Cette option `-ppi' permet d'indenter les statements conditionnels des directives du préprocesseur. Ainsi avec l'option `-ppi 3' .in +5 .nf .na #if X #if Y #define Z 1 #else #define Z 0 #endif #endif .in -5 .ad .fi devient .in +5 .nf .na #if X # if Y # define Z 1 # else # define Z 0 # endif #endif .in -5 .ad .fi [size=18] [b]Coupure des lignes trop longues[/b] [/size] L'option `-l[i]n[/i]', ou `--line-length[i]n[/i]', permet de spécifier la longueur maximale d'une ligne de code C, sans inclure les commentaires qui pourraient suivre sur la même ligne. Quand la ligne est plus longue que cette longueur, GNU [b]indent[/b] essaye de couper la ligne à une place logique. C'est une nouveauté de la version 2.1, qui n'est encore ni très intelligente ni très flexible. Il y a pour l'instant deux options qui permettent de contrôler comment l'algorithme détermine à quel endroit couper la ligne. Avec l'option `-bbo', [b]indent[/b] préfèrera couper la ligne avant les opérateurs booléens [b]&&[/b] et [b]||[/b]. Avec l'option `-nbbo' il n'aura pas cette préférence. L'option `-bbo' est l'option par défaut. Avec les options `-bbo', `--line-length60' et `--ignore-newlines', on peut obtenir quelque chose comme : .in +5 .nf .na if (mask && ((mask[0] == '
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Social
Mauvaise nouvelle si vous possédez un de ces smartphones : très bientôt vous ne pourrez plus utiliser WhatsApp
Windows
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
Jeux Vidéos
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
Tablettes
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
Google
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tracker de Google
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?