diff --git a/Theorie/C/datatypes.rst b/Theorie/C/datatypes.rst
index 6927710c6fc0c24046bc7d9fc731a34c781bf924..4015b0a362660635894206deaacf46468c7f5157 100644
--- a/Theorie/C/datatypes.rst
+++ b/Theorie/C/datatypes.rst
@@ -85,7 +85,7 @@ convention préfixé par ``0x`` tandis qu'un nombre entier en notation
 binaire est préfixé par ``0b``. Ainsi, les déclarations ci-dessous
 correspondent toutes à la même valeur.
 
-.. literalinclude:: /_static/src/C/S2-src/num.c
+.. literalinclude:: /C/S2-src/num.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -109,7 +109,7 @@ contrairement à la notation hexadécimale qui fait partie du langage.
  ``65 et 53 sont différents`` car le compilateur C interprète la ligne
  ``j=065;`` comme contenant un entier en notation octale et non décimale.
 
- .. literalinclude:: /_static/src/C/S2-src/octal.c
+ .. literalinclude:: /C/S2-src/octal.c
     :encoding: utf-8
     :language: c
     :start-after: ///AAA
@@ -240,7 +240,7 @@ peut causer des erreurs dans certains calculs. Par exemple,
 voici un petit programme qui affiche les 10 premières puissances de
 cinq et dix.
 
-.. literalinclude:: /_static/src/C/S2-src/short.c
+.. literalinclude:: /C/S2-src/short.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -248,7 +248,7 @@ cinq et dix.
 
 Lorsqu'il est exécuté, ce programme affiche la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S2-src/short.out
+.. literalinclude:: /C/S2-src/short.out
    :encoding: utf-8
    :language: console
 
@@ -316,7 +316,7 @@ Les tableaux
 
 En langage C, les tableaux permettent d'agréger des données d'un même type. Il est possible de définir des vecteurs et des matrices en utilisant la syntaxe ci-dessous.
 
-.. literalinclude:: /_static/src/C/S2-src/array.c
+.. literalinclude:: /C/S2-src/array.c
    :language: c
    :encoding: utf-8
    :start-after: ///AAA
@@ -326,7 +326,7 @@ Les premières versions du langage C ne permettaient que la définition de table
 
 Un tableau à une dimension peut s'utiliser avec une syntaxe similaire à celle utilisée par Java. Dans un tableau contenant ``n`` éléments, le premier se trouve à l'indice ``0`` et le dernier à l'indice ``n-1``. L'exemple ci-dessous présente le calcul de la somme des éléments d'un vecteur.
 
-.. literalinclude:: /_static/src/C/S2-src/array.c
+.. literalinclude:: /C/S2-src/array.c
    :language: c
    :encoding: utf-8
    :start-after: ///CCC
@@ -334,7 +334,7 @@ Un tableau à une dimension peut s'utiliser avec une syntaxe similaire à celle
 
 Le langage C permet aussi la manipulation de matrices carrées ou rectangulaires qui sont composées d'éléments d'un même type. L'exemple ci-dessous calcule l'élément minimum d'une matrice rectangulaire. Il utilise la constante ``FLT_MAX`` qui correspond au plus grand nombre réel représentable avec un ``float`` et qui est définie dans `float.h`_.
 
-.. literalinclude:: /_static/src/C/S2-src/array.c
+.. literalinclude:: /C/S2-src/array.c
    :language: c
    :encoding: utf-8
    :start-after: ///EEE
@@ -374,7 +374,7 @@ caractères. À titre d'exemple, une fonction `toupper(3)`_ permettant
 de transformer un caractère représentant une minuscule dans le
 caractère représentant la majuscule correspondante peut s'écrire :
 
-.. literalinclude:: /_static/src/C/S2-src/toupper.c
+.. literalinclude:: /C/S2-src/toupper.c
    :language: c
    :encoding: utf-8
    :start-after: ///AAA
@@ -441,7 +441,7 @@ fonctions de manipulation de chaînes de
 caractères. À titre d'exemple, la fonction ci-dessous calcule
 la longueur d'une chaîne de caractères.
 
-.. literalinclude:: /_static/src/C/S2-src/strlen.c
+.. literalinclude:: /C/S2-src/strlen.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -556,7 +556,7 @@ donnée. Les adresses de données en mémoire sont rarement affichées,
 mais quand c'est le cas, on utilise la notation hexadécimale comme
 dans l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/C/S2-src/ptr.c
+.. literalinclude:: /C/S2-src/ptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -564,7 +564,7 @@ dans l'exemple ci-dessous.
 
 L'exécution de ce fragment de programme produit la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S2-src/ptr.out
+.. literalinclude:: /C/S2-src/ptr.out
    :encoding: utf-8
    :language: console
 
@@ -591,7 +591,7 @@ l'expression ``*ptr``. Il est
 représenté dans l'exemple ci-dessous.
 
 
-.. literalinclude:: /_static/src/C/S2-src/ptrex.c
+.. literalinclude:: /C/S2-src/ptrex.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -599,7 +599,7 @@ représenté dans l'exemple ci-dessous.
 
 L'exécution de ce fragment de programme produit la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S2-src/ptrex.out
+.. literalinclude:: /C/S2-src/ptrex.out
    :encoding: utf-8
    :language: console
 
@@ -609,7 +609,7 @@ En pratique en C, les notations ``char*`` et ``char[]`` sont
 les pointeurs, la fonction de calcul de la longueur d'une chaîne de
 caractères peut se réécrire comme suit.
 
-.. literalinclude:: /_static/src/C/S2-src/strlenptr.c
+.. literalinclude:: /C/S2-src/strlenptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -618,7 +618,7 @@ caractères peut se réécrire comme suit.
 
 Les pointeurs sont fréquemment utilisés dans les programmes écrits en langage C et il est important de bien comprendre leur fonctionnement. Un point important à bien comprendre est ce que l'on appelle l'`arithmétique des pointeurs`, c'est-à-dire la façon dont les opérations sur les pointeurs sont exécutées en langage C. Pour cela, il est intéressant de considérer la manipulation d'un tableau d'entiers à travers des pointeurs.
 
-.. literalinclude:: /_static/src/C/src/ptr_arith.c
+.. literalinclude:: /C/src/ptr_arith.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -626,7 +626,7 @@ Les pointeurs sont fréquemment utilisés dans les programmes écrits en langage
 
 En mémoire, ce tableau est stocké en utilisant trois mots consécutifs de 32 bits comme le montre l'exécution du programme ci-dessous :
 
-.. literalinclude:: /_static/src/C/src/ptr_arith.c
+.. literalinclude:: /C/src/ptr_arith.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -640,7 +640,7 @@ En mémoire, ce tableau est stocké en utilisant trois mots consécutifs de 32 b
 
 La même sortie est produite avec le fragment de programme suivant qui utilise un pointeur.
 
-.. literalinclude:: /_static/src/C/src/ptr_arith.c
+.. literalinclude:: /C/src/ptr_arith.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
@@ -658,7 +658,7 @@ Après l'exécution de la première ligne, ``ptr`` va contenir l'adresse de l'é
 
 Il est intéressant pour terminer cette première discussion de l'arithmétique des pointeurs, de considérer l'exécution du fragment de code ci-dessous.
 
-.. literalinclude:: /_static/src/C/src/ptr_arith.c
+.. literalinclude:: /C/src/ptr_arith.c
    :encoding: utf-8
    :language: c
    :start-after: ///GGG
@@ -686,7 +686,7 @@ Outre les types de données décrits ci-dessus, les programmes informatiques doi
 
 C permet la définition de structures qui combinent différents types de données simples ou structurés. Contrairement aux langages orientés objet, il n'y a pas de méthode directement associée aux structures qui sont définies. Une structure est uniquement un type de données. Voici quelques exemples de structures simples en C.
 
-.. literalinclude:: /_static/src/C/S2-src/struct.c
+.. literalinclude:: /C/S2-src/struct.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -698,7 +698,7 @@ La structure ``struct fract`` définit une fraction qui est composée de deux en
 
 Les structures permettent de facilement regrouper des données qui sont logiquement reliées entre elles et doivent être manipulées en même temps. C permet d'accéder facilement à un élément d'une structure en utilisant l'opérateur '``.``'. Ainsi, la structure ``point`` dont nous avons parlé ci-dessus aurait pu être initialisée par les trois expressions ci-dessous :
 
-.. literalinclude:: /_static/src/C/S2-src/struct.c
+.. literalinclude:: /C/S2-src/struct.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -724,7 +724,7 @@ Les structures sont également fréquemment utilisées pour représenter des for
 
 La définition de ``struct timeval`` utilise une fonctionnalité fréquemment utilisée du C : la possibilité de définir des alias pour des noms de type de données existants. Cela se fait en utilisant l'opérateur ``typedef``. En C, il est possible de renommer des types de données existants. Ainsi, l'exemple ci-dessous utilise ``typedef`` pour définir ``Entier`` comme alias pour le type ``int`` et ``Fraction`` pour la structure ``struct fraction``.
 
-.. literalinclude:: /_static/src/C/S2-src/typedef.c
+.. literalinclude:: /C/S2-src/typedef.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -739,7 +739,7 @@ Les types ``Entier`` et ``int`` peuvent être utilisés de façon interchangeabl
 
  ``typedef`` est souvent utilisé pour avoir des identifiants de types de données plus courts. Par exemple, il est très courant de remplacer le types ``unsigned`` par les abréviations ci-dessous.
 
-  .. literalinclude:: /_static/src/C/S2-src/typedef.c
+  .. literalinclude:: /C/S2-src/typedef.c
      :encoding: utf-8
      :language: c
      :start-after: ///EEE
@@ -747,7 +747,7 @@ Les types ``Entier`` et ``int`` peuvent être utilisés de façon interchangeabl
 
  Soyez prudents si vous utilisez des ``typedef`` pour redéfinir des pointeurs. En C, il est tout à fait valide d'écrire les lignes suivantes.
 
-  .. literalinclude:: /_static/src/C/S2-src/typedef.c
+  .. literalinclude:: /C/S2-src/typedef.c
      :encoding: utf-8
      :language: c
      :start-after: ///CCC
@@ -758,7 +758,7 @@ Les types ``Entier`` et ``int`` peuvent être utilisés de façon interchangeabl
 
 Les pointeurs sont fréquemment utilisés lors de la manipulation de structures. Lorsqu'un pointeur pointe vers une structure, il est utile de pouvoir accéder facilement aux éléments de la structure. Le langage C supporte deux notations pour représenter ces accès aux éléments d'une structure. La première notation est ``(*ptr).elem``  où ``ptr`` est un pointeur et ``elem`` l'identifiant d'un des éléments de la structure pointée par ``ptr``. Cette notation est en pratique assez peu utilisée. La notation la plus fréquente est ``ptr->elem`` dans laquelle ``ptr`` et ``->elem`` sont respectivement un pointeur et un identifiant d'élément. L'exemple ci-dessous illustre l'initialisation de deux fractions en utilisant ces notations.
 
-.. literalinclude:: /_static/src/C/S2-src/structptr.c
+.. literalinclude:: /C/S2-src/structptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -774,7 +774,7 @@ Comme la plupart des langages, le C permet de faciliter la compréhension d'un p
 en le découpant en de nombreuses fonctions. Chacune réalise une
 tâche simple. Tout comme Java, C permet la définition de fonctions qui ne retournent aucun résultat. Celles-ci sont de type ``void`` comme l'exemple trivial ci-dessous.
 
-.. literalinclude:: /_static/src/C/S2-src/fct.c
+.. literalinclude:: /C/S2-src/fct.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -782,7 +782,7 @@ tâche simple. Tout comme Java, C permet la définition de fonctions qui ne reto
 
 La plupart des fonctions utiles retournent un résultat qui peut être une donnée d'un des types standard ou une structure. Cette utilisation est similaire à ce que l'on trouve dans des langages comme Java. Il faut cependant être attentif à la façon dont le langage C traite les arguments des fonctions. Le langage C utilise le `passage par valeur` des arguments. Lorsqu'une fonction est exécutée, elle reçoit les valeurs de ces arguments. Ces valeurs sont stockées dans une zone mémoire qui est locale à la fonction. Toute modification faite sur la valeur d'une variable à l'intérieur d'une fonction est donc locale à cette fonction. Les deux fonctions ci-dessous ont le même résultat et aucune des deux n'a d'effet de bord.
 
-.. literalinclude:: /_static/src/C/S2-src/fct.c
+.. literalinclude:: /C/S2-src/fct.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -790,7 +790,7 @@ La plupart des fonctions utiles retournent un résultat qui peut être une donn
 
 Il faut être nettement plus attentif lorsque l'on écrit des fonctions qui utilisent des pointeurs comme arguments. Lorsqu'une fonction a un argument de type pointeur, celui-ci est passé par valeur, mais connaissant la valeur du pointeur, il est possible à la fonction de modifier le contenu de la zone mémoire pointée par le pointeur. Ceci est illustré par l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/C/S2-src/fct.c
+.. literalinclude:: /C/S2-src/fct.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
@@ -798,13 +798,13 @@ Il faut être nettement plus attentif lorsque l'on écrit des fonctions qui util
 
 Lors de l'exécution de la fonction ``f``, le programme ci-dessus affiche à la console la sortie suivante :
 
-.. literalinclude:: /_static/src/C/S2-src/fct.out
+.. literalinclude:: /C/S2-src/fct.out
    :encoding: utf-8
    :language: console
 
 Cet exemple illustre aussi une contrainte imposée par le langage C sur l'ordre de définition des fonctions. Pour que les fonctions ``times_two`` et ``timestwo`` puissent être utilisées à l'intérieur de la fonction ``f``, il faut qu'elles aient été préalablement définies. Dans l'exemple ci-dessus, cela s'est fait en plaçant la définition des deux fonctions avant leur utilisation. C'est une règle de bonne pratique utilisable pour de petits programmes composés de quelques fonctions. Pour des programmes plus larges, il est préférable de placer au début du code source la signature des fonctions qui y sont définies. La signature d'une fonction comprend le type de valeur de retour de la fonction, son nom et les types de ses arguments. Généralement, ces déclarations sont regroupées à l'intérieur d'un :term:`fichier header` dont le nom se termine par ``.h``.
 
-.. literalinclude:: /_static/src/C/S2-src/fct.h
+.. literalinclude:: /C/S2-src/fct.h
    :encoding: utf-8
    :language: c
    :start-after: ///HHH
@@ -812,7 +812,7 @@ Cet exemple illustre aussi une contrainte imposée par le langage C sur l'ordre
 
 Les fonctions peuvent évidemment recevoir également des tableaux comme arguments. Cela permet par exemple d'implémenter une fonction qui calcule la longueur d'une chaîne de caractères en itérant dessus jusqu'à trouver le caractère de fin de chaîne.
 
-.. literalinclude:: /_static/src/C/S2-src/strlenptr.c
+.. literalinclude:: /C/S2-src/strlenptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -826,7 +826,7 @@ Tout comme cette fonction peut accéder au `ième` caractère de la chaîne pass
 
 Un autre exemple de fonctions qui manipulent les tableaux sont des fonctions mathématiques qui traitent des vecteurs par exemple.
 
-.. literalinclude:: /_static/src/C/S2-src/fctargs.c
+.. literalinclude:: /C/S2-src/fctargs.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -835,7 +835,7 @@ Un autre exemple de fonctions qui manipulent les tableaux sont des fonctions mat
 
 Ces deux fonctions peuvent être utilisées par le fragment de code ci-dessous :
 
-.. literalinclude:: /_static/src/C/S2-src/fctargs.c
+.. literalinclude:: /C/S2-src/fctargs.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
@@ -846,7 +846,7 @@ Ces deux fonctions peuvent être utilisées par le fragment de code ci-dessous :
 
  Certains langages comme Java sont fortement typés et le compilateur contient de nombreuses vérifications, notamment sur les types de données utilisés, qui permettent d'éviter un grand nombre d'erreurs. Le langage C est lui nettement plus libéral. Les premiers compilateurs C étaient très permissifs notamment sur les types de données passés en arguments. Ainsi, un ancien compilateur C accepterait probablement sans broncher les appels suivants :
 
-  .. literalinclude:: /_static/src/C/S2-src/fctargs.c
+  .. literalinclude:: /C/S2-src/fctargs.c
      :encoding: utf-8
      :language: c
      :start-after: ///GGG
@@ -863,7 +863,7 @@ Ces deux fonctions peuvent être utilisées par le fragment de code ci-dessous :
 
 Pour terminer, mentionnons que les fonctions écrites en C peuvent utiliser des structures et des pointeurs vers des structures comme arguments. Elles peuvent aussi retourner des structures comme résultat. Ceci est illustré par deux variantes de fonctions permettant d'initialiser une fraction et de déterminer si deux fractions sont égales [#fegal]_.
 
-.. literalinclude:: /_static/src/C/S2-src/struct.c
+.. literalinclude:: /C/S2-src/struct.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
@@ -873,7 +873,7 @@ Considérons d'abord les fonctions ``init`` et ``equal``. ``init`` est une fonct
 
 Les fonctions ``initptr`` et ``equalptr`` utilisent toutes les deux des pointeurs vers des ``struct fraction`` comme arguments. Ce faisant, elles ne peuvent modifier la valeur de ces pointeurs puisqu'ils sont passés comme valeurs. Par contre, les deux fonctions peuvent bien entendu modifier les éléments de la structure qui se trouvent dans la zone de mémoire pointée par le pointeur. C'est ce que ``initptr`` fait pour initialiser la structure. ``equalptr`` par contre se contente d'accéder aux éléments des structures passées en argument sans les modifier. Le fragment de code ci-dessous illustre comment ces fonctions peuvent être utilisées en pratique.
 
-.. literalinclude:: /_static/src/C/S2-src/struct.c
+.. literalinclude:: /C/S2-src/struct.c
    :encoding: utf-8
    :language: c
    :start-after: ///GGG
@@ -941,13 +941,13 @@ Ces opérations peuvent être combinées entre elles. Pour des raisons technolog
 
 Ces opérations binaires peuvent s'étendre à des séquences de bits. Voici quelques exemples qui permettent d'illustrer ces opérations sur des octets.
 
-.. literalinclude:: /_static/src/C/S2-src/exprbin.out
+.. literalinclude:: /C/S2-src/exprbin.out
    :encoding: utf-8
    :language: console
 
 En C, ces expressions logiques s'utilisent comme dans le fragment de code suivant. En général, elles s'utilisent sur des représentations non signées, souvent des ``unsigned char`` ou des ``unsigned int``.
 
-.. literalinclude:: /_static/src/C/S2-src/exprbin.c
+.. literalinclude:: /C/S2-src/exprbin.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -955,7 +955,7 @@ En C, ces expressions logiques s'utilisent comme dans le fragment de code suivan
 
 En pratique, les opérations logiques sont utiles pour effectuer des manipulations au niveau des bits de données stockées en mémoire. Une utilisation fréquente dans certaines applications réseaux ou systèmes est de forcer certains bits à prendre la valeur ``0`` ou ``1``. La conjonction logique permet de forcer facilement un bit à zéro tandis que la disjonction logique permet de forcer facilement un bit à un. L'exemple ci-dessous montre comment forcer les valeurs de certains bits dans un ``unsigned char``. Il peut évidemment se généraliser à des séquences de bits plus longues.
 
-.. literalinclude:: /_static/src/C/S2-src/exprbin.c
+.. literalinclude:: /C/S2-src/exprbin.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -967,7 +967,7 @@ En pratique, les opérations logiques sont utiles pour effectuer des manipulatio
                 
 L'opération XOR joue un rôle important dans certaines applications. La plupart des méthodes de chiffrement et de déchiffrement utilisent de façon extensive cette opération. Une des propriétés intéressantes de l'opération XOR est que :math:`(A \oplus B) \oplus B=A`. Cette propriété est largement utilisée par les méthodes de chiffrement. La méthode développée par Vernam au début du vingtième siècle s'appuie sur l'opération XOR. Pour transmettre un message `M` de façon sûre, elle applique l'opération XOR bit à bit entre tous les bits du message `M` et une clé `K` doit avoir au moins le même nombre de bits que `M`. Si cette clé `K` est totalement aléatoire et n'est utilisée qu'une seule fois, alors on parle de *one-time-pad*. On peut montrer que dans ce cas, la méthode de chiffrement est totalement sûre. En pratique, il est malheureusement difficile d'avoir une clé totalement aléatoire qui soit aussi longue que le message à transmettre. Le programme ci-dessous implémente cette méthode de façon triviale. La fonction `memfrob(3)`_ de la librairie :term:`GNU` utilise également un chiffrement via un XOR.
 
-.. literalinclude:: /_static/src/C/S2-src/xor.c
+.. literalinclude:: /C/S2-src/xor.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -993,7 +993,7 @@ Pour terminer, le langage C supporte des expressions permettant le décalage à
 
 Ces opérations de décalage permettent différentes manipulations de bits. À titre d'exemple, la fonction ``int2bin`` utilise à la fois des décalages et des masques pour calculer la représentation binaire d'un entier non signé et la placer dans une chaîne de caractères.
 
-.. literalinclude:: /_static/src/C/S2-src/exprbin.c
+.. literalinclude:: /C/S2-src/exprbin.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
diff --git a/Theorie/C/linker.rst b/Theorie/C/linker.rst
index 6c47295a8490aa221f4c01e530867f23c2a9572c..03a2495e536ea61d50a91a1e5c91d4aed9d5db34 100644
--- a/Theorie/C/linker.rst
+++ b/Theorie/C/linker.rst
@@ -33,7 +33,7 @@ Un premier exemple sont les pointeurs vers des fonctions. Comme nous l'avons vu
 
 Cette application qui supporte plusieurs niveaux de débogage utilise pourtant toujours le même appel pour afficher l'information de débogage : ``(debug_print[debug_level])(...);``. Cet appel profite des pointeurs vers les fonctions. Le tableau ``debug_print`` est un tableau de pointeurs vers des fonctions qui chacune prend comme argument un ``char *``. La variable globale ``debug_level`` est initialisée sur base de l'argument passé au programme.
 
-.. literalinclude:: /_static/src/C/S5-src/fctptr.c
+.. literalinclude:: /C/S5-src/fctptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -49,7 +49,7 @@ Ce n'est pas la seule utilisation des pointeurs vers des fonctions. Il y a notam
 
 Le premier est un pointeur vers le début de la zone mémoire à trier. Le second est le nombre d'éléments à trier. Le troisième contient la taille des éléments stockés dans le tableau. Le quatrième argument est un pointeur vers la fonction qui permet de comparer deux éléments du tableau. Cette fonction retourne un entier négatif si son premier argument est inférieur au second et positif ou nul sinon. Un exemple de fonction de comparaison est la fonction `strcmp(3)`_ de la librairie standard. Un autre exemple est repris ci-dessous avec une fonction de comparaison simple qui permet d'utiliser `qsort(3)`_ pour trier un tableau de ``double``.
 
-.. literalinclude:: /_static/src/C/S5-src/qsort.c
+.. literalinclude:: /C/S5-src/qsort.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -60,7 +60,7 @@ Il est utile d'analyser en détails les arguments de la fonction de comparaison
 
 Le second type de pointeurs que nous n'avons pas encore abordé en détails sont les pointeurs vers des pointeurs. En fait, nous les avons utilisés sans vraiment le savoir dans la fonction ``main``. En effet, le second argument de cette fonction est un tableau de pointeurs qui pointent chacun vers des chaînes de caractères différentes. La notation ``char *argv[]`` est équivalente à la notation ``char **argv``. ``**argv`` est donc un pointeur vers une zone qui contient des pointeurs vers des chaînes de caractères. Ce pointeur vers un pointeur doit être utilisé avec précaution. ``argv[0]`` est un pointeur vers une chaîne de caractères. La construction ``&(argv[0])`` permet donc d'obtenir un pointeur vers un pointeur vers une chaîne de caractères, ce qui correspond bien à la déclaration ``char **``. Ensuite, l'utilisation de ``*p`` pourrait surprendre. ``*p`` est un pointeur vers une chaîne de caractères. Il peut donc être comparé à ``NULL`` qui est aussi un pointeur, incrémenté et la chaîne de caractères qu'il référence peut être affichée par `printf(3)`_.
 
-.. literalinclude:: /_static/src/C/S5-src/ptrptr.c
+.. literalinclude:: /C/S5-src/ptrptr.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -82,14 +82,14 @@ L'utilisation principale de `strtol(3)`_ est de convertir une chaîne de caract
 
 `strtol(3)`_ est un exemple de fonction qui doit retourner deux types d'informations. Tout d'abord, `strtol(3)`_ retourne un résultat (dans ce cas un nombre). Si la chaîne de caractères à convertir est erronée, `strtol(3)`_ convertit le début de la chaîne et retourne un pointeur indiquant le premier caractère en erreur. Pour bien comprendre le fonctionnement de `strtol(3)`_, considérons l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/C/S5-src/strtol.c
+.. literalinclude:: /C/S5-src/strtol.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
 
 Lors de son exécution, ce programme affiche la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S5-src/strtol.out
+.. literalinclude:: /C/S5-src/strtol.out
    :encoding: utf-8
    :language: console
 
@@ -97,7 +97,7 @@ L'appel à `strtol(3)`_ prend trois arguments. Tout d'abord un pointeur vers la
 
 Une implémentation partielle de `strtol(3)`_ pourrait être la suivante.
 
-.. literalinclude:: /_static/src/C/S5-src/mystrtol.c
+.. literalinclude:: /C/S5-src/mystrtol.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -116,7 +116,7 @@ Lorsque l'on développe de grands programmes en C, il est préférable de décou
 
 Pour comprendre l'utilisation de ces modules, considérons d'abord un programme trivial composé de deux modules. Le premier module est celui qui contient la fonction ``main``. Tout programme C doit contenir une fonction ``main`` pour pouvoir être exécuté. C'est en général l'interface avec l'utilisateur. Le second module contient une fonction générique qui est utilisée par le module principal.
 
-.. literalinclude:: /_static/src/C/S5-src/main.c
+.. literalinclude:: /C/S5-src/main.c
    :encoding: utf-8
    :language: c
 
@@ -126,7 +126,7 @@ Un module d'un programme C est en général décomposé en deux parties. Tout d'
  - les constantes qui sont utilisées à l'intérieur du module et doivent être visibles en dehors de celui-ci, notamment par les modules qui utilisent les fonctions du module. Ces constantes peuvent être définies en utilisant des directives ``#define`` du préprocesseur
  - les variables globales qui sont utilisées par les fonctions du module et doivent être accessibles en dehors de celui-ci
 
-.. literalinclude:: /_static/src/C/S5-src/min.h
+.. literalinclude:: /C/S5-src/min.h
    :encoding: utf-8
    :language: c
 
@@ -134,7 +134,7 @@ Un module d'un programme C est en général décomposé en deux parties. Tout d'
 
  L'exemple de :term:`fichier header` ci-dessus illustre une convention courante dans l'écriture de ces fichiers. Parfois, il est nécessaire d'inclure un :term:`fichier header` dans un autre fichier header. Suite à cela, il est possible que les mêmes définitions d'un :term:`fichier header` soient incluses deux fois ou plus dans le même module. Cela peut causer des erreurs de compilation qui risquent de perturber certains programmeurs. Une règle de bonne pratique pour éviter ce problème est d'inclure le contenu du :term:`fichier header` de façon conditionnelle comme présenté ci-dessus. Une constante, dans ce cas ``_MIN_H_``, est définie pour le :term:`fichier header` concerné. Cette constante est définie dans la première ligne effective du :term:`fichier header`. Celui-ci n'est inclus dans un module que si cette constante n'a pas été préalablement définie. Si cette constante est connue par le préprocesseur, cela indique qu'un autre :term:`fichier header` a déjà inclus les définitions de ce fichier et qu'elles ne doivent pas être incluses une seconde fois.
 
-.. literalinclude:: /_static/src/C/S5-src/min.c
+.. literalinclude:: /C/S5-src/min.c
    :encoding: utf-8
    :language: c
 
@@ -144,7 +144,7 @@ Un module d'un programme C est en général décomposé en deux parties. Tout d'
 
 Lorsque l'on doit compiler un programme qui fait appel à plusieurs modules, quelle que soit sa taille, il est préférable d'utiliser `make(1)`_ pour automatiser sa compilation. Le fichier ci-dessous est un petit exemple de :term:`Makefile` utilisable pour un tel projet.
 
-.. literalinclude:: /_static/src/C/S5-src/Makefile2
+.. literalinclude:: /C/S5-src/Makefile2
    :encoding: utf-8
    :language: makefile
    :start-after: ###AAA
@@ -176,17 +176,17 @@ Il faut noter que ``static`` peut aussi précéder des déclarations de fonction
 
 Afin d'illustrer l'utilisation de ``static`` et ``extern``, considérons le programme ``prog.c`` ci-dessous qui inclut le module ``module.c`` et également le module ``min.c`` présenté plus haut.
 
-.. literalinclude:: /_static/src/C/S5-src/module.h
+.. literalinclude:: /C/S5-src/module.h
    :encoding: utf-8
    :language: c
 
-.. literalinclude:: /_static/src/C/S5-src/module.c
+.. literalinclude:: /C/S5-src/module.c
    :encoding: utf-8
    :language: c
 
 Ce module contient deux fonctions, ``vmin`` et ``min``. ``vmin`` est accessible depuis n'importe quel module. Sa signature est reprise dans le :term:`fichier header` ``module.h``. La fonction ``min`` par contre est déclarée comme étant ``static``. Cela implique qu'elle n'est utilisable qu'à l'intérieur de ce module et invisible de tout autre module. La variable globale ``num1`` est accessible depuis n'importe quel module. La variable ``num2`` également, mais elle est initialisée dans un autre module. Enfin, la variable ``num3`` n'est accessible qu'à l'intérieur de ce module.
 
-.. literalinclude:: /_static/src/C/S5-src/prog.c
+.. literalinclude:: /C/S5-src/prog.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -195,7 +195,7 @@ Ce module inclus les fichiers ``min.h`` et ``module.h`` qui contiennent les sign
 
 La fonction ``f`` mérite que l'on s'y attarde un peu. Cette fonction contient la définition de la variable ``static n``. Même si cette variable est locale à la fonction ``f`` et donc invisible en dehors de cette fonction, le compilateur va lui réserver une place dans la même zone que les variables globales. La valeur de cette variable ``static`` sera initialisée une seule fois : au démarrage du programme. Même si cette variable parait être locale, elle ne sera jamais réinitialisée lors d'un appel à la fonction ``f``. Comme cette variable est stockée en dehors de la pile, elle conserve sa valeur d'une invocation à l'autre de la fonction ``f``. Ceci est illustré par l'exécution du programme qui produit la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S5-src/prog.out
+.. literalinclude:: /C/S5-src/prog.out
    :encoding: utf-8
    :language: console
 
@@ -211,7 +211,7 @@ Les systèmes Unix utilisent la variable globale :term:`errno` pour résoudre ce
 
 A titre d'exemple, le programme ci-dessous utilise `strerror(3)`_ pour afficher un message d'erreur plus parlant lors d'appels erronés à la fonction `setenv(3)`_.
 
-.. literalinclude:: /_static/src/C/S5-src/errno.c
+.. literalinclude:: /C/S5-src/errno.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
diff --git a/Theorie/C/malloc.rst b/Theorie/C/malloc.rst
index c3b6edcadb20b46c59427e3797c829f5d5b0f96d..674f418d13068fd9b06d222db94fec87d25d83cf 100644
--- a/Theorie/C/malloc.rst
+++ b/Theorie/C/malloc.rst
@@ -30,9 +30,9 @@ La première notion importante concernant la déclaration des variables est leur
 Dans un fichier donné, il ne peut évidemment pas y avoir deux variables globales qui ont le même identifiant. Lorsqu'une variable est définie dans un `bloc`, la portée de cette variable est locale à ce bloc. On parle dans ce cas de :term:`portée locale`. La variable locale n'existe pas avant le début du bloc et n'existe plus à la fin du bloc. Contrairement aux identifiants de variables globales qui doivent être uniques à l'intérieur d'un fichier, il est possible d'avoir plusieurs variables locales qui ont le même identifiant à l'intérieur d'un fichier. C'est fréquent notamment pour les définitions d'arguments de fonction et les variables de boucles. Dans l'exemple ci-dessus, les variables ``n`` et ``j`` ont une portée locale. La variable ``j`` est définie dans deux blocs différents à l'intérieur de la fonction ``f``.
 
 
-Le programme :download:`/_static/src/C/S3-src/portee.c` illustre la façon dont le compilateur C gère la portée de différentes variables.
+Le programme :download:`/C/S3-src/portee.c` illustre la façon dont le compilateur C gère la portée de différentes variables.
 
-.. literalinclude:: /_static/src/C/S3-src/portee.c
+.. literalinclude:: /C/S3-src/portee.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -42,7 +42,7 @@ Ce programme contient deux variables qui ont une portée globale : ``g1`` et ``g
 
 Lorsqu'un identifiant de variable locale est utilisé à plusieurs endroits dans un fichier, c'est la définition la plus proche qui est utilisée. L'exécution du programme ci-dessus illustre cette utilisation des variables globales et locales.
 
-.. literalinclude:: /_static/src/C/S3-src/portee.out
+.. literalinclude:: /C/S3-src/portee.out
    :encoding: utf-8
    :language: console
 
@@ -52,7 +52,7 @@ Lorsqu'un identifiant de variable locale est utilisé à plusieurs endroits dans
 
 Les versions récentes de C [C99]_ permettent également de définir des variables dont la valeur sera constante durant toute l'exécution du programme. Ces déclarations de ces constants sont préfixées par le mot-clé ``const`` qui joue le même rôle que le mot clé ``final`` en Java.
 
-.. literalinclude:: /_static/src/C/S3-src/const.c
+.. literalinclude:: /C/S3-src/const.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -67,7 +67,7 @@ Unions et énumérations
 
 Les structures que nous avons présentées précédemment permettent de combiner plusieurs données de types primitifs différents entre elles. Outre ces structures (``struct``), le langage C supporte également les ``enum`` et les ``union``. Le mot-clé ``enum`` est utilisé pour définir un type énuméré, c'est-à-dire un type de donnée qui permet de stocker un nombre fixe de valeurs. Quelques exemples classiques sont repris dans le fragment de programme ci-dessous :
 
-.. literalinclude:: /_static/src/C/S3-src/enum.c
+.. literalinclude:: /C/S3-src/enum.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -75,7 +75,7 @@ Les structures que nous avons présentées précédemment permettent de combiner
 
 Le premier ``enum`` permet de définir le type de données ``day`` qui contient une valeur énumérée pour chaque jour de la semaine. L'utilisation d'un type énuméré rend le code plus lisible que simplement l'utilisation de constantes définies via le préprocesseur.
 
-.. literalinclude:: /_static/src/C/S3-src/enum.c
+.. literalinclude:: /C/S3-src/enum.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -85,7 +85,7 @@ En pratique, lors de la définition d'un type énuméré, le compilateur C assoc
 
 Outre les structures, le langage C supporte également les unions. Alors qu'une structure permet de stocker plusieurs données dans une même zone mémoire, une ``union`` permet de réserver une zone mémoire pour stocker une données parmi plusieurs types possibles. Une ``union`` est parfois utilisée pour minimiser la quantité de mémoire utilisée pour une structure de données qui peut contenir des données de plusieurs types. Pour bien comprendre la différence entre une ``union`` et une ``struct``, considérons l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/C/S3-src/union.c
+.. literalinclude:: /C/S3-src/union.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -94,7 +94,7 @@ Outre les structures, le langage C supporte également les unions. Alors qu'une
 
 Une union, ``u`` et une structure, ``s`` sont déclarées dans ce fragment de programme.
 
-.. literalinclude:: /_static/src/C/S3-src/union.c
+.. literalinclude:: /C/S3-src/union.c
    :encoding: utf-8
    :language: c
    :start-after: ///CCC
@@ -103,7 +103,7 @@ Une union, ``u`` et une structure, ``s`` sont déclarées dans ce fragment de pr
 La structure ``s`` peut contenir à la fois un entier et un caractère. Par contre, l'``union`` ``u``, peut elle contenir un entier (``u.i``) *ou* un caractère (``u.c``), mais jamais les deux en même temps.
 Le compilateur C alloue la taille pour l'``union`` de façon à ce qu'elle puisse contenir le type de donnée se trouvant dans l'``union`` nécessitant le plus de mémoire. Si les unions sont utiles dans certains cas très particulier, il faut faire très attention à leur utilisation. Lorsqu'une ``union`` est utilisée, le compilateur C fait encore moins de vérifications sur les types de données et le code ci-dessous est considéré comme valide par le compilateur :
 
-.. literalinclude:: /_static/src/C/S3-src/union.c
+.. literalinclude:: /C/S3-src/union.c
    :encoding: utf-8
    :language: c
    :start-after: ///EEE
@@ -111,7 +111,7 @@ Le compilateur C alloue la taille pour l'``union`` de façon à ce qu'elle puiss
 
 Lors de son exécution, la zone mémoire correspondant à l'union ``u`` sera simplement interprétée comme contenant un ``char``, même si on vient d'y stocker un entier. En pratique, lorsqu'une ``union`` est vraiment nécessaire pour des raisons d'économie de mémoire, on préférera la placer dans une ``struct`` en utilisant un type énuméré qui permet de spécifier le type de données qui est présent dans l'``union``.
 
-.. literalinclude:: /_static/src/C/S3-src/union.c
+.. literalinclude:: /C/S3-src/union.c
    :encoding: utf-8
    :language: c
    :start-after: ///BBB
@@ -119,7 +119,7 @@ Lors de son exécution, la zone mémoire correspondant à l'union ``u`` sera sim
 
 Le programmeur pourra alors utiliser cette structure en indiquant explicitement le type de données qui y est actuellement stocké comme suit.
 
-.. literalinclude:: /_static/src/C/S3-src/union.c
+.. literalinclude:: /C/S3-src/union.c
    :encoding: utf-8
    :language: c
    :start-after: ///FFF
@@ -217,7 +217,7 @@ La fonction `malloc(3)`_ prend comme argument la taille (en bytes) de la zone m
 
  Comme le langage Java, le langage C supporte des conversions implicites et explicites entre les différents types de données. Ces conversions sont possibles entre les types primitifs et les pointeurs. Nous les rencontrerons régulièrement, par exemple lorsqu'il faut récupérer un pointeur alloué par `malloc(3)`_ ou le résultat de ``sizeof``. Contrairement au compilateur Java, le compilateur C n'émet pas toujours de message de :term:`warning` lors de l'utilisation de  typecast qui risque d'engendrer une perte de précision. Ce problème est illustré par l'exemple suivant avec les nombres.
 
-  .. literalinclude:: /_static/src/C/S3-src/typecast.c
+  .. literalinclude:: /C/S3-src/typecast.c
      :encoding: utf-8
      :language: c
      :start-after: ///AAA
@@ -228,7 +228,7 @@ La fonction de la librairie `free(3)`_ est le pendant de `malloc(3)`_. Elle perm
 
 Le programme ci-dessous illustre l'utilisation de `malloc(3)`_ et `free(3)`_.
 
-.. literalinclude:: /_static/src/C/S3-src/malloc.c
+.. literalinclude:: /C/S3-src/malloc.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -236,7 +236,7 @@ Le programme ci-dessous illustre l'utilisation de `malloc(3)`_ et `free(3)`_.
 
 Ce programme alloue trois zones mémoires. Le pointeur vers la première est sauvé dans le pointeur ``string``. Elle est destinée à contenir une chaîne de ``size`` caractères (avec un caractère supplémentaire pour stocker le caractère ``\0`` de fin de chaîne). Il y a deux points à remarquer concernant cette allocation. Tout d'abord, le pointeur retourné par `malloc(3)`_ est "casté" en un ``char *``. Cela indique au compilateur que ``string`` va bien contenir un pointeur vers une chaîne de caractères. Cette conversion explicite rend le programme plus clair. Ensuite, la valeur de retour de `malloc(3)`_  est systématiquement testée. `malloc(3)`_ peut en effet retourner ``NULL`` lorsque la mémoire est remplie. Cela a peu de chance d'arriver dans un programme de test tel que celui-ci, mais tester les valeurs de retour des fonctions de la librairie est une bonne habitude à prendre lorsque l'on programme sous Unix. Le second pointeur, ``vector`` pointe vers une zone destiné à contenir un tableau d'entiers. Le dernier pointeur, ``fract_vect`` pointe vers une zone qui pourra stocker un tableau de ``Fraction``. Lors de son exécution, le programme affiche la sortie suivante.
 
-.. literalinclude:: /_static/src/C/S3-src/malloc.out
+.. literalinclude:: /C/S3-src/malloc.out
    :encoding: utf-8
    :language: console
 
@@ -245,7 +245,7 @@ Dans cette sortie, on remarque que l'appel à fonction `free(3)`_ libère la zon
 Un autre exemple d'utilisation de `malloc(3)`_ est la fonction ``duplicate`` ci-dessous qui permet de retourner une copie d'une chaîne de caractères. Il est important de noter qu'en C la fonction `strlen(3)`_ retourne la longueur de la chaîne de caractères passée en argument sans prendre en compte le caractère ``\0`` qui marque sa fin. C'est la raison pour laquelle `malloc(3)`_ doit réserver un bloc de mémoire en plus. Même si généralement les ``char`` occupent un octet en mémoire, il est préférable d'utiliser explicitement ``sizeof(char)`` lors du calcul de l'espace mémoire nécessaire pour un type de données.
 
 
-.. literalinclude:: /_static/src/C/S3-src/strcpy.c
+.. literalinclude:: /C/S3-src/strcpy.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -254,7 +254,7 @@ Un autre exemple d'utilisation de `malloc(3)`_ est la fonction ``duplicate`` ci-
 `malloc(3)`_ et `free(3)`_ sont fréquemment utilisés dans des programmes qui manipulent des structures de données dont la taille varie dans le temps. C'est le cas pour les différents sortes de listes chaînées, les piles, les queues, les arbres, ... L'exemple ci-dessous (:download:`/C/S3-src/stack.c`) illustre une implémentation d'une pile simple en C. Le pointeur vers le sommet de la pile est défini comme une variable globale. Chaque élément de la pile est représenté comme un pointeur vers une structure qui contient un pointeur vers la donnée stockée (dans cet exemple des fractions) et l'élément suivant sur la pile. Les fonctions ``push`` et ``pop`` permettent respectivement d'ajouter un élément et de retirer un élément au sommet de la pile. La fonction ``push`` alloue la mémoire nécessaire avec `malloc(3)`_ tandis que la fonction ``pop`` utilise `free(3)`_ pour libérer la mémoire dès qu'un élément est retiré.
 
 
-.. literalinclude:: /_static/src/C/S3-src/stack.c
+.. literalinclude:: /C/S3-src/stack.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -263,7 +263,7 @@ Un autre exemple d'utilisation de `malloc(3)`_ est la fonction ``duplicate`` ci-
 
 Ces fonctions peuvent être utilisées pour empiler et dépiler des fractions sur une pile comme dans l'exemple ci-dessous. La fonction ``display`` permet d'afficher sur :term:`stdout` le contenu de la pile.
 
-.. literalinclude:: /_static/src/C/S3-src/stack.c
+.. literalinclude:: /C/S3-src/stack.c
    :encoding: utf-8
    :language: c
    :start-after: ///BBB
@@ -271,7 +271,7 @@ Ces fonctions peuvent être utilisées pour empiler et dépiler des fractions su
 
 Lors de son exécution le programme :download:`/C/S3-src/stack.c` présenté ci-dessus affiche les lignes suivantes sur sa sortie standard.
 
-.. literalinclude:: /_static/src/C/S3-src/stack.out
+.. literalinclude:: /C/S3-src/stack.out
    :encoding: utf-8
    :language: console
 
@@ -293,14 +293,14 @@ Le tas (ou :term:`heap`) joue un rôle très important dans les programmes C. Le
 
 `malloc(3)` est la fonction d'allocation de mémoire la plus fréquemment utilisée [#fothermalloc]_. La librairie standard contient cependant d'autres fonctions permettant d'allouer de la mémoire mais aussi de modifier des allocations antérieures. `calloc(3)`_ est nettement moins utilisée que `malloc(3)`_. Elle a pourtant un avantage majeur par rapport à `malloc(3)`_ puisqu'elle initialise à zéro la zone de mémoire allouée. `malloc(3)`_ se contente d'allouer la zone de mémoire mais n'effectue aucune initialisation. Cela permet à `malloc(3)`_ d'être plus rapide, mais le programmeur ne doit jamais oublier qu'il ne peut pas utiliser `malloc(3)`_ sans initialiser la zone mémoire allouée. Cela peut s'observer en pratique avec le programme ci-dessous. Il alloue une zone mémoire pour ``v1``, l'initialise puis la libère. Ensuite, le programme alloue une nouvelle zone mémoire pour ``v2`` et y retrouve les valeurs qu'il avait stocké pour ``v1`` précédemment. En pratique, n'importe quelle valeur pourrait se trouver dans la zone retournée par `malloc(3)`.
 
-.. literalinclude:: /_static/src/C/S3-src/mallocinit.c
+.. literalinclude:: /C/S3-src/mallocinit.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
 
 L'exécution du programme ci-dessus affiche le résultat suivant sur la sortie standard. Ceci illustre bien que la fonction `malloc(3)`_ n'initialise pas  les zones de mémoire qu'elle alloue.
 
-.. literalinclude:: /_static/src/C/S3-src/mallocinit.out
+.. literalinclude:: /C/S3-src/mallocinit.out
    :encoding: utf-8
    :language: console
 
diff --git a/Theorie/Fichiers/fichiers.rst b/Theorie/Fichiers/fichiers.rst
index 8564b9a7a07e191fa00e897e9b84085e710686e2..8ea4a6d4c7dfb4fd611f5d73a0a3af45f3b76328 100644
--- a/Theorie/Fichiers/fichiers.rst
+++ b/Theorie/Fichiers/fichiers.rst
@@ -202,11 +202,12 @@ Il existe plusieurs appels systèmes et fonctions de la librairie standard qui p
 
 	L'extrait de code ci-dessous permet de lister tous les fichiers présents dans le répertoire ``name``.
 
-	.. literalinclude:: /_static/src/Fichiers/src/readdir.c
-	   :encoding: utf-8
-	   :language: c
-	   :start-after: ///AAA
-	   :end-before: ///BBB
+.. literalinclude:: /Fichiers/src/readdir.c
+   :encoding: utf-8
+   :language: c
+   :start-after: ///AAA
+   :end-before: ///BBB
+
 
 	La lecture d'un répertoire avec `readdir(3)`_ commence au début de ce répertoire. A chaque appel à `readdir(3)`_, le programme appelant récupère un pointeur vers une zone mémoire contenant une structure ``dirent`` avec l'entrée suivante du répertoire ou ``NULL`` lorsque la fin du répertoire est atteinte. Si une fonction doit relire à nouveau un répertoire, cela peut se faire en utilisant `seekdir(3)`_ ou `rewinddir(3)`_.
 
@@ -345,7 +346,7 @@ Ces deux appels systèmes prennent trois arguments. Le premier est le `descripte
 
 Il est important de noter que `read(2)`_ et `write(2)`_ permettent de lire et d'écrire des séquences contiguës d'octets. Lorsque l'on écrit ou lit des chaînes de caractères dans lesquels chaque caractère est représenté sous la forme d'un byte, il est possible d'utiliser `read(2)`_ et `write(2)`_ pour lire et écrire d'autres types de données que des octets comme le montre l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/Fichiers/src/read.c
+.. literalinclude:: /Fichiers/src/read.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -353,7 +354,7 @@ Il est important de noter que `read(2)`_ et `write(2)`_ permettent de lire et d'
 
 Lors de son exécution, ce programme affiche la sortie ci-dessous.
 
-.. literalinclude:: /_static/src/Fichiers/src/read.out
+.. literalinclude:: /Fichiers/src/read.out
    :encoding: utf-8
    :language: console
 
diff --git a/Theorie/Threads/coordination.rst b/Theorie/Threads/coordination.rst
index d8e15e8087472ab264a0d317ef27efcd10bc684d..2ddd4c9196433931f574867f93b38744a2fa92f0 100644
--- a/Theorie/Threads/coordination.rst
+++ b/Theorie/Threads/coordination.rst
@@ -110,7 +110,7 @@ Les sémaphores permettent de résoudre de nombreux problèmes classiques. Le pr
 
 Les sémaphores peuvent être utilisés pour d'autres types de synchronisation. Par exemple, considérons une application découpée en threads dans laquelle la fonction ``after`` ne peut jamais être exécutée avant la fin de l'exécution de la fonction ``before``. Ce problème de coordination peut facilement être résolu en utilisant un sémaphore qui est initialisé à la valeur ``0``. La fonction ``after`` doit démarrer par un appel à `sem_wait(3)`_ sur ce sémaphore tandis que la fonction ``before`` doit se terminer par un appel à la fonction `sem_post(3)`_ sur ce sémaphore. De cette façon, si le thread qui exécute la fonction ``after`` est trop rapide, il sera bloqué sur l'appel à `sem_wait(3)`_. S'il arrive à cette fonction après la fin de la fonction ``before`` dans l'autre thread, il pourra passer sans être bloqué. Le programme ci-dessous illustre cette utilisation des sémaphores POSIX.
 
-.. literalinclude:: /_static/src/Threads/S7-src/pthread-sem-before.c
+.. literalinclude:: /Threads/S7-src/pthread-sem-before.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -260,7 +260,7 @@ Une deuxième solution serait d'avoir un tableau global qui contiendrait des poi
 
 Pour résoudre ce problème, deux solutions sont possibles. La première combine une extension au langage C qui est supportée par `gcc(1)`_ avec la librairie threads POSIX. Il s'agit du qualificatif ``__thread`` qui peut être utilisé avant une déclaration de variable. Lorsqu'il est utilisé dans la déclaration d'une variable globale, il indique au compilateur et à la libraire POSIX qu'une copie de cette variable doit être créée pour chaque thread. Cette variable est initialisée au démarrage du thread et est utilisable uniquement à l'intérieur de ce thread. Le programme ci-dessous illustre cette utilisation du qualificatif ``__thread``.
 
-.. literalinclude:: /_static/src/Threads/S7-src/pthread-specific.c
+.. literalinclude:: /Threads/S7-src/pthread-specific.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -268,7 +268,7 @@ Pour résoudre ce problème, deux solutions sont possibles. La première combine
 
 Lors de son exécution, ce programme affiche la sortie suivante sur :term:`stdout`. Cette sortie illustre bien que les variables dont la déclaration est précédée du qualificatif ``__thread`` sont utilisables uniquement à l'intérieur d'un thread.
 
-.. literalinclude:: /_static/src/Threads/S7-src/pthread-specific.out
+.. literalinclude:: /Threads/S7-src/pthread-specific.out
    :encoding: utf-8
    :language: console
 
@@ -285,7 +285,7 @@ Il faut noter que la fonction `pthread_key_create(3posix)`_ associe en pratique
 
 L'exemple ci-dessous illustre l'utilisation de cette API. Elle est nettement plus lourde à utiliser que le qualificatif ``__thread``. Dans ce code, chaque thread démarre par la fonction ``f``. Celle-ci crée une variable spécifique de type ``int`` qui joue le même rôle que la variable ``__thread int count;`` dans l'exemple précédent. La fonction ``g`` qui est appelée sans argument peut accéder à la zone mémoire créée en appelant ``pthread_getspecific(count)``. Elle peut ensuite exécuter ses calculs en utilisant le pointeur ``count_ptr``. Avant de se terminer, la fonction ``f`` libère la zone mémoire qui avait été allouée par `malloc(3)`_. Une alternative à l'appel explicite à `free(3)`_ aurait été de passer ``free`` comme second argument à `pthread_key_create(3posix)`_ lors de la création de la clé ``count``. En effet, ce second argument est la fonction à appeler à la fin du thread pour libérer la mémoire correspondant à cette clé.
 
-.. literalinclude:: /_static/src/Threads/S7-src/pthread-specific2.c
+.. literalinclude:: /Threads/S7-src/pthread-specific2.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -305,7 +305,7 @@ Dans un programme séquentiel, il n'y a qu'un thread d'exécution et de nombreux
 Pour comprendre le problème, il est intéressant de comparer plusieurs implémentations d'une fonction simple. Considérons le problème de déterminer l'élément maximum d'une structure de données contenant des entiers. Si la structure de données est un tableau, une solution simple est de le parcourir entièrement pour déterminer l'élément maximum. C'est ce que fait la fonction ``max_vector`` dans le programme ci-dessous. Dans un programme purement séquentiel dans lequel le tableau peut être modifié de temps en temps, parcourir tout le tableau pour déterminer son maximum n'est pas nécessairement la solution la plus efficace. Une alternative est de mettre à jour la valeur du maximum chaque fois qu'un élément du tableau est modifié. Les fonctions ``max_global`` et ``max_static`` sont deux solutions possibles. Chacune de ces fonctions doit être appelée chaque fois qu'un élément du tableau est modifié. ``max_global`` stocke dans une variable globale la valeur actuelle du maximum du tableau et met à jour cette valeur à chaque appel. La fonction ``max_static`` fait de même en utilisant une variable statique. Ces deux solutions sont équivalentes et elles pourraient très bien être intégrées à une librairie utilisée par de nombreux programmes.
 
 
-.. literalinclude:: /_static/src/Threads/S7-src/reentrant.c
+.. literalinclude:: /Threads/S7-src/reentrant.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
diff --git a/Theorie/Threads/threads.rst b/Theorie/Threads/threads.rst
index c0f15410ac5a86ea6469aa9fcddf5a86d072c120..ef53ec49904408abf7274921f4a0444e2b568c2d 100644
--- a/Theorie/Threads/threads.rst
+++ b/Theorie/Threads/threads.rst
@@ -66,11 +66,8 @@ Cette progression continue des performances en MIPS a été possible grâce à l
 
 
 
-La notion de thread d'exécution est très importante dans un système informatique. Elle permet non seulement de comprendre comme un ordinateur équipé d'un seul microprocesseur peut exécuter plusieurs programmes simultanément, mais aussi comment des programmes peuvent profiter des nouveaux processeurs capables d'exécuter plusieurs threads simultanément.
- 
-..
- Pour comprendre cette notion, il est intéressant de revenir à nouveau sur l'exécution d'une fonction en langage assembleur. 
-
+La notion de thread d'exécution est très importante dans un système informatique. Elle permet non seulement de comprendre comme un ordinateur équipé d'un seul microprocesseur peut exécuter plusieurs programmes simultanément, mais aussi comment des programmes peuvent profiter des nouveaux processeurs capables d'exécuter plusieurs threads simultanément. 
+.. Pour comprendre cette notion, il est intéressant de revenir à nouveau sur l'exécution d'une fonction en langage assembleur. 
 Considérons la fonction ``f`` :
 
  .. code-block:: c
@@ -127,8 +124,6 @@ Pour qu'un processeur puisse exécuter cette séquence d'instructions, il faut q
 
 
  - aux registres, des zone de mémoire très rapide (mais peu nombreuses par soucis technique) se trouvant sur le processeur qui permettent de stocker entre autre : l'addresse de l'instruction à exécuter, des résultats intermédaires obtenus durant l'exécution d'un instruction ou encore des informations sur la pile.
-
-
 .. et plus particulièrement, il doit accéder :
 ..
     - aux registres de données pour stocker les résultats de chacune des instructions
@@ -194,7 +189,7 @@ Le premier argument de `pthread_join(3)`_ est la structure ``pthread_t`` corresp
 
 L'exemple ci-dessous illustre une utilisation simple des fonctions `pthread_create(3)`_, `pthread_join(3)`_ et `pthread_exit(3)`_.
 
-.. literalinclude:: /_static/src/Threads/S5-src/pthread.c
+.. literalinclude:: /Threads/S5-src/pthread.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -203,7 +198,7 @@ Dans ce programme, la fonction ``main`` lance deux threads. Le premier exécute
 
 Afin d'illustrer la possibilité de passer des arguments à un thread et d'en récupérer la valeur de retour, considérons l'exemple ci-dessous.
 
-.. literalinclude:: /_static/src/Threads/S5-src/pthread-neg.c
+.. literalinclude:: /Threads/S5-src/pthread-neg.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
diff --git a/Theorie/Threads/threads2.rst b/Theorie/Threads/threads2.rst
index a143ca2fcc22c19202f269e4976cce8bd3df8a6a..2ee6cdcd4d3b880c730354d71c856caadb4ca5c8 100644
--- a/Theorie/Threads/threads2.rst
+++ b/Theorie/Threads/threads2.rst
@@ -84,7 +84,7 @@ Malheureusement les difficultés surviennent lorsque deux threads exécutent en
 
  La taille de la pile d'un thread POSIX est l'un des attributs qui peuvent être modifiés lors de l'appel à `pthread_create(3)`_  pour créer un nouveau thread. Cet attribut peut être fixé en utilisant la fonction `pthread_attr_setstackaddr(3posix)`_ comme illustré dans l'exemple ci-dessous [#fpthreadc]_ (où ``thread_first`` est la fonction qui sera appelée à la création du thread). En général, la valeur par défaut choisie par le système suffit, sauf lorsque le programmeur sait qu'un thread devra par exemple allouer un grand tableau auquel il sera le seul à avoir accès. Ce tableau sera alors alloué sur la pile qui devra être suffisamment grande pour le contenir.
 
- .. literalinclude:: /_static/src/Threads/S6-src/pthread.c
+ .. literalinclude:: /Threads/S6-src/pthread.c
     :encoding: utf-8
     :language: c
     :start-after: ///AAA
@@ -95,7 +95,7 @@ Ce problème d'accès concurrent à une zone de mémoire par plusieurs threads e
 
 Le fragment de code ci-dessus présente une autre illustration d'une section critique. Dans cet exemple, la fonction ``main`` (non présentée), créée deux threads. Le premier exécute la fonction ``inc`` qui incrémente la variable ``global``. Le second exécute la fonction ``is_even`` qui teste la valeur de cette variable et compte le nombre de fois qu'elle est paire. Après la terminaison des deux threads, le programme affiche le contenu des variables ``global`` et ``even``.
 
-.. literalinclude:: /_static/src/Threads/S6-src/pthread-test-if.c
+.. literalinclude:: /Threads/S6-src/pthread-test-if.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -274,7 +274,7 @@ En C, cela se fait en utilisant les fonctions `pthread_mutex_lock(3posix)`_ et `
 
 L'exemple ci-dessous reprend le programme dans lequel une variable globale est incrémentée par plusieurs threads.
 
-.. literalinclude:: /_static/src/Threads/S6-src/pthread-mutex.c
+.. literalinclude:: /Threads/S6-src/pthread-mutex.c
    :encoding: utf-8
    :language: c
    :start-after: ///AAA
@@ -303,9 +303,9 @@ Pour montrer que la propriété de vivacité est bien respectée, il faut montre
 
 .. rubric:: Footnotes
 
-.. [#fexemple] Le programme complet est accessible via :download:`/_static/src/Threads/S5-src/pthread-test.c`
+.. [#fexemple] Le programme complet est accessible via :download:`/Threads/S5-src/pthread-test.c`
 
-.. [#fpthreadc] Le programme complet est accessible via :download:`/_static/src/Threads/S6-src/pthread.c`
+.. [#fpthreadc] Le programme complet est accessible via :download:`/Threads/S6-src/pthread.c`
 
 .. .. [#fframes] Il existe différents standards pour le nombre d'images par seconde en cinéma et en télévision. Les plus courants sont 24, 25 et 30 images par seconde. Voir http://en.wikipedia.org/wiki/Frame_rate
 
@@ -317,4 +317,4 @@ Pour montrer que la propriété de vivacité est bien respectée, il faut montre
 
 .. [#fstaticinit] Linux supporte également la macro ``PTHREAD_MUTEX_INITIALIZER`` qui permet d'initialiser directement un ``pthread_mutex_t`` déclaré comme variable globale. Dans cet exemple, la déclaration aurait été : ``pthread_mutex_t global_mutex=PTHREAD_MUTEX_INITIALIZER;`` et l'appel à `pthread_mutex_init(3posix)`_ aurait été inutile. Comme il s'agit d'une extension spécifique à Linux, il est préférable de ne pas l'utiliser pour garantir la portabilité du code.
 
-.. [#fphilo] Le programme complet est :download:`/_static/src/Threads/S6-src/pthread-philo.c`
+.. [#fphilo] Le programme complet est :download:`/Threads/S6-src/pthread-philo.c`
diff --git a/_static/src/C/S2-src/array.c b/_static/src/C/S2-src/array.c
deleted file mode 100644
index b9414f65d61180245ce5cf181f7ec6bb0f3ba488..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/array.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/***********************************************
- * array.c
- *
- * Programme d'exemple d'utilisation de tableaux
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-#define N 10
-int vecteur[N];
-float matriceC[N][N];
-float matriceR[N][2*N];
-
-///BBB
-
-// calcule la somme des éléments d'un tableau
-int sum(int v[])
-{
-  ///CCC
-  
-  int i;
-  int sum = 0;
-  for (i = 0; i < N; i++) {
-    sum += v[i];
-  }
-  
-  ///DDD
-  
-  return sum;
-}
-
-// calcule la somme des éléments d'un tableau
-int sum2(int size, int v[size])
-{
-  int i;
-  int sum = 0;
-  for (i = 0; i < size; i++) {
-    sum += v[i];
-  }
-  return sum;
-}
-
-#include <float.h>
-
-// retourne le maximum d'un matrice
-// carrée de NxN élément
-float max()
-{
-  ///EEE
-  #define L 2
-  #define C 3
-  float matriceR[L][C] = { {1.0,2.0,3.0},
-                           {4.0,5.0,6.0} };
-  int i, j;
-  float min = FLT_MAX;
-  for (i = 0; i < L; i++)
-    for (j = 0; j < C; j++)
-      if (matriceR[i][j] < min)
-        min=matriceR[i][j];
-    
-  ///FFF
-  return min;
-}
-
-// retourne le maximum d'un matrice
-// carrée de NxN élément
-float max2(int size, float mat[size][size]) {
-  int i,j;
-  float m=0.0; // corrige MINFLOAT
-  for(i=0;i<size;i++)
-    for(j=0;j<size;j++){
-      if(mat[i][j]>m)
-	m=mat[i][j];
-    }
-  return m;
-}
-
-
-int main(int argc, char *argv[]) {
-
-  ///CCC
-  int vecteur[N]={0,1,2,3,4,5,6,7,8,9};
-  int i;
-  int sum=0;
-  for(i=0;i<N; i++) {
-    sum+=vecteur[i];
-  }
-  ///DDD
-
-
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S2-src/arrayvar.c b/_static/src/C/S2-src/arrayvar.c
deleted file mode 100644
index eb5c7a77039b4678ee0d40a4c70eebfbbc1a3af5..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/arrayvar.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/***********************************************
- * arrayvar.c
- *
- * Programme d'exemple d'utilisation de tableaux
- * de taille non prédéfinie à la compilation
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#define N 10
-
-void init(int size, int v[]) {
-  int i;
-  for(i=0;i<size;i++)
-    v[i]=1;
-
-}
-
-
-int main(int argc, char *argv[]) {
-  /*
-  int size;
-  int vecteur[];
-  int i;
-  if(argc!=1) {
-    fprintf(stderr, "Usage : arrayvar n avec n entier\n");
-    return(EXIT_FAILURE);
-  }
-  size=atoi(argv[1]);
-  */
-
-  ///CCC
-  int vecteur[N]={0,1,2,3,4,5,6,7,8,9};
-  int i;
-  int sum=0;
-  for(i=0;i<N; i++) {
-    sum+=vecteur[i];
-  }
-  ///DDD
-
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/char-addr.c b/_static/src/C/S2-src/char-addr.c
deleted file mode 100644
index 667a1f2b944c03623ea68a40679086cc04b3e2f2..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/char-addr.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/***********************************************
- * charaddr.c
- *
- * Pointeurs et chaînes de caractères
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-///BBB
-int main(int argc, char *argv[]) {
-
-///AAA
-
-  int i;
-  char name1[] = "str";
-  //  char name2[] = "SINF1252";
-
-  for(i=0;i<10;i++) {
-    printf("%c",name1[i]);
-  }
-
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S2-src/char.c b/_static/src/C/S2-src/char.c
deleted file mode 100644
index 657e37b3bd10f813cf1bcdc90776f2a1c9d66061..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/char.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/***********************************************
- * strlen.c
- *
- * Initialisation de chaînes de caractères
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-///AAA
-
-int length(char str[]) {
-  int i=0;
-  while(str[i]!=0) { // '\0' et 0 sont égaux
-    i++;
-  }
-  return(i);
-}
-
-///BBB
-int main(int argc, char *argv[]) {
-
-  int i;
-  char name1[] = "str";
-  //  char name2[] = "SINF1252";
-
-  printf("Longueur de name1 [%s] : %d\n",name1,length(name1));
-  for(i=0;i<10;i++) {
-    printf("%c",name1[i]);
-  }
-
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S2-src/exprbin.c b/_static/src/C/S2-src/exprbin.c
deleted file mode 100644
index 405d3f1b6a2546985dfd2407348da6a0e9012f85..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/exprbin.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/***********************************************
- * exprbin.c
- *
- * Programme d'exemple d'utilisation d'expressions
- * binaires
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <stdlib.h>
-#define BITS_CHAR 8
-
-///EEE
-#define BITS_INT 32
-// str[BITS_INT]
-void int2bin(unsigned int num, char *str)
-{
-  int i;
-  str[BITS_INT] = '\0';
-  for (i = BITS_INT - 1; i >= 0; i--) {
-    if ((num & 1) == 1)
-      str[i] = '1';
-    else
-      str[i] = '0';
-    num = num >> 1;
-  }
-}
-///FFF
-
-// str[32]
-void char2bin(unsigned char num, char *str)
-{
-  int i;
-  str[BITS_CHAR]='\0';
-  for(i=BITS_CHAR-1; i>=0; i--) {
-    if( (num & 1)==1)
-      str[i]='1';
-    else
-      str[i]='0';
-    num = num >> 1;
-  }
-}
-
-
-
-int main(int argc, char *argv[]) {
-
-  unsigned char zero='\0'; ///EEE
-  unsigned char a=0xFA;
-  unsigned char b=0x5F;
-  unsigned char c=0x50;
-  unsigned char d=0x50;
-
-  unsigned char r;
-  unsigned int i1,i2,i3;
-  i1=0;
-  i2=0x4;
-  i3=0x5;
-
-  char str1[32];
-  char str2[32];
-  char str3[32];
-
-  char2bin(zero,str1);
-  char2bin(~zero,str2);
-  printf("~ %s = %s\n",str1,str2);
-  char2bin(a,str1);
-  char2bin(b,str2);
-  char2bin(a&b,str3);
-  printf("%s & %s = %s\n",str1,str2,str3);
-  char2bin(a,str1);
-  char2bin(b,str2);
-  char2bin(a|b,str3);
-  printf("%s | %s = %s\n",str1,str2,str3);
-  char2bin(a^b,str3);
-  printf("%s ^ %s = %s\n",str1,str2,str3);
-
-///AAA
-
-r = ~a;    // négation bit à bit
-r = a & b; // conjonction bit à bit
-r = a | b; // disjonction bit à bit
-r = a ^ b; // xor bit à bit
-
-///BBB
-
-///CCC
-
-r = c & 0x7E; // 0b01111110 force les bits de poids faible et fort à 0
-r = d | 0x18; // 0b00011000 force les bits 4 et 3 à 1
-
-///DDD
-
-  /*
-  printf("0x%x & 0x%x = 0x%x\n",i2,i3,i2 & i3);
-  printf("0x%x && 0x%x = 0x%8x\n",i2,i3,i2 && i3);
-  printf("0x%x | 0x%x = 0x%8x\n",i2,i3,i2 | i3);
-  printf("0x%x || 0x%x = 0x%8x\n",i2,i3,i2 || i3);
-  */
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/exprbin.out b/_static/src/C/S2-src/exprbin.out
deleted file mode 100644
index 01ca81de56e2d8d0cafd5cd17632a1891de76154..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/exprbin.out
+++ /dev/null
@@ -1,4 +0,0 @@
-~ 00000000 = 11111111
-11111010 & 01011111 = 01011010
-11111010 | 01011111 = 11111111
-11111010 ^ 01011111 = 10100101
diff --git a/_static/src/C/S2-src/fct.c b/_static/src/C/S2-src/fct.c
deleted file mode 100644
index 4c407b0d9d932105c8d4bf5364912320c79c5374..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/fct.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***********************************************
- * fct.c
- *
- * Programme d'exemple d'utilisation de fonctions
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-///AAA
-
-void usage()
-{
-  printf("Usage : ...\n");
-}
-
-///BBB
-
-///CCC
-
-int twotimes(int n)
-{
-  return 2 * n;
-}
-
-int two_times(int n)
-{
-  n = 2 * n;
-  return n;
-}
-
-///DDD
-
-
-///EEE
-
-int times_two(int *n)
-{
-  return (*n) + (*n);
-}
-
-int timestwo(int *n)
-{
-  *n = (*n) + (*n);
-  return *n;
-}
-
-void f()
-{
-  int i = 1252;
-  printf("i:%d\n", i);
-  printf("times_two(&i)=%d\n", times_two(&i));
-  printf("après times_two, i:%d\n", i);
-  printf("timestwo(&i)=%d\n", timestwo(&i));
-  printf("après timestwo, i:%d\n", i);
-}
-
-///FFF
-
-void plusun(int size, int *v) {
-  int i;
-  for(i=0;i<size;i++)
-    v[i]++;
-}
-
-///GGG
-
-
-int main(int argc, char *argv[]) {
-
-  int i=1252;
-  int j;
-
-  f();
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/fct.h b/_static/src/C/S2-src/fct.h
deleted file mode 100644
index 5f423f84bd19fb926bdee8cb4a03b22a5dfba740..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/fct.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/***********************************************
- * fct.h
- *
- * Exemple de signatures de fonctions
- *
- ***********************************************/
-
-///HHH
-int times_two(int *);
-int timestwo(int *);
-///III
diff --git a/_static/src/C/S2-src/fct.out b/_static/src/C/S2-src/fct.out
deleted file mode 100644
index 8c4f1575eff2047ccbdceacd2ea44afa1bc2df53..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/fct.out
+++ /dev/null
@@ -1,5 +0,0 @@
-i:1252
-times_two(&i)=2504
-après times_two, i:1252
-timestwo(&i)=2504
-après timestwo, i:2504
diff --git a/_static/src/C/S2-src/fctargs.c b/_static/src/C/S2-src/fctargs.c
deleted file mode 100644
index a08a229a46cb03841fd895888dcfbde383864d44..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/fctargs.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/***********************************************
- * fctargs.c
- *
- * Programme d'exemple d'utilisation de fonctions
- * montre l'importance de traiter les arguments en
- * ordre
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#define N 5
-///AAA
-int length(char c[]) {
-  int i=0;
-  while(c[i]!='\0')
-    i++;
-  return (i);
-}
-///BBB
-
-///CCC
-void plusun(int size, int *v)
-{
-  int i;
-  for (i = 0; i < size; i++)
-    v[i]++;
-}
-
-void print_vecteur(int size, int*v) {
-  int i;
-  printf("v={");
-  for (i = 0;i < size - 1; i++)
-    printf("%d,", v[i]);
-    
-  if (size > 0)
-    printf("%d}", v[size - 1]);
-  else
-    printf("}");
-}
-///DDD
-
-void wrong() {
-  int vecteur[N]={1,2,3,4,5};
-  /// provoque un segmentation fault
-  ///GGG
-  plusun(vecteur,N);
-  print_vecteur(N,vecteur);
-  ///HHH
-}
-
-
-int main(int argc, char *argv[]) {
-
-///EEE
-int vecteur[N] = {1, 2, 3, 4, 5};
-plusun(N, vecteur);
-print_vecteur(N, vecteur);
-///FFF
-
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/foobar.c b/_static/src/C/S2-src/foobar.c
deleted file mode 100644
index c54fe40d0e88999c739aff1f8cf84b72dbcfd54f..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/foobar.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/***********************************************
- * foobar.c
- *
- * Exercice
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-void foo(void) {
-  int a = 42;
-    printf("%d\n", a);
-}
-
-void bar(void) {
-// cppcheck-suppress uninitvar  ;
-  int a;
-  printf("%d\n", a);
-}
-// cppcheck-suppress uninitvar //
-int main(int argc, char *argv[]) {
-  foo();
-  bar();
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/int2bin.c b/_static/src/C/S2-src/int2bin.c
deleted file mode 100644
index f0cf288853724c63857dfeaf4c4a9e9045e50373..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/int2bin.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/**********************************************
- * int2bin
- *
- * Conversion d'entier non signé en binaire
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#define MAXSIZE 33 // nombre maximum de bits+1
-
-void print_bin(int num) {
-  int i;
-  int n=num;
-  char str[MAXSIZE];
-  i=MAXSIZE;
-  while (--i>=0) {
-    str[i] = n & 1 ? '1' : '0';
-    n >>= 1;
-  }
-  printf("La valeur de %d en hexadécimal est %x  et en binaire : %s\n",num,num,str);
-
-}
-
-int main(int argc, char *argv[]) {
-
-  int n=7654321;
-  print_bin(n);
-  print_bin(123);
-  print_bin(987654321);
-
-  return(EXIT_SUCCESS);
-}
-
-// inspiré de http://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format
diff --git a/_static/src/C/S2-src/num.c b/_static/src/C/S2-src/num.c
deleted file mode 100644
index d0f045decb10c5e20191f04f0b22e96da13525c2..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/num.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/***********************************************
- * num
- *
- * Déclaration de nombres
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-  ///AAA
-
-  int i;
-  i = 123;   // décimal
-  i = 0x7b;  // hexadécimal
-  i = 0173;  // octal !!
-  //  i = 0b1111011; // binaire, seulement certains compilateurs
-
-  ///BBB
-  
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/octal.c b/_static/src/C/S2-src/octal.c
deleted file mode 100644
index b2796c9659f5e477b0693577e47652ae64a8bec2..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/octal.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/***********************************************
- * octal
- *
- * Exemple d'erreur avec les nombres en octal
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-
-  ///AAA
-
-  int i, j;
-  i = 65;   // décimal
-  j = 065;  // octal !!!
-  if (i == j)
-    printf("%d et %d sont égaux\n", i, j);
-  else
-    printf("%d et %d sont différents\n", i, j);
-
-   ///BBB
-   
-   return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/perf.c b/_static/src/C/S2-src/perf.c
deleted file mode 100644
index a31da934037b771956cf3979fcec0aa30e8e76ef..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/perf.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***********************************************
- * perf.c
- *
- * Mesure de temps de calcul via gettimeofday
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-/* Return t2-t1 in microseconds */
-long timeval_diff(struct timeval *t2, struct timeval *t1)
-{
-  long diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
-  return (diff);
-}
-// n : number of iterations of the loop
-void compute(int n) {
-  // long computation
-  double sum=0;
-  int i;
-  for(i=0;i<n;i++) {
-    sum=sum+i;
-  }
-}
-
-int main(int argc, char *argv[])
-{
-  struct timeval tvStart, tvEnd;
-  int err;
-  int num; // number of operations for compute
-  if(argc!=2)
-    exit(EXIT_FAILURE);
-  else
-    num=atoi(argv[1]);
-
-  err=gettimeofday(&tvStart, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-
-  // long computation
-  compute(num);
-
-  err=gettimeofday(&tvEnd, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-
-  printf("Duration : %ld microseconds\n", timeval_diff(&tvEnd, &tvStart));
-
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S2-src/ptr.c b/_static/src/C/S2-src/ptr.c
deleted file mode 100644
index 1e02c8fe1bd24418e7a238fc206c17df91fc66ad..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/ptr.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/***********************************************
- * ptr
- *
- * Programme d'exemple d'utilisation de pointeurs
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-
-  int i = 1252;
-  char str[] = "sinf1252";
-  char c = 'c';
-
-  printf("i vaut %d, occupe %ld bytes et est stocké à l'adresse : %p\n", 
-         i, sizeof(i), &i);
-  printf("c vaut %c, occupe %ld bytes et est stocké à l'adresse : %p\n", 
-         c, sizeof(c), &c);
-  printf("str contient \"%s\" et est stocké à partir de l'adresse : %p\n", 
-         str, &str);
-  
-  ///BBB
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/ptr.out b/_static/src/C/S2-src/ptr.out
deleted file mode 100644
index a4ade1396ffc919267443e148d49a006958ab8a1..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/ptr.out
+++ /dev/null
@@ -1,3 +0,0 @@
-i vaut 1252, occupe 4 bytes et est stocké à l'adresse : 0x7fff89f99cbc
-c vaut c, occupe 1 bytes et est stocké à l'adresse : 0x7fff89f99caf
-str contient "sinf1252" et est stocké à partir de l'adresse : 0x7fff89f99cb0
diff --git a/_static/src/C/S2-src/ptrchar.c b/_static/src/C/S2-src/ptrchar.c
deleted file mode 100644
index ce253e2f81fc1c80e041b526da00d805fc0992d7..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/ptrchar.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/***********************************************
- * ptrchar
- *
- * Programme d'exemple d'utilisation de pointeurs
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-  char c='Z';
-  char str[]="sinf1252";
-  char *str_ptr=NULL;
-  int i;
-
-  str_ptr=&c;
-  printf("c vaut %c et est stocké à l'adresse : %p\n",c,&c);
-  printf("*str_ptr vaut %p et pointe vers %c\n",str_ptr,*(str_ptr));
-  str_ptr=str; // équivaut à  str_ptr=&(str[0]);
-  printf("après str_ptr=str[];\n");
-  printf("*str_ptr vaut %p et pointe vers %c\n",str_ptr,*(str_ptr));
-  printf("Contenu du tableau\n");
-  for(i=0;i<strlen(str);i++) {
-    printf("str[%d]=%c et *(str_ptr+%d) contient %c\n",i,str[i],i,*(str_ptr+i));
-  }
-
-
-   ///BBB
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/ptrex.c b/_static/src/C/S2-src/ptrex.c
deleted file mode 100644
index 7b7cbb6372b0435ac9a92569188033451d298337..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/ptrex.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/***********************************************
- * ptrex.c
- *
- * Programme d'exemple d'utilisation de pointeurs
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-
-  int i = 1;           // entier
-  int *ptr_i;          // pointeur vers un entier
-  char str[] = "Unix";
-  char *s;             // pointeur vers un char
-
-  ptr_i = &i;
-  printf("valeur de i : %d, valeur pointée par ptr_i : %d\n", i, *ptr_i);
-  *ptr_i = *ptr_i + 1252;
-  printf("valeur de i : %d, valeur pointée par ptr_i : %d\n", i, *ptr_i);
-  s = str;
-  for (i = 0; i < strlen(str); i++){
-    printf("valeur de str[%d] : %c, valeur pointée par *(s+%d) : %c\n",
-           i, str[i], i, *(s+i));
-  }
-
-  ///BBB
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/ptrex.out b/_static/src/C/S2-src/ptrex.out
deleted file mode 100644
index 43314a5863d5a297306b4d406f22bc75cc79afa1..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/ptrex.out
+++ /dev/null
@@ -1,6 +0,0 @@
-valeur de i : 1, valeur pointée par ptr_i : 1
-valeur de i : 1253, valeur pointée par ptr_i : 1253
-valeur de str[0] : U, valeur pointée par *(s+0) : U
-valeur de str[1] : n, valeur pointée par *(s+1) : n
-valeur de str[2] : i, valeur pointée par *(s+2) : i
-valeur de str[3] : x, valeur pointée par *(s+3) : x
diff --git a/_static/src/C/S2-src/random.c b/_static/src/C/S2-src/random.c
deleted file mode 100644
index 51a211f80a795a4ed2c328969ecf2604cc06ba37..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/random.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/***********************************************
- * random
- *
- * Utilisation de nombres aléatoires
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-
- long int r;
- int i;
- int pair=0;
- unsigned int seed=1252;  // semence initiale
- srandom(seed);
- for(i=0;i<10000;i++) {
-   r=random();
-   if (r%2==0)
-     pair++;
- }
- printf("%d nombres pairs ont été générés\n",pair);
-   ///BBB
-   return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S2-src/short.c b/_static/src/C/S2-src/short.c
deleted file mode 100644
index f7452beab3cc1923aaae496e3776fadd53162994..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/short.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/***********************************************
- * short
- *
- * Overflow sur les shorts
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-  ///AAA
-
-  short int i = 1;
-  unsigned short j = 1;
-  int n;
-  
-  printf("\nPuissances de 5 en notation signée\n");
-  for (n = 1; n < 10; n++) {
-    i = i * 5;
-    printf("5^%d=%d\n", n, i);
-  }
-  
-  printf("\nPuissances de 10 en notation non signée\n");
-  for (n = 1; n < 10; n++) {
-    j = j * 10;
-    printf("10^%d=%d\n", n, j);
-  }
-
-   ///BBB
-
-   return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/short.out b/_static/src/C/S2-src/short.out
deleted file mode 100644
index eb18f95164070ca249dba78e92402d38223be12e..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/short.out
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Puissances de 5 en notation signée
-5^1=5
-5^2=25
-5^3=125
-5^4=625
-5^5=3125
-5^6=15625
-5^7=12589
-5^8=-2591
-5^9=-12955
-
-Puissances de 10 en notation non signée
-10^1=10
-10^2=100
-10^3=1000
-10^4=10000
-10^5=34464
-10^6=16960
-10^7=38528
-10^8=57600
-10^9=51712
diff --git a/_static/src/C/S2-src/sizeof.c b/_static/src/C/S2-src/sizeof.c
deleted file mode 100644
index 1f604959c96f3b7e25265f9ce7e452a8b2d99969..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/sizeof.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/**********************************************
- * sizeof
- *
- * Programme d'exemple d'utilisation de sizeof
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-
-  printf("Type\t\t\tTaille\n");
-  printf("\n");
-  printf("char\t\t\t%ld octet(s)\n",sizeof(char));
-  printf("unsigned char\t\t%ld octet(s)\n",sizeof(unsigned char));
-  printf("short\t\t\t%ld octet(s)\n",sizeof(short));
-  printf("unsigned short\t\t%ld octet(s)\n",sizeof(unsigned short));
-  printf("int\t\t\t%ld octet(s)\n",sizeof(int));
-  printf("unsigned int\t\t%ld octet(s)\n",sizeof(unsigned int));
-  printf("long\t\t\t%ld octet(s)\n",sizeof(long));
-  printf("unsigned long\t\t%ld octet(s)\n",sizeof(unsigned long));
-  printf("long long\t\t%ld octet(s)\n",sizeof(long long));
-  printf("unsigned long long\t%ld octet(s)\n",sizeof(unsigned long long));
-  printf("float\t\t\t%ld octet(s)\n",sizeof(float));
-  printf("double\t\t\t%ld octet(s)\n",sizeof(double));
-  printf("long double\t\t%ld octet(s)\n",sizeof(long double));
-
-   ///BBB
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/sizeofptr.c b/_static/src/C/S2-src/sizeofptr.c
deleted file mode 100644
index 29a2b7cdfcdadc71103bf67fe0f117c39bab687f..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/sizeofptr.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/**********************************************
- * sizeofptr
- *
- * Programme d'exemple d'utilisation de sizeof
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-
-  printf("Type\t\t\tTaille\n");
-  printf("\n");
-  printf("char *\t\t\t%ld octet(s)\n",sizeof(char *));
-  printf("unsigned char *\t\t%ld octet(s)\n",sizeof(unsigned char *));
-  printf("short *\t\t\t%ld octet(s)\n",sizeof(short *));
-  printf("unsigned short *\t%ld octet(s)\n",sizeof(unsigned short *));
-  printf("int *\t\t\t%ld octet(s)\n",sizeof(int *));
-  printf("unsigned int *\t\t%ld octet(s)\n",sizeof(unsigned int *));
-  printf("long *\t\t\t%ld octet(s)\n",sizeof(long *));
-  printf("unsigned long *\t\t%ld octet(s)\n",sizeof(unsigned long *));
-  printf("long long *\t\t%ld octet(s)\n",sizeof(long long *));
-  printf("unsigned long long *\t%ld octet(s)\n",sizeof(unsigned long long *));
-  printf("float *\t\t\t%ld octet(s)\n",sizeof(float *));
-  printf("double *\t\t%ld octet(s)\n",sizeof(double *));
-  printf("long double *\t\t%ld octet(s)\n",sizeof(long double *));
-
-   ///BBB
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/strlen.c b/_static/src/C/S2-src/strlen.c
deleted file mode 100644
index a623e5b6ddaa0e85a280872e674c821bcab382bc..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/strlen.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/***********************************************
- * strlen.c
- *
- * Initialisation de chaînes de caractères
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-///AAA
-
-int length(char str[])
-{
-  int i = 0;
-  while (str[i] != 0) {// '\0' et 0 sont égaux
-    i++;
-  }
-  return i;
-}
-
-///BBB
-
-int main(int argc, char *argv[])
-{
-
-  int i;
-  char name1[] = "str";
-  //  char name2[] = "SINF1252";
-
-  printf("Longueur de name1 [%s] : %d\n", name1, length(name1));
-  for (i = 0; i < length(str); i++) {
-    printf("%c", name1[i]);
-  }
-
-  return EXIT_SUCCESS;
-}
-
diff --git a/_static/src/C/S2-src/strlenptr.c b/_static/src/C/S2-src/strlenptr.c
deleted file mode 100644
index 7030859576476982b386f674b81805cec6bae7c8..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/strlenptr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/***********************************************
- * strlen.c
- *
- * Calcul de longueur de chaînes avec pointeurs
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-int length(char *s)
-{
-  int i = 0;
-  while (*(s+i) != '\0')
-    i++;
-  return i;
-}
-
-///BBB
-
-int main(int argc, char *argv[])
-{
-  int i;
-  char name1[] = "str";
-  //  char name2[] = "SINF1252";
-
-  printf("Longueur de name1 [%s] : %d\n", name1, length(name1));
-  for (i = 0; i < 10; i++) {
-    printf("%c", name1[i]);
-  }
-
-  return EXIT_SUCCESS;
-}
-
diff --git a/_static/src/C/S2-src/struct.c b/_static/src/C/S2-src/struct.c
deleted file mode 100644
index dac885b590fce623c5e37e4cda0142ecbdc39972..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/struct.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***********************************************
- * struct.c
- *
- * Programme d'exemple de structures
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-///AAA
-
-// structure pour stocker une coordonnée 3D
-struct coord {
-  int x;
-  int y;
-  int z;
-};
-
-struct coord point = {1, 2, 3};
-struct coord p;
-
-// structure pour stocker une fraction
-struct fraction {
-  int numerator;
-  int denominator;
-};
-
-struct fraction demi = {1, 2};
-struct fraction f;
-
-// structure pour représenter un étudiant
-struct student {
-  int matricule;
-  char prenom[20];
-  char nom[30];
-};
-
-struct student s = {1, "Linus", "Torvalds"};
-
-///BBB
-
-///EEE
-struct fraction init(int num, int den)
-{
-  struct fraction f;
-  f.numerator = num;
-  f.denominator = den;
-  return f;
-}
-
-int equal(struct fraction f1, struct fraction f2)
-{
-  return ((f1.numerator == f2.numerator) 
-          && (f1.denominator == f2.denominator));
-}
-
-int equalptr(struct fraction *f1, struct fraction *f2)
-{
-  return ((f1->numerator==f2->numerator)
-          && (f1->denominator==f2->denominator));
-}
-
-void initptr(struct fraction *f, int num, int den)
-{
-  f->numerator = num;
-  f->denominator = den;
-}
-///FFF
-
-int main(int argc, char *argv[])
-{
-
-  int c[3] = {0, 0, 0};
-
-///CCC
-
-point.x = 1;
-point.y = 2;
-point.z = 3;
-
-///DDD
-
-///GGG
-
-struct fraction quart;
-struct fraction tiers;
-quart = init(1, 4);
-initptr(&tiers, 1, 3);
-printf("equal(tiers,quart)=%d\n", equal(tiers, quart));
-printf("equalptr(&tiers,&quart)=%d\n", equalptr(&tiers, &quart));
-
-///HHH
-
-  f.numerator=1;
-  f.denominator=4;
-  printf("%c\n",s.prenom[2]);
-  printf("sizeof int[3]=%ld, sizeof coord=%ld\n",sizeof(c),sizeof(struct coord));
-  printf("sizeof student : %ld\n",sizeof(s));
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/structptr.c b/_static/src/C/S2-src/structptr.c
deleted file mode 100644
index 59b93ebda18435e2ab1eb0d91204b9326039073e..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/structptr.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/***********************************************
- * structptr.c
- *
- * Programme d'exemple de pointeurs vers des
- * structures
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[])
-{
-
-  struct fraction {
-    int num;
-    int den;
-  };
-
-///AAA
-struct fraction demi, quart;
-struct fraction *demi_ptr;
-struct fraction *quart_ptr;
-
-demi_ptr = &demi;
-quart_ptr = &quart;
-
-(*demi_ptr).num = 1;
-(*demi_ptr).den = 2;
-
-quart_ptr->num = 1;
-quart_ptr->den = 4;
-///BBB
-
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/time.c b/_static/src/C/S2-src/time.c
deleted file mode 100644
index 3b082a83db74d7d7a100510ebb54995d832ddab6..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/time.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/***********************************************
- * struct.c
- *
- * Programme d'exemple de structures
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-///AAA
-
-// structure pour stocker une coordonnée 3D
-struct coord {
-  int x;
-  int y;
-  int z;
-} ;
-
-struct coord origin={1,2,3};
-struct coord p;
-
-// structure pour stocker une fraction
-struct fraction {
-  double numerator;
-  double denominator;
-};
-
-struct fraction demi={1.0,2.0};
-struct fraction f;
-
-// structure pour représenter un étudiant
-struct student {
-  int matricule;
-  char prenom[20];
-  char nom[30];
-};
-
-struct student s={1,"Linux","Torvalds"};
-
-///BBB
-
-///EEE
-
-int equal(struct fraction f1, struct fraction f2) {
-  return ( (f1.numerator==f2.numerator) &&
-	   (f1.denominator==f2.denominator) );
-}
-
-///FFF
-
-int main(int argc, char *argv[]) {
-  int c[3]={0,0,0};
-
-  ///CCC
-  origin.x=1;
-  origin.y=2;
-  origin.z=3;
-  ///DDD
-
-  f.numerator=1;
-  f.denominator=4;
-  printf("%c\n",s.prenom[2]);
-  printf("sizeof int[3]=%ld, sizeof coord=%ld\n",sizeof(c),sizeof(struct coord));
-  printf("sizeof student : %ld\n",sizeof(s));
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S2-src/toupper.c b/_static/src/C/S2-src/toupper.c
deleted file mode 100644
index cf87bc40a7795e9dc56e9fcedc28f523570e28a3..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/toupper.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/***********************************************
- * toupper.c
- *
- * Conversion de caractères
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-// conversion de minuscules en majuscules
-int toUpper(char c) {
-  if (c >= 'a' && c <= 'z')
-    return c + ('A' - 'a');
-  else
-    return c;
-}
-///BBB
-
-int main(int argc, char *argv[])
-{
-
-  printf("%c\n",toUpper('g'));
-  printf("%c\n",toUpper('='));
-  printf("%c\n",toUpper('Z'));
-  printf("%c\n",toUpper('x'));
-
-   return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/S2-src/typedef.c b/_static/src/C/S2-src/typedef.c
deleted file mode 100644
index 988cd9dedbfc60e92b3ab19b60e9e36d2447e491..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/typedef.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/***********************************************
- * typedef.c
- *
- * Programme d'exemple d'utilisation de typedef
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///EEE
-typedef unsigned int u_int_t;
-typedef unsigned long u_long_t;
-///FFF
-
-///CCC
-typedef int * int_ptr;
-typedef char * string;
-///DDD
-
-///AAA
-// structure pour stocker une fraction
-typedef struct fraction {
-  double numerator;
-  double denominator;
-} Fraction ;
-
-typedef int Entier;
-
-int main(int argc, char *argv[])
-{
-  Fraction demi = {1, 2};
-  Entier i = 2;
-  // ...
-  return EXIT_SUCCESS;
-}
-///BBB
diff --git a/_static/src/C/S2-src/xor.c b/_static/src/C/S2-src/xor.c
deleted file mode 100644
index 9466a8228fae60901803ac6d8651831afbfc5e46..0000000000000000000000000000000000000000
--- a/_static/src/C/S2-src/xor.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/***********************************************
- * xor.c
- *
- * Programme d'exemple d'encryptage avec XOR
- *
- ***********************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-// affiche un message d'erreur
-void usage(char *msg)
-{
-  fprintf(stderr,"Usage : %s\n",msg);
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-int main(int argc, char* argv[])
-{
-  if (argc != 2)
-    usage("ce programme prend une clé comme argument");
-
-  char *key = argv[1];
-  char c;
-  int i = 0;
-  while (((c = getchar()) != EOF) && (i < strlen(key))) {
-    putchar(c ^ *(key + i));
-    i++;
-  }
-  return EXIT_SUCCESS;
-}
-///BBB
diff --git a/_static/src/C/S3-src/argv-env.c b/_static/src/C/S3-src/argv-env.c
deleted file mode 100644
index 7800144572cd51b561dfecbcb55ec4d4f309e9bf..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/argv-env.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/**************************************
- * arg-env.c
- *
- * Arguments et variables d'environnement
- *
- **************************************/
-
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-
-// affiche la valeur de la variable d'environnement var
-void print_var(char *var) {
-  char *val=getenv(var);
-  if(val!=NULL)
-    printf("La variable %s a la valeur : %s\n",var,val);
-  else
-    printf("La variable %s n'a pas été assignée\n",var);
-}
-
-int main(int argc, char *argv[]) {
-
-  char *old_path=getenv("PATH");
-
-  print_var("PATH");
-
-  if(unsetenv("PATH")!=0) {
-    fprintf(stderr,"Erreur unsetenv\n");
-    exit(EXIT_FAILURE);
-  }
-
-  print_var("PATH");
-
-  if(setenv("PATH",old_path,1)!=0) {
-    fprintf(stderr,"Erreur setenv\n");
-    exit(EXIT_FAILURE);
-  }
-
-  print_var("PATH");
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/callocperf.c b/_static/src/C/S3-src/callocperf.c
deleted file mode 100644
index 5707955a4e9a3bf6b30553bf121af6f107cd24ff..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/callocperf.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/**************************************
- * callocperf.c
- *
- * Programme mesurant les performances
- * de calloc
- *
- **************************************/
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#define LOOP 2
-
-void error(char *msg) {
-  fprintf(stderr,"Erreur :%s\n",msg);
-  exit(EXIT_FAILURE);
-}
-
-int main(int argc, char *argv[]) {
-  int size=1;
-  if(argc==2)
-    size=atoi(argv[1]);
-
-  for(int j=1;j<LOOP+1;j++) {
-    int *vector;
-    vector=(int *)calloc(size,sizeof(int));
-
-    int count=0;
-    for(int i=0;i<size;i++) {
-      if( *(vector+i)!=0)
-	count++;
-      else
-	*(vector+i)=j;
-    }
-    printf("Nombre d'entiers non initialisés à zéro : %d\n",count);
-    free(vector);
-  }
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/const.c b/_static/src/C/S3-src/const.c
deleted file mode 100644
index ee0077524db848061a6294ec4a5dff3ebda2a0d6..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/const.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/**************************************
- * const.c
- *
- * Programme d'exemple de constantes
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-// extrait de <math.h>
-#define M_PI   3.14159265358979323846264338327950288;
-
-const double pi=3.14159265358979323846264338327950288;
-
-const struct fraction {
-  int num;
-  int denom;
-}  demi={1,2};
-///BBB
-int main(int argc, char *argv[]) {
-  // demi.num=0; invalid
-  printf("%d/%d\n",demi.num,demi.denom);
-  printf("Adresse de pi :%p\n",&pi);
-  printf("Adresse de demi :%p\n",&demi);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/dataseg.c b/_static/src/C/S3-src/dataseg.c
deleted file mode 100644
index 9f4cb34767e2ee3510068e0663ba3fed7ad98224..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/dataseg.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/**************************************
- * initvar.c
- *
- * Programme d'exemple sur le segment
- * de données
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-#define MSG_LEN 10
-int g;   // initialisé par le compilateur
-int g_init=1252;
-const int un=1;
-int tab[3]={1,2,3};
-int array[10000];
-char cours[]="SINF1252";
-char msg[MSG_LEN]; // initialisé par le compilateur
-
-int main(int argc, char *argv[]) {
-  int i;
-  printf("g est à l'adresse %p et initialisée à %d\n",&g,g);
-  printf("msg est à l'adresse %p contient les caractères :",msg);
-  for(i=0;i<MSG_LEN;i++)
-    printf(" %x",msg[i]);
-  printf("\n");
-  printf("Cours est à l'adresse %p et contient : %s\n",&cours,cours);
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S3-src/dataseg.out b/_static/src/C/S3-src/dataseg.out
deleted file mode 100644
index 9a372e29ce61182f94e9cfcc47b7500e46f0b880..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/dataseg.out
+++ /dev/null
@@ -1,3 +0,0 @@
-g est à l'adresse 0x60aeac et initialisée à 0
-msg est à l'adresse 0x60aea0 contient les caractères : 0 0 0 0 0 0 0 0 0 0
-Cours est à l'adresse 0x601220 et contient : SINF1252
diff --git a/_static/src/C/S3-src/empty.c b/_static/src/C/S3-src/empty.c
deleted file mode 100644
index 80fa49285f10109c0d13737be89f09262169e13a..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/empty.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**************************************
- * static.c
- *
- * Programme d'exemple de variables static
-éé
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-   // affiche sur la sortie standard
-   printf("Hello, world!\n");
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/enum.c b/_static/src/C/S3-src/enum.c
deleted file mode 100644
index 63b4776777d25f444678edb0609dd34aa7ff33f6..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/enum.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/**************************************
- * enum.c
- *
- * Programme d'exemple de enum
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-// les jours de la semaine
-typedef enum  {
-      monday, tuesday, wednesday, thursday, friday, saturday, sunday
-   } day;
-
-// jeu de carte
-typedef enum {
-  coeur, carreau, trefle, pique
-} carte;
-
-// bits
-typedef enum {
-        BITRESET = 0,
-        BITSET = 1
-} bit_t;
-
-///BBB
-
-
-int main(int argc, char *argv[]) {
-  ///CCC
-  bit_t bit=BITRESET;
-  day jour=monday;
-  if(jour==saturday||jour==sunday)
-    printf("Congé\n");
-  ///DDD
-  printf("jour: %d\n",jour);
-  printf("sizeof(day) %ld\n",sizeof(day));
-  printf("sizeof(bit_t) %ld\n",sizeof(bit_t));
-
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/exhaust-stack.c b/_static/src/C/S3-src/exhaust-stack.c
deleted file mode 100644
index c177bd4f88473ce2a61aa0c784f8cd4e61423936..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/exhaust-stack.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/**************************************
- * exhaust-stack.c
- *
- * Programme qui sature le stack
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/resource.h>
-
-///AAA
-
-#define ARRAY_SIZE 10000
-
-int sumn(int i) {
-  int array[ARRAY_SIZE];
-  printf("Computing sumn(%d)\n",i);
-  for(int j=0;j<ARRAY_SIZE;j++){
-    array[j]=i;
-  }
-  if(i>0)
-    return (i+sumn(i-1));
-  else
-    return i;
-}
-
-///BBB
-int main(int argc, char *argv[]) {
-  int n;
-  if(argc==2) {
-    n=atoi(argv[1]);
-  }
-  else
-    n=5;
-  struct rlimit r;
-
-  int err=getrlimit(RLIMIT_STACK,&r);
-  if(err!=0) {
-    printf("Error\n");
-    return(EXIT_FAILURE);
-  }
-  printf("Softlimit %ld, hard limit %ld\n",(rlim_t) r.rlim_cur,(rlim_t)r.rlim_max);
-  printf("La somme des %d premiers entiers est : %d\n",n,sumn(n));
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/fact.c b/_static/src/C/S3-src/fact.c
deleted file mode 100644
index 2ea01e9c3c44e7fa686d140e4029bbc9c7f000fd..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/fact.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/**************************************
- * fact.c
- *
- * Programme de calcul de factorielle
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///BBB
-// retourne i*j
-int times(int i, int j) {
-  int m;
-  m=i*j;
-  printf("\t[times(%d,%d)] : return(%d)\n",i,j,m);
-  return m;
-}
-// calcul récursif de factorielle
-// n>0
-int fact(int n) {
-  printf("[fact(%d)]: Valeur de n:%d, adresse: %p\n",n,n,&n);
-  int f;
-  if(n==1) {
-    printf("[fact(%d)]: return(1)\n",n);
-    return(n);
-  }
-  printf("[fact(%d)]: appel à fact(%d)\n",n,n-1);
-  f=fact(n-1);
-  printf("[fact(%d)]: calcul de times(%d,%d)\n",n,n,f);
-  f=times(n,f);
-  printf("[fact(%d)]: return(%d)\n",n,f);
-  return(f);
-}
-
-void compute() {
-  int nombre=3;
-  int f;
-  printf("La fonction fact est à l'adresse : %p\n",fact);
-  printf("La fonction times est à l'adresse : %p\n",times);
-  printf("La variable nombre vaut %d et est à l'adresse %p\n",nombre,&nombre);
-  f=fact(nombre);
-  printf("La factorielle de %d vaut %d\n",nombre,f);
-}
-///AAA
-
-
-#define MSG_LEN 80
-char msg[MSG_LEN];
-float matrix1[4];
-float matrix3[2]={1.3,2.4};
-struct fraction {
-  float den;
-  float num;
-} fract;
-const int nombre=7;
-
-int max(int i, int j) {
-  if(i>j)
-    return(i);
-  else
-    return(j);
-}
-
-int main(int argc, char *argv[]) {
-
-  int f=1252; // variable locale
-
-  printf("La variable nombre est à l'adresse : %p\n",(void *) &nombre);
-  printf("Le tableau msg est à l'adresse : %p\n",(void *)msg);
-  printf("La variable locale f est à l'adresse : %p\n",(void *) &f);
-
-  printf("La fonction main est à l'adresse : %p\n",main);
-  printf("La fonction max est à l'adresse : %p\n",max);
-
-  /// ...
-  ///BBB
-  printf("///FACT\n");
-  compute();
-
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S3-src/fact.out b/_static/src/C/S3-src/fact.out
deleted file mode 100644
index c2698ff8d11222fd32a4b8b1c39b581a87a69a6e..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/fact.out
+++ /dev/null
@@ -1,22 +0,0 @@
-La variable nombre est à l'adresse : 0x100000e68
-Le tableau msg est à l'adresse : 0x1000010a0
-La variable locale f est à l'adresse : 0x7fff5fbfe1dc
-La fonction main est à l'adresse : 0x100000b6b
-La fonction max est à l'adresse : 0x100000b46
-///FACT
-La fonction fact est à l'adresse : 0x100000a0f
-La fonction times est à l'adresse : 0x1000009d8
-La variable nombre vaut 3 et est à l'adresse 0x7fff5fbfe1ac
-[fact(3)]: Valeur de n:3, adresse: 0x7fff5fbfe17c
-[fact(3)]: appel à fact(2)
-[fact(2)]: Valeur de n:2, adresse: 0x7fff5fbfe14c
-[fact(2)]: appel à fact(1)
-[fact(1)]: Valeur de n:1, adresse: 0x7fff5fbfe11c
-[fact(1)]: return(1)
-[fact(2)]: calcul de times(2,1)
-	[times(2,1)] : return(2)
-[fact(2)]: return(2)
-[fact(3)]: calcul de times(3,2)
-	[times(3,2)] : return(6)
-[fact(3)]: return(6)
-La factorielle de 3 vaut 6
diff --git a/_static/src/C/S3-src/getpid.c b/_static/src/C/S3-src/getpid.c
deleted file mode 100644
index 916a5945629a6a9a86c87c49430054703d7612aa..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/getpid.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/**************************************
- * getpid.c
- *
- * Programme d'exemple pour getpid
- *
- **************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int main(int argc, char *argv[]) {
-
-  unsigned int sec=30;
-  int pid=(int) getpid();
-
-  printf("Processus : %d\n",pid);
-  printf("[pid=%d] Sleep : %d secondes\n",pid, sec);
-  sec=sleep(sec);
-  if(sec==0) {
-    printf("[pid=%d] Fin du processus\n",pid );
-    return(EXIT_SUCCESS);
-  }
-  else {
-    printf("[pid=%d] Interrompu alors qu'il restait %d secondes\n",pid,sec);
-    return(EXIT_FAILURE);
-  }
-}
diff --git a/_static/src/C/S3-src/initvar.c b/_static/src/C/S3-src/initvar.c
deleted file mode 100644
index 80d027c38be42f74e0b004414524dfb60afe2af5..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/initvar.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/**************************************
- * initvar.c
- *
- * Programme d'exemple sur l'initialisation
- * des variables
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-#define ARRAY_SIZE 1000
-
-// initialise un tableau local
-void init(void) {
-  long a[ARRAY_SIZE];
-  for(int i=0;i<ARRAY_SIZE;i++) {
-    a[i]=i;
-  }
-}
-
-// retourne la somme des éléments
-// d'un tableau local
-long read(void) {
-  long b[ARRAY_SIZE];
-  long sum=0;
-  for(int i=0;i<ARRAY_SIZE;i++) {
-    sum+=b[i];
-  }
-  return sum;
-}
-
-
-///BBB
-int main(int argc, char *argv[]) {
-  unsigned int n=5;
-
-  if(argc==2) {
-    n=atoi(argv[1]);
-  }
-
-  ///CCC
-  printf("Résultat de read() avant init(): %ld\n",read());
-  init();
-  printf("Résultat de read() après init() : %ld\n",read());
-  ///DDD
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/initvar.out b/_static/src/C/S3-src/initvar.out
deleted file mode 100644
index c54a887c8ffc40c19e46a3545f4f8dbea7461dd3..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/initvar.out
+++ /dev/null
@@ -1,2 +0,0 @@
-Résultat de read() avant init(): 7392321044987950589
-Résultat de read() après init() : 499500
diff --git a/_static/src/C/S3-src/malloc.c b/_static/src/C/S3-src/malloc.c
deleted file mode 100644
index 3474c744e2f24fa3c9c20641a48dcb1d8360125c..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/malloc.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/**************************************
- * malloc.c
- *
- * Programme illustrant malloc
- *
- **************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-
-typedef struct fraction {
-  int num;
-  int den;
-} Fraction;
-
-void error(char *msg) {
-  fprintf(stderr,"Erreur :%s\n",msg);
-  exit(EXIT_FAILURE);
-}
-
-int main(int argc, char *argv[]) {
-  int size=1;
-  if(argc==2)
-    size=atoi(argv[1]);
-
-  char * string;
-  printf("Valeur du pointeur string avant malloc : %p\n",string);
-  string=(char *) malloc((size+1)*sizeof(char));
-  if(string==NULL)
-    error("malloc(string)");
-
-  printf("Valeur du pointeur string après malloc : %p\n",string);
-  int *vector;
-  vector=(int *)malloc(size*sizeof(int));
-  if(vector==NULL)
-    error("malloc(vector)");
-
-  Fraction * fract_vect;
-  fract_vect=(Fraction *) malloc(size*sizeof(Fraction));
-  if(fract_vect==NULL)
-    error("malloc(fract_vect)");
-
-  free(string);
-  printf("Valeur du pointeur string après free   : %p\n",string);
-  string=NULL;
-  free(vector);
-  vector=NULL;
-  free(fract_vect);
-  fract_vect=NULL;
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S3-src/malloc.out b/_static/src/C/S3-src/malloc.out
deleted file mode 100644
index 44c87d400d19e800815c1417e2ad5f8afbbc403a..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/malloc.out
+++ /dev/null
@@ -1,3 +0,0 @@
-Valeur du pointeur string avant malloc : 0x7fff5fbfe1d8
-Valeur du pointeur string après malloc : 0x100100080
-Valeur du pointeur string après free   : 0x100100080
diff --git a/_static/src/C/S3-src/mallocinit.c b/_static/src/C/S3-src/mallocinit.c
deleted file mode 100644
index 645ac40c80d69e26f5942c925473770b2fa402cf..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/mallocinit.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/**************************************
- * mallocinit.c
- *
- * Malloc et les données non-initialisées
- *
- **************************************/
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-#define LEN 1024
-
-int main(int argc, char *argv[]) {
-
-  int *v1;
-  int *v2;
-  int sum=0;
-  v1=(int *)malloc(sizeof(int)*LEN);
-  for(int i=0;i<LEN;i++) {
-    sum+=*(v1+i);
-    *(v1+i)=1252;
-  }
-  printf("Somme des éléments de v1 : %d\n", sum);
-  sum=0;
-  free(v1);
-  v2=(int *)malloc(sizeof(int)*LEN);
-  for(int i=0;i<LEN;i++) {
-    sum+=*(v2+i);
-  }
-
-  printf("Somme des éléments de v2 : %d\n", sum);
-  free(v2);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/mallocinit.out b/_static/src/C/S3-src/mallocinit.out
deleted file mode 100644
index 14d3a6866425c4b8c15441d8a9126042e94fbf6b..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/mallocinit.out
+++ /dev/null
@@ -1,2 +0,0 @@
-Somme des éléments de v1 : 0
-Somme des éléments de v2 : 1282048
diff --git a/_static/src/C/S3-src/mallocperf.c b/_static/src/C/S3-src/mallocperf.c
deleted file mode 100644
index 291a614ef74b22ed36ac4ce39e4e2165f3c58f13..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/mallocperf.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/**************************************
- * mallocperf.c
- *
- * Programme mesurant les performances
- * de malloc
- *
- **************************************/
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-
-#define LOOP 10
-#define SIZE 1000000000
-
-void error(char *msg) {
-  fprintf(stderr,"Erreur :%s\n",msg);
-  exit(EXIT_FAILURE);
-}
-
-/* Return t2-t1 in microseconds */
-long timeval_diff(struct timeval *t2, struct timeval *t1)
-{
-  long diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
-  return (diff);
-}
-
-int main(int argc, char *argv[]) {
-
-  int *vector;
-  long mesures[LOOP], sum;
-
-  struct timeval tvStart, tvEnd;
-  int err;
-
-  vector=(int *)malloc(SIZE*sizeof(int));
-  free(vector);
-
-  for(int i=0;i<LOOP+1;i++) {
-    err=gettimeofday(&tvStart, NULL);
-    if(err!=0)
-      exit(EXIT_FAILURE);
-
-     vector=(int *)calloc(SIZE,sizeof(int));
-     //vector=(int *)malloc(SIZE*sizeof(int));
-    err=gettimeofday(&tvEnd, NULL);
-    if(err!=0)
-      exit(EXIT_FAILURE);
-
-    mesures[i]=timeval_diff(&tvEnd, &tvStart);
-    sum+=mesures[i];
-    free(vector);
-  }
-  printf("Durée moyenne : %ld\n",sum/LOOP);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/nofree.c b/_static/src/C/S3-src/nofree.c
deleted file mode 100644
index 2308e6dd424ae16df84572eca4b4d8a880881c81..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/nofree.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * nofree.c
- *
- * malloc sans free
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-#define LEN 1024
-int main(int argc, char *argv[]) {
-
-  char *str=(char *) malloc(sizeof(char)*LEN);
-  for(int i=0;i<LEN-1;i++) {
-    *(str+i)='A';
-  }
-  *(str+LEN)='\0';  // fin de chaîne
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S3-src/portee.c b/_static/src/C/S3-src/portee.c
deleted file mode 100644
index 12ed7d94290b12b052c4e85cb7aa191cce5f3bbd..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/portee.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/**************************************
- * portee.c
- *
- * Programme d'exemple pour la portée de
- * variables
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-int g1;
-int g2=1;
-
-void f(int i) {
-  int loc;    //def1a
-  int loc2=2; //def2a
-  int g2=-i*i;
-  g1++;
-
-  printf("[f-%da] \t\t %d \t %d \t %d \t %d\n",i,g1,g2,loc,loc2);
-  loc=i*i;
-  g1++;
-  g2++;
-  printf("[f-%db] \t\t %d \t %d \t %d \t %d\n",i,g1,g2,loc,loc2);
-
-}
-
-
-int main(int argc, char *argv[]) {
-  int loc; //def1b
-  int loc2=1; //def2b
-
-  printf("Valeurs de : \t g1 \t g2\t loc\t loc2\n");
-  printf("===================================================\n");
-
-  printf("[main1] \t %d \t %d \t %d \t %d\n",g1,g2,loc,loc2);
-
-  loc=1252;
-  loc2=1234;
-  g1=g1+1;
-  g1=g1+2;
-
-  printf("[main2] \t %d \t %d \t %d \t %d\n",g1,g2,loc,loc2);
-
-  for(int i=1;i<3;i++) {
-    int loc=i; //def1c
-    int g2=-i;
-    loc++;
-    g1=g1*2;
-    f(i);
-    printf("[main-for-%d] \t %d \t %d \t %d \t %d\n",i,g1,g2,loc,loc2);
-  }
-  f(7);
-  g1=g1*3;
-  g2=g2+2;
-  printf("[main3] \t %d \t %d \t %d \t %d\n",g1,g2,loc,loc2);
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S3-src/portee.out b/_static/src/C/S3-src/portee.out
deleted file mode 100644
index c2034d21514472921f1e95e0288e6fdf51c620f2..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/portee.out
+++ /dev/null
@@ -1,13 +0,0 @@
-Valeurs de : 	 g1 	 g2	 loc	 loc2
-===================================================
-[main1] 	 0 	 1 	 0 	 1
-[main2] 	 3 	 1 	 1252 	 1234
-[f-1a] 		 7 	 -1 	 0 	 2
-[f-1b] 		 8 	 0 	 1 	 2
-[main-for-1] 	 8 	 -1 	 2 	 1234
-[f-2a] 		 17 	 -4 	 0 	 2
-[f-2b] 		 18 	 -3 	 4 	 2
-[main-for-2] 	 18 	 -2 	 3 	 1234
-[f-7a] 		 19 	 -49 	 0 	 2
-[f-7b] 		 20 	 -48 	 49 	 2
-[main3] 	 60 	 3 	 1252 	 1234
diff --git a/_static/src/C/S3-src/stack.c b/_static/src/C/S3-src/stack.c
deleted file mode 100644
index db62dc7800b84962af464eca7bd6d491785f0bfb..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/stack.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/**************************************
- * stack.c
- *
- * Programme d'exemple implémentant un stack comme structure
- * chaînée
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-typedef struct fraction_t {
-  int num;
-  int den;
-} fraction;
-
-///AAA
-typedef struct node_t
-{
-  struct fraction_t *data;
-  struct node_t *next;
-} node;
-
-struct node_t *stack; // sommet de la pile
-
-// ajoute un élément au sommet de la pile
-void push(struct fraction_t *f)
-{
-  struct node_t *n;
-  n=(struct node_t *)malloc(sizeof(struct node_t));
-  if(n==NULL)
-    exit(EXIT_FAILURE);
-  n->data = f;
-  n->next = stack;
-  stack = n;
-}
-// retire l'élément au sommet de la pile
-struct fraction_t * pop()
-{
-  if(stack==NULL)
-    return NULL;
-  // else
-  struct fraction_t *r;
-  struct node_t *removed=stack;
-  r=stack->data;
-  stack=stack->next;
-  free(removed);
-  return (r);
-}
-
-///BBB
-
-// affiche le contenu de la pile
-void display()
-{
-  struct node_t *t;
-  t = stack;
-  while(t!=NULL) {
-    if(t->data!=NULL) {
-      printf("Item at addr %p  :  Fraction %d/%d   Next %p\n",t,t->data->num,t->data->den,t->next);
-    }
-    else {
-      printf("Bas du stack %p\n",t);
-    }
-    t=t->next;
-  }
-}
-
-// exemple
-int main(int argc, char *argv[]) {
-
-  struct fraction_t demi={1,2};
-  struct fraction_t tiers={1,3};
-  struct fraction_t quart={1,4};
-  struct fraction_t zero={0,1};
-
-  // initialisation
-  stack = (struct node_t *)malloc(sizeof(struct node_t));
-  stack->next=NULL;
-  stack->data=NULL;
-
-  display();
-  push(&zero);
-  display();
-  push(&demi);
-  push(&tiers);
-  push(&quart);
-  display();
-
-  struct fraction_t *f=pop();
-  if(f!=NULL)
-    printf("Popped : %d/%d\n",f->num,f->den);
-
-  return(EXIT_SUCCESS);
-}
-///CCC
diff --git a/_static/src/C/S3-src/stack.out b/_static/src/C/S3-src/stack.out
deleted file mode 100644
index a3b08610b0c5642b458c409301b0bf3012021999..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/stack.out
+++ /dev/null
@@ -1,9 +0,0 @@
-Bas du stack 0x100100080
-Item at addr 0x100100090  :  Fraction 0/1   Next 0x100100080
-Bas du stack 0x100100080
-Item at addr 0x1001000c0  :  Fraction 1/4   Next 0x1001000b0
-Item at addr 0x1001000b0  :  Fraction 1/3   Next 0x1001000a0
-Item at addr 0x1001000a0  :  Fraction 1/2   Next 0x100100090
-Item at addr 0x100100090  :  Fraction 0/1   Next 0x100100080
-Bas du stack 0x100100080
-Popped : 1/4
diff --git a/_static/src/C/S3-src/static.c b/_static/src/C/S3-src/static.c
deleted file mode 100644
index 5d369ef57c81805549e8d8c6d4ebcaf08d5ba7a0..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/static.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * static.c
- *
- * Programme d'exemple d'utilisation de static
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-void f(int i) {
-  static int sum;
-
-}
-
-int main(int argc, char *argv[]) {
-
-  f(1);
-
-  f(2);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/strcat.c b/_static/src/C/S3-src/strcat.c
deleted file mode 100644
index f1a785048b18706b070b983c04ccb3be8fcafd69..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/strcat.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/**************************************
- * concat.c
- *
- * Programme d'exemple pour concaténer
- * deux chaînes de caractères
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#define SIZE 4
-
-int * init_vector(int length, int val) {
-  int *ret=malloc(length*sizeof(int));
-  for(int i=0;i<length;i++) {
-    *(ret+i)=val;
-  }
-  return(ret);
-}
-
-int *unit_matrix(int length) {
-  int *r=malloc(length*length*sizeof(int));
-  for(int i=0;i<length;i++) {
-    for(int j=0;j<length;j++) {
-      if(i==j) {
-	*(r+(i*length)+j)=1;
-      }
-      else {
-	*(r+(i*length)+j)=0;
-      }
-    }
-  }
-  return (r);
-}
-
-int main(int argc, char *argv[]) {
-  int *v;
-  int *m;
-  v=init_vector(SIZE,1252);
-  m=unit_matrix(SIZE);
-  for(int i=0;i<SIZE;i++) {
-    printf(" v[%d]=%d",i,*(v+i));
-  }
-  printf("\n");
-  for(int i=0;i<SIZE;i++) {
-    for(int j=0;j<SIZE;j++) {
-      printf(" m[%d,%d]=%d",i,j,*(m+(i*SIZE)+j));
-    }
-    printf("\n");
-  }
-  printf("\n");
-  free(v);
-  free(m);
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/strcpy.c b/_static/src/C/S3-src/strcpy.c
deleted file mode 100644
index c24c942b69aa6eb22145f49239beb62b5ce87d09..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/strcpy.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/**************************************
- * strcpy.c
- *
- * Programme d'exemple pour strcpy
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-#include <string.h>
-
-char *duplicate(char * str) {
-  int i;
-  size_t len=strlen(str);
-  char *ptr=(char *)malloc(sizeof(char)*(len+1));
-  if(ptr!=NULL) {
-    for(i=0;i<len+1;i++) {
-	*(ptr+i)=*(str+i);
-      }
-  }
-  return ptr;
-}
-///BBB
-char *duplicate2(char * str) {
-  int i;
-  size_t len=strlen(str);
-  char str2[len+1];
-  for(i=0;i<len+1;i++) {
-    str2[i]=*(str+i);
-  }
-  return str2;
-}
-///CCC
-
-int main(int argc, char *argv[]) {
-
-  char str[]="Hello, world";
-  char *str2=duplicate(str);
-  char *str3=duplicate2(str);
-  printf("str:  %s\n",str);
-  printf("str2: %s\n",str2);
-  printf("str3: %s\n",str3);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/structargs.c b/_static/src/C/S3-src/structargs.c
deleted file mode 100644
index a8fc564afa05822c54ecdd3bd835a82989078485..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/structargs.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/**************************************
- * structargs.c
- *
- * exemple de structures comme arguments
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-
-/* Return t2-t1 in microseconds */
-long timeval_diff(struct timeval *t2, struct timeval *t1)
-{
-  long diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
-  return (diff);
-}
-
-///AAA
-
-#define MILLION 1000000
-
-struct large_t {
-  int i;
-  char str[MILLION];
-};
-
-int sum(struct large_t s1, struct large_t s2) {
-  return (s1.i+s2.i);
-}
-
-int sumptr(struct large_t *s1, struct large_t *s2) {
-  return (s1->i+s2->i);
-}
-
-int main(int argc, char *argv[]) {
-  struct timeval tvStart, tvEnd;
-  int err;
-  int n;
-  struct large_t one={1,"one"};
-  struct large_t two={1,"two"};
-
-  n=sum(one,two);
-  n=sumptr(&one,&two);
-
-///BBB
-
-  err=gettimeofday(&tvStart, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-
-  err=sum(one,two);
-
-  err=gettimeofday(&tvEnd, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-  printf("Durée de sum : %ld microsecondes\n",timeval_diff(&tvEnd, &tvStart));
-
-  err=gettimeofday(&tvStart, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-
-  err=sumptr(&one,&two);
-
-  err=gettimeofday(&tvEnd, NULL);
-  if(err!=0)
-    exit(EXIT_FAILURE);
-
-  printf("Durée de sumptr : %ld microsecondes\n",timeval_diff(&tvEnd, &tvStart));
-}
-
diff --git a/_static/src/C/S3-src/typecast.c b/_static/src/C/S3-src/typecast.c
deleted file mode 100644
index 5093e47386b25e7db546629d16b9c259fb8df5bb..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/typecast.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/**************************************
- * typecast.c
- *
- * Programme d'exemple de conversion entre
- * types de données
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-  ///AAA
-  int i=1;
-  float f=1e20;
-  double d=1e100;
-
-  printf("i [int]: %d, [float]:%f, [double]:%f\n",i,(float)i,(double)i);
-  printf("f [int]: %d, [float]:%f, [double]:%f\n",(int)f,f,(double)f);
-  printf("d [int]: %d, [float]:%f, [double]:%f\n",(int)d,(float)d,d);
-  printf("sizeof -> int:%d float:%d double:%d\n",(int)sizeof(int), (int)sizeof(float), (int)sizeof(double));
-
-  ///BBB
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/union.c b/_static/src/C/S3-src/union.c
deleted file mode 100644
index 9951e915f6ebacea9cfa148363eaf283030175d5..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/union.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/**************************************
- * union.c
- *
- * Programme d'exemple de union
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-///AAA
-
-struct s_t {
-  int i;
-  char c;
-} s;
-
-union u_t {
-  int i;
-  char c;
-} u;
-
-///BBB
-
-typedef enum { INTEGER, CHAR } Type;
-
-typedef struct
-{
-  Type type;
-  union {
-  int i;
-  char c;
-  } x;
-} Value;
-
-
-///XXX
-
-int main(int argc, char *argv[]) {
-  ///CCC
-  // initialisation
-  s.i=1252;
-  s.c='A';
-  u.i=1252;
-  // u contient un int
-  u.c='Z';
-  // u contient maintenant un char (et u.i est perdu)
-  ///DDD
-  printf("sizeof(s_t) : %ld\n",sizeof(s));
-  printf("sizeof(u_t) : %ld\n",sizeof(u));
-  ///EEE
-  u.i=1252;
-  printf("char : %c\n", u.c);
-
-  ///FFF
-Value v;
-v.type=INTEGER;
-v.x.i=1252;
-///GGG
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/var.c b/_static/src/C/S3-src/var.c
deleted file mode 100644
index 4ce1462aa121293a39baf57f087a6dca78b42b75..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/var.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**************************************
- * var.c
- *
- * Programme d'exemple pour localiser
- * les variables en mémoire
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-   // affiche sur la sortie standard
-   printf("Hello, world!\n");
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S3-src/vector.c b/_static/src/C/S3-src/vector.c
deleted file mode 100644
index d41579c3e55a0bac3702941e812cefdedb5039e6..0000000000000000000000000000000000000000
--- a/_static/src/C/S3-src/vector.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/**************************************
- * vector.c
- *
- * Programme de manipulation de vecteurs
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-struct vector_t {
-  int size;
-  float *v;
-};
-// initialise le vecteur à la valeur du réel
-struct vector_t * init(int, float) ;
-// récupère le nième élément
-float get(struct vector_t *, int) ;
-// fixe la valeur du nième élément
-void set(struct vector_t *, int , float);
-// supprime un vecteur
-void destroy(struct vector_t *);
-
-///BBB
-struct vector_t * init(int size, float val)
-{
-  struct vector_t *v=(struct vector_t *)malloc(sizeof(struct vector_t));
-  v->v=(float *)malloc(size*sizeof(float));
-  v->size=size;
-  for(int i=0;i<size;i++) {
-    *(v->v+i)=val;
-  }
-  return v;
-}
-
-float get(struct vector_t *v, int i) {
-  return *(v->v+i);
-}
-
-void set(struct vector_t *v, int i, float val) {
-  if(i<v->size)
-    *(v->v+i)=val;
-}
-
-void destroy(struct vector_t *v) {
-  free(v->v);
-  free(v);
-}
-
-int main(int argc, char *argv[]) {
-
-  struct vector_t *v1=init(10,2.0);
-  printf("v1[%d]=%f\n",3,get(v1,3));
-  set(v1,3,17.0);
-  printf("v1[%d]=%f\n",3,get(v1,3));
-  destroy(v1);
-
-   return(EXIT_SUCCESS);
-}
diff --git a/_static/src/C/S5-src/Makefile2 b/_static/src/C/S5-src/Makefile2
deleted file mode 100644
index 9f43fcadd9455f1b955e8f59c63e7fa3d8ce9244..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/Makefile2
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Makefile for source code
-#
-# Builds all .c files, assuming they are all independant and runs them
-# to collect the output on stdout
-#
-# Automatically builds some of the examples to be included in the text
-#
-
-###AAA
-
-myprog: main.o min.o
-	gcc -std=c99 -o myprog main.o min.o
-
-main.o: main.c min.h
-	gcc -std=c99 -c main.c
-
-min.o: min.c min.h
-	gcc -std=c99 -c min.c
-
-###BBB
diff --git a/_static/src/C/S5-src/errno.c b/_static/src/C/S5-src/errno.c
deleted file mode 100644
index 4c0a4ec790bb622f03dfdb9a0714063f065c1950..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/errno.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * errno.c
- *
- * Programme d'exemple pour errno
- *
- **************************************/
-///AAA
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[]) {
-
-  if(setenv(NULL,NULL,1)!=0) {
-    fprintf(stderr,"Erreur : errno=%d %s\n",errno,strerror(errno));
-  }
-  if(setenv("PATH=","/usr/bin",1)!=0) {
-    fprintf(stderr,"Erreur : errno=%d %s\n",errno,strerror(errno));
-   }
-
-
-}
-
diff --git a/_static/src/C/S5-src/fctptr.c b/_static/src/C/S5-src/fctptr.c
deleted file mode 100644
index c9b68d53b0d4231dd3e6f9348b13263c5ed3c031..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/fctptr.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/**************************************
- * fctptr.c
- *
- * Programme d'exemple pour les pointeurs
- * vers des fonctions
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-int g=1;
-int debug_level;
-
-void empty (char *str) {
-  return;
-}
-
-void oneline(char *str) {
-  fprintf(stderr,"debug: %s\n",str);
-}
-
-void detailed(char *str) {
-  fprintf(stderr, "debug: %s\n",str);
-  fprintf(stderr,"g=%d\n",g);
-}
-
-void (* debug_print[])(char *) = { empty,
-				   oneline,
-				   detailed };
-
-int main(int argc, char *argv[]) {
-
-  if(argc!=2)
-    return(EXIT_FAILURE);
-
-  debug_level=atoi(argv[1]);
-  if((debug_level<0) || (debug_level>2) )
-    return(EXIT_FAILURE);
-  printf("fct debug_print : %p\n",debug_print[debug_level]);
-  (debug_print[debug_level])("Hello");
-
-   return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S5-src/main.c b/_static/src/C/S5-src/main.c
deleted file mode 100644
index 01130f8a563511b4851a98873a0e95f937025024..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/main.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/**************************************
- * main.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include "min.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-  float f1=3.45;
-  float f2=-4.12;
-  printf("Minimum(%f,%f)=%f\n",f1,f2,min(f1,f2));
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/C/S5-src/min.c b/_static/src/C/S5-src/min.c
deleted file mode 100644
index 1a0c53f81b43a18e0c0be95f386570b256c0cfef..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/min.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**************************************
- * min.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include "min.h"
-
-float min(float a, float b) {
-  if(a<b)
-    return a;
-  else
-    return b;
-}
-
-
diff --git a/_static/src/C/S5-src/min.h b/_static/src/C/S5-src/min.h
deleted file mode 100644
index 7812a4fe350d83e1b36316adc991c0355efe4f25..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/min.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/**************************************
- * min.h
- *
- **************************************/
-
-#ifndef _MIN_H_
-#define _MIN_H_
-
-float min(float, float);
-
-#endif /* _MIN_H */
-
-
diff --git a/_static/src/C/S5-src/module.c b/_static/src/C/S5-src/module.c
deleted file mode 100644
index a8f6204ae63f555734b0d31f3fd6285b5915bad7..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/module.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/**************************************
- * module.c
- *
- **************************************/
-
-#include "module.h"
-
-static float min(float, float);
-
-int num1=0;  // accessible hors de module.c
-extern int num2; // définie dans un autre module
-static int num3=1252; // accessible uniquement dans ce module
-
-float vmin(int n, float *ptr) {
-  float *p=ptr;
-  float m=*ptr;
-  for(int i=1;i<n;i++) {
-    m=min(m,*p);
-    p++;
-  }
-  return m;
-}
-
-static float min(float a, float b) {
-  if(a<b)
-    return a;
-  else
-    return b;
-}
-
-
diff --git a/_static/src/C/S5-src/module.h b/_static/src/C/S5-src/module.h
deleted file mode 100644
index cbfdb4ccc758a6b2c35d734c86f61ec7ba6cb261..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/module.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/**************************************
- * module.h
- *
- **************************************/
-#ifndef _MODULE_H_
-#define _MODULE_H_
-
-float vmin(int, float *);
-
-#endif /* _MODULE_H */
-
-
diff --git a/_static/src/C/S5-src/mystrtol.c b/_static/src/C/S5-src/mystrtol.c
deleted file mode 100644
index 3cfbfdc267ac23810a787a128d3110798f254138..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/mystrtol.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/**************************************
- * stresep.c
- *
- * Implementation partielle de strtol
- *
- **************************************/
-///AAA
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdbool.h>
-
-int mystrtol(const char *restrict str,
-	     char **restrict endptr,
-	     int base) {
-
-  int val;
-  int i=0;
-  int err=false;
-  while(!err && *(str+i)!='\0')
-    {
-      if(!isdigit(*(str+i))) {
-	err=true;
-	*endptr=(char *)(str+i);
-      }
-      i++;
-    }
-  // ...
-  return val;
-}
-///BBB
-
-int main(int argc, char *argv[])
-{
-  char *p, *s;
-  long li;
-  s = "1252m";
-  li = mystrtol(s,&p,10);
-  if(p!=NULL) {
-    printf("Caractère erronné : %c\n",*p);
-      // p pointe vers le caractère en erreur
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-  return(EXIT_SUCCESS);
-
-}
diff --git a/_static/src/C/S5-src/prog.c b/_static/src/C/S5-src/prog.c
deleted file mode 100644
index 538d4f8a4b0aa521664f00e9169d11dd8fa3556d..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/prog.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/**************************************
- * prog
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-///AAA
-#include "min.h"
-#include "module.h"
-
-#define SIZE 4
-
-extern int num1; // définie dans un autre module
-int num2=1252;   // accessible depuis un autre module
-static int num3=-1; // accessible uniquement dans ce module
-
-void f() {
-  static int n=0;
-  int loc=2;
-  if(n==0)
-    printf("n est à  l'adresse %p et loc à l'adresse %p\n",&n,&loc);
-  printf("f, n=%d\n",n);
-  n++;
-}
-
-int main(int argc, char* argv[]) {
-
-  float v[SIZE]={1.0, 3.4, -2.4, 9.9};
-  printf("Minimum: %f\n",vmin(SIZE,v));
-  f();
-  f();
-  printf("Minimum(0.0,1.1)=%f\n",min(0.0,1.1));
-  return(EXIT_SUCCESS);
-}
-
-
diff --git a/_static/src/C/S5-src/prog.out b/_static/src/C/S5-src/prog.out
deleted file mode 100644
index 95f658621a9fdc78dda8a325d1a33dace5f76d29..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/prog.out
+++ /dev/null
@@ -1,5 +0,0 @@
-Minimum: -2.400000
-n est à  l'adresse 0x100001078 et loc à l'adresse 0x7fff5fbfe1cc
-f, n=0
-f, n=1
-Minimum(0.0,1.1)=0.000000
diff --git a/_static/src/C/S5-src/ptrptr.c b/_static/src/C/S5-src/ptrptr.c
deleted file mode 100644
index 1044c2a914f7f8902b5257fd951ec34e529fbdd3..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/ptrptr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * ptrptr.c
- *
- * Programme d'exemple pour les pointeurs
- * vers des pointeurs
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-int main(int argc, char **argv) {
-
-  char **p;
-  p=argv;
-  printf("Arguments :");
-  while(*p!=NULL) {
-    printf(" %s",*p);
-    p++;
-  }
-  printf("\n");
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S5-src/qsort.c b/_static/src/C/S5-src/qsort.c
deleted file mode 100644
index 3e834bba35d90ebcebafc19a92e954a0e72d5723..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/qsort.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * qosrt.c
- *
- * Programme d'exemple d'utilisation de qsort
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-#define SIZE 5
-double array[SIZE]= { 1.0, 7.32, -3.43, 8.7, 9.99 };
-
-void print_array() {
-  for(int i=0;i<SIZE;i++)
-    printf("array[i]:%f\n",array[i]);
-}
-
-int cmp(const void *ptr1, const void *ptr2) {
-  const double *a=ptr1;
-  const double *b=ptr2;
-  if(*a==*b)
-    return 0;
-  else
-    if(*a<*b)
-      return -1;
-    else
-      return +1;
-}
-
-int main(int argc, char *argv[]) {
-
-  printf("Avant qsort\n\n");
-  print_array();
-  qsort(array,SIZE,sizeof(double),cmp);
-  printf("Après qsort\n\n");
-  print_array();
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/C/S5-src/strtol.c b/_static/src/C/S5-src/strtol.c
deleted file mode 100644
index b1755d6fa8bdd9d8dea44720458583bbe5539441..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/strtol.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/**************************************
- * strtol.c
- *
- * Programme d'exemple d'utilisation de strtol
- *
- **************************************/
-///AAA
-#include <stdlib.h>
-#include <stdio.h>
-
-int main(int argc, char *argv[]) {
-
-  char *p, *s;
-  long li;
-  s = "1252";
-  li = strtol(s,&p,10);
-  if(*p != '\0') {
-    printf("Caractère erronné : %c\n",*p);
-      // p pointe vers le caractère en erreur
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-
-  s = "12m52";
-  li = strtol(s,&p,10);
-  if(*p != '\0') {
-    printf("Caractère erronné : %c\n",*p);
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-
-  return(EXIT_SUCCESS);
-}
-
-
-
diff --git a/_static/src/C/S5-src/strtol.out b/_static/src/C/S5-src/strtol.out
deleted file mode 100644
index 58f9b96802b3183d71b2b2296f9a86d2e9eb9026..0000000000000000000000000000000000000000
--- a/_static/src/C/S5-src/strtol.out
+++ /dev/null
@@ -1,3 +0,0 @@
-Valeur convertie : 1252 -> 1252
-Caractère erronné : m
-Valeur convertie : 12m52 -> 12
diff --git a/_static/src/C/src/cmdline.c b/_static/src/C/src/cmdline.c
deleted file mode 100644
index 9d9ec77ec8633c2c38cad7829629ae8fdcb674c5..0000000000000000000000000000000000000000
--- a/_static/src/C/src/cmdline.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/**************************************
- * cmdline.c
- *
- * Programme affichant ses arguments
- * sur la sortie standard
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-  int i;
-  printf("Ce programme a %d argument(s)\n", argc);
-  for (i = 0; i < argc; i++)
-    printf("argument[%d] : %s\n", i, argv[i]);
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/src/cmdline.out b/_static/src/C/src/cmdline.out
deleted file mode 100644
index a730fe9056a2951317464e3ea6da879f5cb1ee94..0000000000000000000000000000000000000000
--- a/_static/src/C/src/cmdline.out
+++ /dev/null
@@ -1,6 +0,0 @@
-Ce programme a 5 argument(s)
-argument[0] : ./cmdline
-argument[1] : 1
-argument[2] : -list
-argument[3] : abcdef
-argument[4] : lepl1503
diff --git a/_static/src/C/src/failure.c b/_static/src/C/src/failure.c
deleted file mode 100644
index 321885bf51dee70fcb61f2959e7145ea0da70476..0000000000000000000000000000000000000000
--- a/_static/src/C/src/failure.c
+++ /dev/null
@@ -1,13 +0,0 @@
-/**************************************
- * failure.c
- *
- * Programme minimal qui échoue toujours
- *
- **************************************/
-
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-  return EXIT_FAILURE;
-}
diff --git a/_static/src/C/src/filterdigit.c b/_static/src/C/src/filterdigit.c
deleted file mode 100644
index f242bef2aacceec6c8fb990f213498cc434af4e3..0000000000000000000000000000000000000000
--- a/_static/src/C/src/filterdigit.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * filterdigit.c
- *
- * Programme qui extrait de l'entrée
- * standard les caractères représentant
- * des chiffres
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-// retourne vrai si c est un chiffre, faux sinon
-// exemple simplifié, voir isdigit dans la librarire standard
-// pour une solution complète 
-int digit(char c)
-{
-  return ((c >= '0') && (c <= '9'));
-}
-
-// affiche un message d'erreur
-void usage()
-{
-  fprintf(stderr, "Ce programme ne prend pas d'argument\n");
-  exit(EXIT_FAILURE);
-}
-
-int main(int argc, char *argv[])
-{
-  char c;
-
-  if (argc > 1)
-    usage();
-
-  while ((c = getchar()) != EOF) {
-    if (digit(c))
-	    putchar(c);
-  }
-  
-  return EXIT_SUCCESS;
-}
-
diff --git a/_static/src/C/src/hello.c b/_static/src/C/src/hello.c
deleted file mode 100644
index a616435889fe024f86372035270f10f245e443ef..0000000000000000000000000000000000000000
--- a/_static/src/C/src/hello.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/**************************************
- * Hello.c
- *
- * Programme affichant sur la sortie
- * standard le message "Hello, world!"
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-   // affiche sur la sortie standard
-   printf("Hello, world!\n");
-
-   return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/src/printf.c b/_static/src/C/src/printf.c
deleted file mode 100644
index a10b63583210a468cb32cadf440af5192ef3eb1f..0000000000000000000000000000000000000000
--- a/_static/src/C/src/printf.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/**************************************
- * printf.c
- *
- * Exemples d'utilisation de printfProgramme qui a réussi
- *
- **************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-
-int main(int argc, char *argv[])
-{
-  ///AAA
-  
-  char weekday[] = "Monday";
-  char month[] = "April";
-  int day = 1;
-  int hour = 12;
-  int min = 42;
-  char str[] = "SINF1252";
-  int i;
-  
-  // affichage de la date et l'heure
-  printf("%s, %s %d, %d:%d\n", weekday, month, day, hour, min);
-  
-  // affichage de la valeur de PI
-  printf("PI = %f\n", 4 * atan(1.0));
-  
-  // affichage d'un caractère par ligne
-  for(i = 0; str[i] != '\0'; i++)
-    printf("%c\n", str[i]);
-    
-  ///BBB
-  
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/C/src/printf.out b/_static/src/C/src/printf.out
deleted file mode 100644
index 437d3ce012156d21e130bce20f133026c7d0a59f..0000000000000000000000000000000000000000
--- a/_static/src/C/src/printf.out
+++ /dev/null
@@ -1,10 +0,0 @@
-Monday, April 1, 12:42
-PI = 3.141593
-L
-E
-P
-L
-1
-5
-0
-3
diff --git a/_static/src/C/src/ptr_arith.c b/_static/src/C/src/ptr_arith.c
deleted file mode 100644
index a4fe502d3f8e3240fbda0ae56bc75c33d923fa66..0000000000000000000000000000000000000000
--- a/_static/src/C/src/ptr_arith.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// arithmétique des pointeurs
-
-#include <stdio.h>
-
-int main(int argc, char *argv[])
-{
-///AAA
-  
-#define SIZE 3
-unsigned int tab[3];
-tab[0] = 0x01020304;
-tab[1] = 0x05060708;
-tab[2] = 0x090A0B0C;
-
-///BBB
-
-///CCC
-  
-int i;
-for (i = 0; i < SIZE; i++) {
-  printf("%X est à l'adresse %p\n", tab[i], &(tab[i]));
-}
-
-///DDD
-
-///EEE
-  
-unsigned int* ptr = tab;
-for (i = 0; i < SIZE; i++) {
-  printf("%X est à l'adresse %p\n", *ptr, ptr);
-  ptr++;
-}
-
-///FFF
-
-///GGG
-  
-unsigned char* ptr_char = (unsigned char *) tab;
-printf("ptr_char contient %p\n", ptr_char);
-for (i = 0; i < SIZE + 1; i++) {
-  printf("%X est à l'adresse %p\n", *ptr_char, ptr_char);
-  ptr_char++;
-}
-
-///HHH
-}
diff --git a/_static/src/C/src/string.c b/_static/src/C/src/string.c
deleted file mode 100644
index 7970ef7065d43a5a19c23e586b86e79cb248ced2..0000000000000000000000000000000000000000
--- a/_static/src/C/src/string.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/**************************************
- * string.c
- *
- * Programme d'expemple avec les strings
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{
-  ///AAA
-  
-  char string[10];
-  string[0] = 'j';
-  string[1] = 'a';
-  string[2] = 'v';
-  string[3] = 'a';
-  string[4] = '\0';
-  printf("String : %s\n", string);
-  
-  ///BBB
-  
-  return EXIT_SUCCESS;
-}
diff --git a/_static/src/Fichiers/src/a.out b/_static/src/Fichiers/src/a.out
deleted file mode 100755
index ea06754ee6b3584cb6be4787d742ac2308f089cc..0000000000000000000000000000000000000000
Binary files a/_static/src/Fichiers/src/a.out and /dev/null differ
diff --git a/_static/src/Fichiers/src/alarm.c b/_static/src/Fichiers/src/alarm.c
deleted file mode 100644
index 07abd5a1bd1c2d72051687ffb1a13ea702802a07..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/alarm.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/**************************************
- * alarm.c
- *
- * Programme d'exemple d'utilisation des
- * signaux SIGUSR
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <unistd.h>
-#include <stdbool.h>
-
-static void sig_handler(int);
-
-int main (int argc, char *argv[])  {
-  char c;
-  printf("Tapez return en moins de 5 secondes !\n");
-  fflush(stdout);
-  if(signal(SIGALRM,sig_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-  // sigalrm interrompt les appels système
-  if(siginterrupt(SIGALRM,true)<0) {
-    perror("siginterrupt");
-    exit(EXIT_FAILURE);
-  }
-  alarm(5);
-  int r=read(STDIN_FILENO,&c,1);
-  if((r==1)&&(c=='\n')) {
-    alarm(0); // reset timer
-    printf("Gagné\n");
-    exit(EXIT_SUCCESS);
-  }
-  printf("Perdu !\n");
-  exit(EXIT_FAILURE);
-}
-
-static void sig_handler(int signum) {
-  // rien à faire, read sera interrompu
-}
-
-///BBB
diff --git a/_static/src/Fichiers/src/alarm.out b/_static/src/Fichiers/src/alarm.out
deleted file mode 100644
index 33c2eb4e5e6a7ac8e3dfbd7acbd5ee37a08ec5a2..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/alarm.out
+++ /dev/null
@@ -1,2 +0,0 @@
-Tapez return en moins de 5 secondes !
-Perdu !
diff --git a/_static/src/Fichiers/src/alarm2.c b/_static/src/Fichiers/src/alarm2.c
deleted file mode 100644
index 4007cc6006e2eb8c9f5c0de95990cb3f1bef6db3..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/alarm2.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/**************************************
- * alarm.c
- *
- * Programme d'exemple d'utilisation des
- * signaux SIGUSR
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <unistd.h>
-#include <stdbool.h>
-#include <setjmp.h>
-
-sigjmp_buf env;
-
-static void sig_handler(int);
-
-int main (int argc, char *argv[])  {
-  char c;
-  printf("Tapez return en moins de 5 secondes !\n");
-  fflush(stdout);
-  if(signal(SIGALRM,sig_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-  // sigalrm interrompt les appels système
-  if(siginterrupt(SIGALRM,true)<0) {
-    perror("siginterrupt");
-    exit(EXIT_FAILURE);
-  }
-  int r=0;
-  if(sigsetjmp(env,1)==0) {
-    // sig_handler n'a pas encore été appelé
-    alarm(5);
-    r=read(STDIN_FILENO,&c,1);
-  }
-  else {
-    // sig_handler a déjà été exécuté
-    // le délai a déjà expiré, inutile de faire read
-  }
-  alarm(0); // arrêt du timer
-  if((r==1)&&(c=='\n')) {
-    printf("Gagné\n");
-    exit(EXIT_SUCCESS);
-  }
-  else {
-    printf("Perdu !\n");
-    exit(EXIT_FAILURE);
-  }
-}
-
-static void sig_handler(int signum) {
-  siglongjmp(env,1);
-}
-
-///BBB
diff --git a/_static/src/Fichiers/src/fork-pipe.c b/_static/src/Fichiers/src/fork-pipe.c
deleted file mode 100644
index 7048b623e9925ce3da3fac9da29759ad78777d4a..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/fork-pipe.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/**************************************
- * fork-pipe.c
- *
- * Programme d'exemple d'utilisation de
- * pipe en combinaison avec fork
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <stdbool.h>
-
-void exit_on_error(char *s) {
-  perror(s);
-  exit(EXIT_FAILURE);
-}
-
-
-int main (int argc, char *argv[])  {
-  int status;
-  pid_t pid;
-  int fd[2];
-  int err;
-
-  if ( pipe(fd)==-1)
-    exit_on_error("pipe");
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    exit_on_error("fork");
-  }
-  // pas d'erreur
-  if (pid==0) {
-    int count=0;
-    int finished=false;
-    int n;
-    // processus fils, lecture du pipe
-    if(close(fd[1])==-1)
-      exit_on_error("close");
-    while ( !finished) {
-      err=read(fd[0],(void *) &n,sizeof(int));
-      if(err==sizeof(int))
-	// entier reçu
-	count++;
-      else
-	if(err==0)
-	  // fin de fichier
-	  finished=true;
-	else
-	  exit_on_error("read");
-    }
-    if(close(fd[0])==-1)
-      exit_on_error("close");
-    printf("Reçu : %d entiers\n",count);
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    if(close(fd[0])==-1)
-      exit_on_error("close");
-    for(int i=0;i<100000;i++) {
-      if(write(fd[1],(void *) &i,sizeof(int))==-1)
-	exit_on_error("write");
-    }
-    if( close(fd[1])==-1)
-      exit_on_error("close(fd[1])");
-
-    int fils=waitpid(pid,&status,0);
-    if(fils==-1) {
-      exit_on_error("wait");
-    }
-    // fils terminé correctement
-  }
-}
-///BBB
diff --git a/_static/src/Fichiers/src/longjmp.c b/_static/src/Fichiers/src/longjmp.c
deleted file mode 100644
index 87cc0b1c0a8a0577ac5ca3a99d283ec3187fcd9b..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/longjmp.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/**************************************
- * longjmp.c
- *
- * Programme d'exemple de longjmp
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <setjmp.h>
-
-jmp_buf label;
-
-void f() {
-
-  printf("Début fonction f\n");
-  if(setjmp(label)==0) {
-    printf("Exécution normale\n");
-  }
-  else {
-    printf("Exécution après longjmp\n");
-  }
-}
-
-void g() {
-  printf("Début fonction g\n");
-  longjmp(label,1);
-  printf("Ne sera jamais affiché\n");
-}
-
-int main (int argc, char *argv[])  {
-  f();
-  g();
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Fichiers/src/longjmp.out b/_static/src/Fichiers/src/longjmp.out
deleted file mode 100644
index f551980e51fabcd08d9e155c96de7a13d1ba114b..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/longjmp.out
+++ /dev/null
@@ -1,4 +0,0 @@
-Début fonction f
-Exécution normale
-Début fonction g
-Exécution après longjmp
diff --git a/_static/src/Fichiers/src/nkill.sh b/_static/src/Fichiers/src/nkill.sh
deleted file mode 100755
index 2eccd5e9605ff593abefa50f969666497fbf982c..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/nkill.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-if [ $# -ne 2 ]
-then
-    echo "Usage: `basename $0` n pid"
-    exit 1
-fi
-n=$1
-pid=$2
-for (( c=1; c<=$n; c++ ))
-do
-    kill -s SIGUSR1 $pid
-done
diff --git a/_static/src/Fichiers/src/process-sem-after.c b/_static/src/Fichiers/src/process-sem-after.c
deleted file mode 100644
index 06ebd160fba30ad04514b35f928fa1b0386b78ce..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/process-sem-after.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/**************************************
- * process-sem-before.c
- *
- * Programme d'exemple de sémaphores nommés
- * La fonction after ne peut s'exécuter
- * qu'après la fonction before
- **************************************/
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>           /* For O_* constants */
-#include <sys/stat.h>        /* For mode constants */
-#include <sys/types.h>
-#include <unistd.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-
-sem_t *semaphore;
-
-void after() {
-  sem_wait(semaphore);
-  // do something
-  for(int j=0;j<1000000;j++) {
-  }
-  printf("after done, pid=%d\n",(int) getpid());
-}
-
-int main (int argc, char *argv[])  {
-  int err;
-
-  // semaphore a été créé par before
-  semaphore=sem_open("lsinf1252",0);
-  if(semaphore==SEM_FAILED) {
-      error(-1,"sem_open");
-  }
-  after();
-
-  err=sem_close(semaphore);
-  if(err!=0) {
-      error(err,"sem_close");
-  }
-  err=sem_unlink("lsinf1252");
-  if(err!=0) {
-      error(err,"sem_unlink");
-  }
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Fichiers/src/process-sem-before.c b/_static/src/Fichiers/src/process-sem-before.c
deleted file mode 100644
index 1356eb8678aaa5ef6b413163832cd8ba7fa42511..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/process-sem-before.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/**************************************
- * process-sem-before.c
- *
- * Programme d'exemple de sémaphores
- * La fonction after ne peut s'exécuter
- * qu'après la fonction before
- **************************************/
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>           /* For O_* constants */
-#include <sys/stat.h>        /* For mode constants */
-#include <sys/types.h>
-
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-
-sem_t *semaphore;
-
-void before() {
-  // do something
-  for(int j=0;j<1000000;j++) {
-  }
-  printf("before done, pid=%d\n",(int) getpid());
-  sem_post(semaphore);
-}
-
-
-int main (int argc, char *argv[])  {
-
-  int err;
-
-  semaphore=sem_open("lsinf1252",O_CREAT,S_IRUSR | S_IWUSR,0);
-  if(semaphore==SEM_FAILED) {
-    error(-1,"sem_open");
-  }
-  sleep(20);
-  before();
-  err=sem_close(semaphore);
-  if(err!=0) {
-      error(err,"sem_close");
-  }
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Fichiers/src/read.c b/_static/src/Fichiers/src/read.c
deleted file mode 100644
index b81b8e7d14e4247bc3fd803bf5e9358959c9f7e7..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/read.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/**************************************
- * read.c
- *
- * Programme d'exemple d'utilisation de
- * fichiers
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-
-void exit_on_error(char *s) {
-  perror(s);
-  exit(EXIT_FAILURE);
-}
-
-int main (int argc, char *argv[])  {
-  int n=1252;
-  int n2;
-  short ns=1252;
-  short ns2;
-  long nl=125212521252;
-  long nl2;
-  float f=12.52;
-  float f2;
-  char *s="sinf1252";
-  char *s2=(char *) malloc(strlen(s)*sizeof(char )+1);
-  int err;
-  int fd;
-
-  fd=open("test.dat",O_WRONLY|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR);
-  if(fd==-1) {
-    perror("open");
-    exit(EXIT_FAILURE);
-  }
-  if( write(fd, (void *) s, strlen(s)) == -1 )
-    exit_on_error("write s");
-  if (write(fd, (void *) &n, sizeof(int )) == -1)
-    exit_on_error("write n");
-  if (write(fd, (void *) &ns, sizeof(short int))==-1)
-    exit_on_error("write ns");
-  if (write(fd, (void *) &nl, sizeof(long int))==-1)
-    exit_on_error("write nl");
-  if (write(fd, (void *) &f, sizeof(float))==-1)
-    exit_on_error("write f");
-  if (close(fd)==-1)
-    exit_on_error("close ");
-
-  // lecture
-  fd=open("test.dat",O_RDONLY);
-  if(fd==-1) {
-    perror("open");
-    exit(EXIT_FAILURE);
-  }
-  printf("Fichier ouvert\n");
-
-  if(read(fd, (void *) s2, strlen(s))==-1)
-    exit_on_error("read s");
-  printf("Donnée écrite : %s, lue: %s\n",s,s2);
-
-  if(read(fd, (void *) &n2, sizeof(int))==-1)
-    exit_on_error("read n");
-  printf("Donnée écrite : %d, lue: %d\n",n,n2);
-
-  if(read(fd, (void *) &ns2, sizeof(short))==-1)
-    exit_on_error("read ns");
-  printf("Donnée écrite : %d, lue: %d\n",ns,ns2);
-
-  if(read(fd, (void *) &nl2, sizeof(long))==-1)
-    exit_on_error("read nl");
-  printf("Donnée écrite : %ld, lue: %ld\n",nl,nl2);
-
-  if(read(fd, (void *) &f2, sizeof(float))==-1)
-    exit_on_error("read f");
-  printf("Donnée écrite : %f, lue: %f\n",f,f2);
-  err=close(fd);
-  if(err==-1){
-   perror("close");
-    exit(EXIT_FAILURE);
-  }
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Fichiers/src/read.out b/_static/src/Fichiers/src/read.out
deleted file mode 100644
index 752a113708158e8f68fa3cce793bf37bcf7d806a..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/read.out
+++ /dev/null
@@ -1,6 +0,0 @@
-Fichier ouvert
-Donnée écrite : sinf1252, lue: sinf1252
-Donnée écrite : 1252, lue: 1252
-Donnée écrite : 1252, lue: 1252
-Donnée écrite : 125212521252, lue: 125212521252
-Donnée écrite : 12.520000, lue: 12.520000
diff --git a/_static/src/Fichiers/src/readdir.c b/_static/src/Fichiers/src/readdir.c
deleted file mode 100644
index 0f6b7a01e1debd006d575627a50254017c2f2508..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/readdir.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/**************************************
- * readdir.c
- *
- * Programme d'exemple d'utilisation de
- * répertoires
- *
- *************************************/
-///AAA
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <dirent.h>
-
-void exit_on_error(char *s) {
-  perror(s);
-  exit(EXIT_FAILURE);
-}
-
-int main (int argc, char *argv[])  {
-
-  DIR *dirp;
-  struct dirent *dp;
-  char name[]=".";
-  dirp = opendir(name);
-  if(dirp==NULL) {
-    exit_on_error("opendir");
-  }
-  while ((dp = readdir(dirp)) != NULL) {
-    printf("%s\n",dp->d_name);
-  }
-  int err = closedir(dirp);
-  if(err<0) {
-    exit_on_error("closedir");
-  }
-
-
-}
-///BBB
diff --git a/_static/src/Fichiers/src/sigfpe.c b/_static/src/Fichiers/src/sigfpe.c
deleted file mode 100644
index eb296704d8b424ede768c1743bc3327d50670bdd..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/sigfpe.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * sigfpe.c
- *
- * Programme d'exemple de signal sigfpe
- * fichiers
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-
-int main (int argc, char *argv[])  {
-  int n=1252;
-  int zero=0;
-  printf("Calcul de : %d/%d\n",n,zero);
-  fflush(stdout);
-  printf("Résultat : %d\n",n/zero);
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Fichiers/src/sigfpe2.c b/_static/src/Fichiers/src/sigfpe2.c
deleted file mode 100644
index d8d3468045809760847566e804a62f9c0796aef5..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/sigfpe2.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/**************************************
- * sigfpe.c
- *
- * Programme d'exemple de signal sigfpe
- * handler incorrect
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include <unistd.h>
-
-static void sigfpe_handler(int);
-
-int main (int argc, char *argv[])  {
-
-  int n=1252;
-  void (*handler)(int);
-
-  handler=signal(SIGFPE,sigfpe_handler);
-  if(handler==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-
-  for(int i=1;i<argc;i++) {
-    char *endptr;
-    printf("Traitement de argv[%d]=%s\n",i,argv[i]);
-    fflush(stdout);
-    long val=strtol(argv[i],&endptr,10);
-    if(*endptr=='\0') {
-      int resultat=n/(int) val;
-      printf("%d/%d=%d\n",n,(int) val,resultat);
-    }
-    else {
-      printf("Argument incorrect : %s\n",argv[i]);
-    }
-  }
-  return(EXIT_SUCCESS);
-}
-
-static void sigfpe_handler(int signum) {
-  char *msg="Signal SIGFPE reçu\n";
-  write(STDOUT_FILENO,msg,strlen(msg));
-
-}
-
-///BBB
diff --git a/_static/src/Fichiers/src/sigfpe3.c b/_static/src/Fichiers/src/sigfpe3.c
deleted file mode 100644
index 671c55bb747b7243fc9e36d8a7ceb3ada5cd7d48..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/sigfpe3.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/**************************************
- * sigfpe.c
- *
- * Programme d'exemple de signal sigfpe
- * fichiers
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <setjmp.h>
-
-sigjmp_buf buf;
-
-static void sigfpe_handler(int);
-
-int main (int argc, char *argv[])  {
-
-  int n=1252;
-  if(signal(SIGFPE,sigfpe_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-
-  for(int i=1;i<argc;i++) {
-    char *endptr;
-    int r;
-    printf("Traitement de argv[%d]=%s\n",i,argv[i]);
-    long val=strtol(argv[i],&endptr,10);
-    if(*endptr=='\0') {
-      r=sigsetjmp(buf,1);
-      if(r==0) {
-	int resultat=n/(int) val;
-	printf("%d/%d=%d\n",n,(int) val,resultat);
-      }
-      else {
-	printf("%d/%d=NaN\n",n,(int) val);
-      }
-    }
-    else {
-      printf("Argument incorrect : %s\n",argv[i]);
-    }
-  }
-  return(EXIT_SUCCESS);
-}
-
-static void sigfpe_handler(int signum) {
-  // ignorer la donnée et passer à la suivante
-  siglongjmp(buf,1);
-}
-
-///BBB
diff --git a/_static/src/Fichiers/src/sigusr.c b/_static/src/Fichiers/src/sigusr.c
deleted file mode 100644
index 466943279c4d2e672a36e2833b2ddd5035a20d67..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/sigusr.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/**************************************
- * sigusr.c
- *
- * Programme d'exemple d'utilisation des
- * signaux SIGUSR
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <stdio.h>
-
-volatile sig_atomic_t n_sigusr1=0;
-volatile sig_atomic_t n_sigusr2=0;
-
-static void sig_handler(int);
-
-int main (int argc, char *argv[])  {
-
-  if(signal(SIGUSR1,sig_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-  if(signal(SIGUSR2,sig_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-
-  while( (n_sigusr1+n_sigusr2) <5) {
-    // vide
-  }
-
-  printf("Fin du processus\n");
-  printf("Reçu %d SIGUSR1 et %d SIGUSR2\n",n_sigusr1,n_sigusr2);
-  return(EXIT_SUCCESS);
-}
-
-static void sig_handler(int signum) {
-
-  if(signum==SIGUSR1) {
-    n_sigusr1++;
-  }
-  else {
-    if(signum==SIGUSR2) {
-      n_sigusr2++;
-    }
-    else {
-      char *msg="Reçu signal inattendu\n";
-      write(STDERR_FILENO,msg,strlen(msg));
-      _exit(EXIT_FAILURE);
-    }
-  }
-}
-
-///BBB
diff --git a/_static/src/Fichiers/src/sigusrcount.c b/_static/src/Fichiers/src/sigusrcount.c
deleted file mode 100644
index ed0aacf0387488f30780f199a0cea620213ea2ff..0000000000000000000000000000000000000000
--- a/_static/src/Fichiers/src/sigusrcount.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * sigusrcount.c
- *
- * Programme d'exemple d'utilisation des
- * signaux SIGUSR
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <unistd.h>
-
-volatile sig_atomic_t n_sigusr1=0;
-
-static void sig_handler(int);
-
-int main (int argc, char *argv[])  {
-
-  if(signal(SIGUSR1,sig_handler)==SIG_ERR) {
-    perror("signal");
-    exit(EXIT_FAILURE);
-  }
-  int duree=60;
-  while(duree>0) {
-    printf("Exécution de sleep(%d)\n",duree);
-    duree=sleep(duree);
-  }
-  printf("Fin du processus\n");
-  printf("Reçu %d SIGUSR1\n",n_sigusr1);
-  return(EXIT_SUCCESS);
-}
-
-static void sig_handler(int signum) {
-
-  if(signum==SIGUSR1) {
-    n_sigusr1++;
-  }
-}
-
-///BBB
diff --git a/_static/src/Threads/S5-src/errno.c b/_static/src/Threads/S5-src/errno.c
deleted file mode 100644
index 4c0a4ec790bb622f03dfdb9a0714063f065c1950..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/errno.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * errno.c
- *
- * Programme d'exemple pour errno
- *
- **************************************/
-///AAA
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[]) {
-
-  if(setenv(NULL,NULL,1)!=0) {
-    fprintf(stderr,"Erreur : errno=%d %s\n",errno,strerror(errno));
-  }
-  if(setenv("PATH=","/usr/bin",1)!=0) {
-    fprintf(stderr,"Erreur : errno=%d %s\n",errno,strerror(errno));
-   }
-
-
-}
-
diff --git a/_static/src/Threads/S5-src/fctptr.c b/_static/src/Threads/S5-src/fctptr.c
deleted file mode 100644
index c9b68d53b0d4231dd3e6f9348b13263c5ed3c031..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/fctptr.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/**************************************
- * fctptr.c
- *
- * Programme d'exemple pour les pointeurs
- * vers des fonctions
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-int g=1;
-int debug_level;
-
-void empty (char *str) {
-  return;
-}
-
-void oneline(char *str) {
-  fprintf(stderr,"debug: %s\n",str);
-}
-
-void detailed(char *str) {
-  fprintf(stderr, "debug: %s\n",str);
-  fprintf(stderr,"g=%d\n",g);
-}
-
-void (* debug_print[])(char *) = { empty,
-				   oneline,
-				   detailed };
-
-int main(int argc, char *argv[]) {
-
-  if(argc!=2)
-    return(EXIT_FAILURE);
-
-  debug_level=atoi(argv[1]);
-  if((debug_level<0) || (debug_level>2) )
-    return(EXIT_FAILURE);
-  printf("fct debug_print : %p\n",debug_print[debug_level]);
-  (debug_print[debug_level])("Hello");
-
-   return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S5-src/main.c b/_static/src/Threads/S5-src/main.c
deleted file mode 100644
index 01130f8a563511b4851a98873a0e95f937025024..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/main.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/**************************************
- * main.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include "min.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-  float f1=3.45;
-  float f2=-4.12;
-  printf("Minimum(%f,%f)=%f\n",f1,f2,min(f1,f2));
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/Threads/S5-src/math.c b/_static/src/Threads/S5-src/math.c
deleted file mode 100644
index 78da61797c921410ef305fbe67fd8ab747284f77..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/math.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/**************************************
- * min.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int main (int argc, char *argv[])  {
-  printf("Le cosinus de PI vaut : %f\n",cos(M_PI));
-  return(EXIT_SUCCESS);
-
-}
diff --git a/_static/src/Threads/S5-src/min-ex.c b/_static/src/Threads/S5-src/min-ex.c
deleted file mode 100644
index 44712f5ae995c912657d9cf3b4b9cfb253f95a85..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/min-ex.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * min-ex.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include "min.h"
-#include <stdlib.h>
-
-float min(float a, float b) {
-  if(a<b)
-    return a;
-  else
-    return b;
-}
-
-static int main(int argc, char*argv[]) {
-
-  if(min(3.0,2.0)!=2.0)
-    return(EXIT_FAILURE);
-
-}
-
diff --git a/_static/src/Threads/S5-src/min.c b/_static/src/Threads/S5-src/min.c
deleted file mode 100644
index 1a0c53f81b43a18e0c0be95f386570b256c0cfef..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/min.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**************************************
- * min.c
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include "min.h"
-
-float min(float a, float b) {
-  if(a<b)
-    return a;
-  else
-    return b;
-}
-
-
diff --git a/_static/src/Threads/S5-src/module.c b/_static/src/Threads/S5-src/module.c
deleted file mode 100644
index a8f6204ae63f555734b0d31f3fd6285b5915bad7..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/module.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/**************************************
- * module.c
- *
- **************************************/
-
-#include "module.h"
-
-static float min(float, float);
-
-int num1=0;  // accessible hors de module.c
-extern int num2; // définie dans un autre module
-static int num3=1252; // accessible uniquement dans ce module
-
-float vmin(int n, float *ptr) {
-  float *p=ptr;
-  float m=*ptr;
-  for(int i=1;i<n;i++) {
-    m=min(m,*p);
-    p++;
-  }
-  return m;
-}
-
-static float min(float a, float b) {
-  if(a<b)
-    return a;
-  else
-    return b;
-}
-
-
diff --git a/_static/src/Threads/S5-src/mystrtol.c b/_static/src/Threads/S5-src/mystrtol.c
deleted file mode 100644
index 3cfbfdc267ac23810a787a128d3110798f254138..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/mystrtol.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/**************************************
- * stresep.c
- *
- * Implementation partielle de strtol
- *
- **************************************/
-///AAA
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdbool.h>
-
-int mystrtol(const char *restrict str,
-	     char **restrict endptr,
-	     int base) {
-
-  int val;
-  int i=0;
-  int err=false;
-  while(!err && *(str+i)!='\0')
-    {
-      if(!isdigit(*(str+i))) {
-	err=true;
-	*endptr=(char *)(str+i);
-      }
-      i++;
-    }
-  // ...
-  return val;
-}
-///BBB
-
-int main(int argc, char *argv[])
-{
-  char *p, *s;
-  long li;
-  s = "1252m";
-  li = mystrtol(s,&p,10);
-  if(p!=NULL) {
-    printf("Caractère erronné : %c\n",*p);
-      // p pointe vers le caractère en erreur
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-  return(EXIT_SUCCESS);
-
-}
diff --git a/_static/src/Threads/S5-src/prog.c b/_static/src/Threads/S5-src/prog.c
deleted file mode 100644
index 538d4f8a4b0aa521664f00e9169d11dd8fa3556d..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/prog.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/**************************************
- * prog
- *
- * Programme d'exemple pour le linker
- *
- **************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-///AAA
-#include "min.h"
-#include "module.h"
-
-#define SIZE 4
-
-extern int num1; // définie dans un autre module
-int num2=1252;   // accessible depuis un autre module
-static int num3=-1; // accessible uniquement dans ce module
-
-void f() {
-  static int n=0;
-  int loc=2;
-  if(n==0)
-    printf("n est à  l'adresse %p et loc à l'adresse %p\n",&n,&loc);
-  printf("f, n=%d\n",n);
-  n++;
-}
-
-int main(int argc, char* argv[]) {
-
-  float v[SIZE]={1.0, 3.4, -2.4, 9.9};
-  printf("Minimum: %f\n",vmin(SIZE,v));
-  f();
-  f();
-  printf("Minimum(0.0,1.1)=%f\n",min(0.0,1.1));
-  return(EXIT_SUCCESS);
-}
-
-
diff --git a/_static/src/Threads/S5-src/pthread-args.c b/_static/src/Threads/S5-src/pthread-args.c
deleted file mode 100644
index 6e4365501388aba19b8adbb30d4743524b46f371..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-args.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/**************************************
- * pthread-args.c
- *
- * Programme d'exemple de pthread utilisant les
- * arguments et retournant une valeur
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#define MAXNUM 1000
-#define NTHREADS 4
-
-struct result {
-  long x;
-  long y;
-  long z;
-};
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-long power(long i, long j) {
-  long r=i;
-  while(j>0) {
-    r=r*i;
-    j--;
-  }
-  return r;
-}
-
-
-void *fermat (void * param) {
-
-  struct result *r=(struct result *)malloc(sizeof(struct result));
-  if(r==NULL)
-    error(-1,"malloc");
-
-  long n=(long) param;
-  for(long x=1;x<MAXNUM;x++) {
-    for(long y=1;y<MAXNUM;y++) {
-      for(int z=1;z<MAXNUM;z++) {
-	if( (power(x,n)+power(y,n))==power(z,n) ) {
-	      r->x=x;
-	      r->y=y;
-	      r->z=z;
-	      return((void *) r);
-	}
-      }
-    }
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int err;
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(threads[i]),NULL,&fermat,(void *)(long) i+2);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-
-
-  for(int i=0;i<NTHREADS;i++) {
-    void *p;
-    err=pthread_join(threads[i],(void **)&(p));
-
-    if(err!=0)
-      error(err,"pthread_create");
-    //if(p!=NULL) {
-    //struct result r;
-      //      r=(struct result) p;
-      //printf("Trouvé pour %d : x=%ld, y=%ld, z=%ld\n",i+2,r[i].x,r[i].y, r[i].z);
-  }
-
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread-array.c b/_static/src/Threads/S5-src/pthread-array.c
deleted file mode 100644
index 242a3209a44a8f4d319bd166af38d42542d38909..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-array.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/**************************************
- * pthread-neg.c
- *
- * Programme d'exemple de pthread utilisant les
- * arguments et retournant une valeur
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#define NTHREADS 4
-#define SIZE 100
-
-pthread_t mythread;
-
-void *f(void *param) {
-  int *v=(int *) param;
-  long r=0;
-  for(long i=0;i<SIZE;i++) {
-    r+=v[i];
-  }
-  return((void *) r);
-}
-
-void launch(void ){
-  int v[SIZE];
-  for(int i=0;i<SIZE;i++) {
-    v[i]=1;
-  }
-  int err=pthread_create(&(mythread),NULL,&f,(void *) v);
-  if(err!=0)
-    error(err,"pthread_create");
-}
-
-
-int main (int argc, char *argv[])  {
-
-  launch();
-  // ...
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread-neg.c b/_static/src/Threads/S5-src/pthread-neg.c
deleted file mode 100644
index efc0b74ff6bddae9c8d8169aaed7cccfece1edd0..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-neg.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/**************************************
- * pthread-neg.c
- *
- * Programme d'exemple de pthread utilisant les
- * arguments et retournant une valeur
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#define NTHREADS 4
-void *neg (void * param) {
-  int *l;
-  l=(int *) param;
-  int *r=(int *)malloc(sizeof(int));
-  *r=-*l;
-  return ((void *) r);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int arg[NTHREADS];
-  int err;
-
-  for(long i=0;i<NTHREADS;i++) {
-    arg[i]=i;
-    err=pthread_create(&(threads[i]),NULL,&neg,(void *) &(arg[i]));
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    int *r;
-    err=pthread_join(threads[i],(void **)&r);
-    printf("Resultat[%d]=%d\n",i,*r);
-    free(r);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread-neg2.c b/_static/src/Threads/S5-src/pthread-neg2.c
deleted file mode 100644
index 15573be985fee78fd349496be1f4d64bab2dbe80..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-neg2.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/**************************************
- * pthread-neg.c
- *
- * Programme d'exemple de pthread utilisant les
- * arguments et retournant une valeur
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#define NTHREADS 4
-void *neg (void * param) {
-  int *l;
-  l=(int *) param;
-  int *r=(int *)malloc(sizeof(int));
-  *r=-*l;
-  return ((void *) r);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int arg[NTHREADS];
-  int err;
-
-  for(int i=0;i<NTHREADS;i++) {
-    arg[i]=i;
-  }
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(threads[i]),NULL,&neg,(void *) &(arg[i]));
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    int *r;
-    err=pthread_join(threads[i],(void **)&r);
-
-    printf("Resultat[%d]=%d\n",i,*r);
-    free(r);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread-test-if.c b/_static/src/Threads/S5-src/pthread-test-if.c
deleted file mode 100644
index d901ebe3b4cad95a5bbc61b2ba923305a4f0b148..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-test-if.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**************************************
- * pthread-test.c
- *
- * Programme d'exemple de pthread avec condition de course
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-
-long global=0;
-int even=0;
-int odd=0;
-
-void test_even(int i) {
-  if((i%2)==0)
-    even++;
-}
-
-int increment(int i) {
-  return i+1;
-}
-
-void *inc(void * param) {
-  for(int j=0;j<1000000;j++) {
-    global=increment(global);
-  }
-  pthread_exit(NULL);
-}
-
-void *even(void * param) {
-  for(int j=0;j<1000000;j++) {
-    test_even(global);
-  }
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread_inc;
-  pthread_t thread_even;
-  int err;
-
-  err=pthread_create(&(thread_inc),NULL,&inc,NULL);
-  if(err!=0) {
-    error(err,"pthread_create");
-  }
-
-  err=pthread_create(&(thread_even),NULL,&inc,NULL);
-  if(err!=0) {
-    error(err,"pthread_create");
-  }
-
-  err=pthread_join(thread_inc,NULL);
-  if(err!=0)
-    error(err,"pthread_join");
-  }
-
-  err=pthread_join(thread_even,NULL);
-  if(err!=0)
-    error(err,"pthread_join");
-  }
-
-  printf("global: %ld, even:%ld\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread-test.c b/_static/src/Threads/S5-src/pthread-test.c
deleted file mode 100644
index 0cfb277d9aa349afd6f0f8bf5dc9ec74bdab10d8..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread-test.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/**************************************
- * pthread-test.c
- *
- * Programme d'exemple de pthread avec condition de course
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-///AAA
-
-#define NTHREADS 4
-
-long global=0;
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-int increment(int i) {
-  return i+1;
-}
-
-void *func(void * param) {
-  for(int j=0;j<1000000;j++) {
-    global=increment(global);
-  }
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  int err;
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,&func,NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-  for(int i=0; i<1000000000;i++) { /*...*/ }
-
-  for(int i=NTHREADS-1;i>=0;i--) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-
-  printf("global: %ld\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/pthread.c b/_static/src/Threads/S5-src/pthread.c
deleted file mode 100644
index 4e2741c68832e16f565b1305d5ce5e05f617564b..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/pthread.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/**************************************
- * pthread.c
- *
- * Programme d'exemple de pthread
- *
- **************************************/
-///AAA
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-int global=0;
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-void *thread_first(void * param) {
-  global++;
-  return(NULL);
-}
-
-void *thread_second(void * param) {
-  global++;
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t first;
-  pthread_t second;
-  int err;
-
-  err=pthread_create(&first,NULL,&thread_first,NULL);
-  if(err!=0)
-    error(err,"pthread_create");
-
-  err=pthread_create(&second,NULL,&thread_second,NULL);
-  if(err!=0)
-    error(err,"pthread_create");
-
-  for(int i=0; i<1000000000;i++) { /*...*/ }
-
-  err=pthread_join(second,NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-
-  err=pthread_join(first,NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-
-  printf("global: %d\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S5-src/ptr-char.c b/_static/src/Threads/S5-src/ptr-char.c
deleted file mode 100644
index 4af3385ff319c996f6ed3879c11b1f8f65e8288c..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/ptr-char.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * ptr.c
- *
- * Programme d'exemple pour les pointeurs
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv) {
-
-  for(char **ptr=argv;*ptr!=NULL;ptr++) {
-    printf("Pointeur : %p, chaîne:%s\n",ptr,*ptr);
-  }
-
-}
-
-
-
-
diff --git a/_static/src/Threads/S5-src/ptr.c b/_static/src/Threads/S5-src/ptr.c
deleted file mode 100644
index c4ddc482ae1c7be7d615c7456f622e44dbf05559..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/ptr.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/**************************************
- * ptr.c
- *
- * Programme d'exemple pour les pointeurs
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[]) {
-
-  int a=1252;
-  int b=1;
-  int *p=&a;
-  int **pp=&(p);
-
-  printf("a=%d [%p], b=%d [%p], p=%p, *p=%d, pp=%p, *pp=%p, **pp=%d\n",a,&a,b,&b,p,*p,pp,*pp,**pp);
-
-  a++;
-
-  printf("a=%d [%p], b=%d [%p], p=%p, *p=%d, pp=%p, *pp=%p, **pp=%d\n",a,&a,b,&b,p,*p,pp,*pp,**pp);
-
-
-  *p=*p+1;
-  printf("a=%d [%p], b=%d [%p], p=%p, *p=%d, pp=%p, *pp=%p, **pp=%d\n",a,&a,b,&b,p,*p,pp,*pp,**pp);
-
-  *pp=&b;
-
-  printf("a=%d [%p], b=%d [%p], p=%p, *p=%d, pp=%p, *pp=%p, **pp=%d\n",a,&a,b,&b,p,*p,pp,*pp,**pp);
-
-
-
-}
-
-
-
-
diff --git a/_static/src/Threads/S5-src/ptrptr.c b/_static/src/Threads/S5-src/ptrptr.c
deleted file mode 100644
index 1044c2a914f7f8902b5257fd951ec34e529fbdd3..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/ptrptr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**************************************
- * ptrptr.c
- *
- * Programme d'exemple pour les pointeurs
- * vers des pointeurs
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-int main(int argc, char **argv) {
-
-  char **p;
-  p=argv;
-  printf("Arguments :");
-  while(*p!=NULL) {
-    printf(" %s",*p);
-    p++;
-  }
-  printf("\n");
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S5-src/qsort.c b/_static/src/Threads/S5-src/qsort.c
deleted file mode 100644
index 3e834bba35d90ebcebafc19a92e954a0e72d5723..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/qsort.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * qosrt.c
- *
- * Programme d'exemple d'utilisation de qsort
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-///AAA
-#define SIZE 5
-double array[SIZE]= { 1.0, 7.32, -3.43, 8.7, 9.99 };
-
-void print_array() {
-  for(int i=0;i<SIZE;i++)
-    printf("array[i]:%f\n",array[i]);
-}
-
-int cmp(const void *ptr1, const void *ptr2) {
-  const double *a=ptr1;
-  const double *b=ptr2;
-  if(*a==*b)
-    return 0;
-  else
-    if(*a<*b)
-      return -1;
-    else
-      return +1;
-}
-
-int main(int argc, char *argv[]) {
-
-  printf("Avant qsort\n\n");
-  print_array();
-  qsort(array,SIZE,sizeof(double),cmp);
-  printf("Après qsort\n\n");
-  print_array();
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S5-src/strip.c b/_static/src/Threads/S5-src/strip.c
deleted file mode 100644
index 238480980fb8277719d9ea2576bb3633d01aff8e..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/strip.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/**************************************
- * strip.c
- *
- * Programme d'exemple de fonction avec char **
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int strip(char **str) {
-  int count=0;
-  char *c;
-  c=*str;
-  int len=strlen(c);
-  for(int i=0; i<len;i++) {
-    if(*c==' ') {
-      count++;
-    }
-    c++;
-  }
-  int removed=0;
-  c=*str;
-  char *string=(char *) malloc(sizeof(char)*count+1);
-  char *r=string;
-  for(int i=0; i<strlen(*str);i++) {
-    if(*c!=' ') {
-      *r=*c;
-      r++;
-      removed++;
-    }
-    c++;
-  }
-  *r='\0';
-  *str=string;
-  return removed;
-}
-
-int main(int  argc, char *argv[]) {
-  char *s1=" lkslskldklqkds";
-  char *s2="alkjlksj skdjlskd sqdlkj";
-  char **s1ptr=&(s1);
-  char **s2ptr=&(s2);
-  int n1=strip(s1ptr);
-  printf("n1=%d, %s\n",n1,s1);
-  int n2=strip(s2ptr);
-  printf("n2=%d, %s\n",n2,s2);
-
-
-}
-
-
diff --git a/_static/src/Threads/S5-src/strsep.c b/_static/src/Threads/S5-src/strsep.c
deleted file mode 100644
index a523cd67169889939873f47a484dc0f4f8f64f76..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/strsep.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/**************************************
- * stresep.c
- *
- * Implementation partielle de strtol
- *
- **************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-
-int mystrtol(const char *restrict str,
-	     char **restrict endptr,
-	     int base) {
-
-  int val;
-  int i=0;
-  int err=0;
-  while(!err && *(str+i)!='\0')
-    {
-      if(!isdigit(*(str+i))) {
-	err=1;
-	*endptr=(char *)(str+i);
-      }
-      i++;
-    }
-  // ...
-
-  return val;
-}
-
-
-int main(int argc, char *argv[])
-{
-  char *p, *s;
-  long li;
-  s = "1252m";
-  li = mystrtol(s,&p,10);
-  if(p!=NULL) {
-    printf("Caractère erronné : %c\n",*p);
-      // p pointe vers le caractère en erreur
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-  return(EXIT_SUCCESS);
-
-}
diff --git a/_static/src/Threads/S5-src/strtol.c b/_static/src/Threads/S5-src/strtol.c
deleted file mode 100644
index b1755d6fa8bdd9d8dea44720458583bbe5539441..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/strtol.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/**************************************
- * strtol.c
- *
- * Programme d'exemple d'utilisation de strtol
- *
- **************************************/
-///AAA
-#include <stdlib.h>
-#include <stdio.h>
-
-int main(int argc, char *argv[]) {
-
-  char *p, *s;
-  long li;
-  s = "1252";
-  li = strtol(s,&p,10);
-  if(*p != '\0') {
-    printf("Caractère erronné : %c\n",*p);
-      // p pointe vers le caractère en erreur
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-
-  s = "12m52";
-  li = strtol(s,&p,10);
-  if(*p != '\0') {
-    printf("Caractère erronné : %c\n",*p);
-  }
-  printf("Valeur convertie : %s -> %ld\n",s,li);
-
-  return(EXIT_SUCCESS);
-}
-
-
-
diff --git a/_static/src/Threads/S5-src/sudoku.c b/_static/src/Threads/S5-src/sudoku.c
deleted file mode 100644
index 215e3e4e4857e09d450ceedcf2efc6765b16e5d6..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S5-src/sudoku.c
+++ /dev/null
@@ -1,99 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#define SUDOKU_MAX (9)
-#define SUDOKU_DIM (SUDOKU_MAX)
-#define SUDOKU_BOX (3)
-
-typedef struct {
-	int grid[SUDOKU_DIM][SUDOKU_DIM];
-} sudoku_t;
-
-static sudoku_t sudokus[] = {
-	{ /* First sudoku */
-		.grid = {
-			{8, 1, 5, 3, 4, 2, 9, 6, 7},
-			{6, 0, 9, 7, 8, 1, 4, 2, 0},
-			{7, 4, 2, 5, 6, 9, 0, 8, 1},
-			{3, 8, 4, 9, 0, 6, 5, 1, 2},
-			{9, 7, 1, 2, 5, 4, 6, 3, 8},
-			{5, 2, 6, 0, 3, 8, 7, 4, 9},
-			{4, 0, 3, 8, 2, 7, 0, 9, 6},
-			{2, 9, 7, 6, 1, 3, 8, 5, 4},
-			{1, 6, 8, 4, 0, 5, 2, 7, 3},
-		}
-	},
-	/* TODO fill with new sudokus */
-};
-
-
-static void print_sudoku(sudoku_t *s)
-{
-	int i, j;
-
-	for (i = 0; i < SUDOKU_DIM; ++i) {
-		if (!(i % SUDOKU_BOX))
-			printf("+-------+-------+-------+\n");
-		for (j = 0; j < SUDOKU_DIM; ++j) {
-			if (!(j % SUDOKU_BOX))
-				printf("| ");
-			printf("%d ", s->grid[i][j]);
-		}
-		printf("|\n");
-	}
-	printf("+-------+-------+-------+\n");
-	fflush(stdout);
-}
-
-static int validate_sudoku(sudoku_t *s)
-{
-	int i, j, k, l;
-
-	/* check sum of rows and columns + check that they only
-	 * contain once one number from [1, 9] */
-	for (i = 0; i < SUDOKU_DIM; ++i) {
-		int used_row[SUDOKU_MAX];
-		int used_col[SUDOKU_MAX];
-		memset(used_row, 0, sizeof(used_row));
-		memset(used_col, 0, sizeof(used_col));
-		int sum_row = 0, sum_col = 0;
-		for (j = 0; j < SUDOKU_DIM; ++j) {
-			if (used_row[s->grid[i][j]-1] > 0)
-				return 0;
-			if (used_col[s->grid[j][i]-1] > 0)
-				return 0;
-			sum_row += s->grid[i][j];
-			sum_col += s->grid[j][i];
-			used_row[s->grid[i][j]-1]++;
-			used_col[s->grid[j][i]-1]++;
-		}
-		if (sum_row != 45 || sum_col != 45)
-			return 0;
-	}
-
-	/* check sum of boxes */
-	for (k = 0; k < SUDOKU_DIM / SUDOKU_BOX; ++k) {
-		for (l = 0; l < SUDOKU_DIM / SUDOKU_BOX; ++l) {
-			int sum = 0;
-			for (i = 0; i < SUDOKU_BOX; ++i)
-				for (j = 0; j < SUDOKU_BOX; ++j)
-				 	sum += s->grid[SUDOKU_BOX * k + i][SUDOKU_BOX * l + j];
-			if (sum != 45)
-				return 0;
-		}
-	}
-
-
-	return 1;
-}
-
-
-int main(int argc, char *argv[])
-{
-	/* A COMPLETER */
-	print_sudoku(&sudokus[0]);
-
-	return 0;
-}
diff --git a/_static/src/Threads/S6-src/Makefile b/_static/src/Threads/S6-src/Makefile
deleted file mode 100644
index 2aa4fb2bec558ba3a7ce233ec09acd46ad48165f..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Makefile for source code
-#
-# Builds all .c files, assuming they are all independant and runs them
-# to collect the output on stdout
-#
-# Automatically builds some of the examples to be included in the text
-#
-
-GCC	= gcc
-
-CFLAGS = -Wall -std=c99
-LDFLAGS = -lpthread
-
-ASMFLAGS = -Wall -std=c99 -O0 -fverbose-asm -fno-stack-protector -m32 -S
-
-CFILES := $(patsubst %.c,%.exe,$(wildcard *.c))
-ASMFILES := $(patsubst %.c,%.s,$(wildcard *.c))
-OUTPUT := $(patsubst %.c,%.out,$(wildcard *.c))
-
-
-all: ${CFILES} ${OUTPUT}
-
-%.s: %.c
-	@echo compiling $<
-	$(GCC) $(ASMFLAGS)  $<
-
-%.exe: %.c
-	@echo compiling $<
-	$(GCC) $(CFLAGS) -o $@ $< $(LDFLAGS)
-
-%.out: %.exe
-	rm -f $@
-	@echo executing $<
-	./$< >$@
-
diff --git a/_static/src/Threads/S6-src/arraylist.c b/_static/src/Threads/S6-src/arraylist.c
deleted file mode 100644
index 406b7a1d8322bf033f0bb8d33d1ef48b6b65ac13..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/arraylist.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define N_THREADS 4
-#define LIST_SIZE 1000
-#define N_RAND    100000
-
-static struct {
-	pthread_mutex_t mutex;
-	int val;
-} list[LIST_SIZE];
-
-static void *thread_random(void *arg)
-{
-	int i, r;
-
-	for (i = 0; i < N_RAND; ++i) {
-		r = rand() % LIST_SIZE;
-
-		pthread_mutex_lock(&list[r].mutex);
-		list[r].val++;
-		pthread_mutex_unlock(&list[r].mutex);
-	}
-
-	return NULL;
-}
-
-
-int main (int argc, char const *argv[])
-{
-	int i, sum;
-	pthread_t threads[N_THREADS];
-
-	// init elements mutexes
-	for (i = 0; i < LIST_SIZE; ++i)
-		pthread_mutex_init(&list[i].mutex, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_create(&threads[i], NULL, thread_random, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_join(threads[i], NULL);
-
-	sum = 0;
-	for (i = 0; i < LIST_SIZE; ++i) {
-		sum += list[i].val;
-		pthread_mutex_destroy(&list[i].mutex);
-	}
-	printf("Sum of all elements: %d =?= %d\n", sum, N_THREADS * N_RAND);
-
-	return 0;
-}
diff --git a/_static/src/Threads/S6-src/arraylist2.c b/_static/src/Threads/S6-src/arraylist2.c
deleted file mode 100644
index 07ad5d48bf820f56ba3a926e92153dd15d2b2b5d..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/arraylist2.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define N_THREADS 4
-#define LIST_SIZE 1000
-#define N_RAND    100000
-
-pthread_mutex_t mutex;
-static int list[LIST_SIZE];
-
-static void *thread_random(void *arg)
-{
-	int i, r;
-
-	for (i = 0; i < N_RAND; ++i) {
-		r = rand() % LIST_SIZE;
-
-		pthread_mutex_lock(&mutex);
-		list[r]++;
-		pthread_mutex_unlock(&mutex);
-	}
-
-	return NULL;
-}
-
-
-int main (int argc, char const *argv[])
-{
-	int i, sum;
-	pthread_t threads[N_THREADS];
-
-	// init elements mutex
-	pthread_mutex_init(&mutex, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_create(&threads[i], NULL, thread_random, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_join(threads[i], NULL);
-
-	sum = 0;
-	pthread_mutex_destroy(&mutex);
-	for (i = 0; i < LIST_SIZE; ++i)
-		sum += list[i];
-
-	printf("Sum of all elements: %d =?= %d\n", sum, N_THREADS * N_RAND);
-
-	return 0;
-}
diff --git a/_static/src/Threads/S6-src/pthread-mutex-perf.c b/_static/src/Threads/S6-src/pthread-mutex-perf.c
deleted file mode 100644
index 63eab9f09c8cc776794aa0309a4f483c1ca57720..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-mutex-perf.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/**************************************
- * pthread-mutex.c
- *
- * Programme d'exemple de pthread avec
- * utilisation de mutex pour éviter une
- * violation de section critique
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/time.h>
-
-/* Return t2-t1 in microseconds */
-long timeval_diff(struct timeval *t2, struct timeval *t1)
-{
-  long diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
-  return (diff);
-}
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#include <pthread.h>
-#define LOOP 40000
-#define LOOP_CRITIQUE 40000
-#define N 4
-
-int percent; // pourcentage de temps en section critique
-int nthreads; // nombre de threads
-pthread_mutex_t mutex;
-
-void critique() {
-  long j=0;
-  for(int i=0;i<(LOOP_CRITIQUE*percent)/100;i++) {
-    j+=i;
-    // ...
-  }
-}
-
-void noncritique() {
-  int j=0;
-  for(int i=0;i<(LOOP_CRITIQUE*(100-percent))/100;i++) {
-    j-=i;
-    // ...
-  }
-}
-
-
-void *func(void * param) {
-  for(int j=0;j<LOOP/nthreads;j++) {
-    pthread_mutex_lock(&mutex);
-    critique();
-    pthread_mutex_unlock(&mutex);
-    noncritique();
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  int err;
-  struct timeval tvStart, tvEnd;
-  long mesures[N];
-
-  if(argc!=3)
-    return(EXIT_FAILURE);
-
-  char *endptr;
-  percent=strtol(argv[1],&endptr,10);
-  nthreads=strtol(argv[2],&endptr,10);
-
-  pthread_t thread[nthreads];
-
-  err=pthread_mutex_init( &mutex, NULL);
-  if(err!=0)
-      error(err,"pthread_mutex_init");
-
-  for (int j=0;j<N;j++)  {
-
-    err=gettimeofday(&tvStart, NULL);
-    if(err!=0)
-      exit(EXIT_FAILURE);
-
-    for(int i=0;i<nthreads;i++) {
-      err=pthread_create(&(thread[i]),NULL,&func,NULL);
-      if(err!=0)
-	error(err,"pthread_create");
-    }
-
-    for(int i=nthreads-1;i>=0;i--) {
-      err=pthread_join(thread[i],NULL);
-      if(err!=0)
-	error(err,"pthread_join");
-    }
-    err=gettimeofday(&tvEnd, NULL);
-    if(err!=0)
-      exit(EXIT_FAILURE);
-
-    mesures[i]=timeval_diff(&tvEnd, &tvStart);
-    sum+=mesures[i];
-
-  }
-  printf("%d, %d, %ld\n",nthreads,percent,sum/N);
-
-  err=pthread_mutex_destroy(&mutex);
-  if(err!=0)
-    error(err,"pthread_destroy");
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-mutex.c b/_static/src/Threads/S6-src/pthread-mutex.c
deleted file mode 100644
index 891d1cf91baf1c29fe8e001b2419febe1a3bc673..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-mutex.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/**************************************
- * pthread-mutex.c
- *
- * Programme d'exemple de pthread avec
- * utilisation de mutex pour éviter une
- * violation de section critique
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#include <pthread.h>
-#define NTHREADS 4
-
-long global=0;
-pthread_mutex_t mutex_global;
-
-int increment(int i) {
-  return i+1;
-}
-
-void *func(void * param) {
-  int err;
-  for(int j=0;j<1000000;j++) {
-    err=pthread_mutex_lock(&mutex_global);
-    if(err!=0)
-      error(err,"pthread_mutex_lock");
-    global=increment(global);
-    err=pthread_mutex_unlock(&mutex_global);
-    if(err!=0)
-      error(err,"pthread_mutex_unlock");
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  int err;
-
-  err=pthread_mutex_init( &mutex_global, NULL);
-  if(err!=0)
-      error(err,"pthread_mutex_init");
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,&func,NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-  for(int i=0; i<1000000000;i++) { /*...*/ }
-
-  for(int i=NTHREADS-1;i>=0;i--) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-
-  err=pthread_mutex_destroy(&mutex_global);
-  if(err!=0)
-    error(err,"pthread_mutex_destroy");
-
-  printf("global: %ld\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-mutex.out b/_static/src/Threads/S6-src/pthread-mutex.out
deleted file mode 100644
index f9d92b29b14dfabfaf0ba54735e13a1abc82cd82..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-mutex.out
+++ /dev/null
@@ -1 +0,0 @@
-global: 4000000
diff --git a/_static/src/Threads/S6-src/pthread-neg2.c b/_static/src/Threads/S6-src/pthread-neg2.c
deleted file mode 100644
index efc0b74ff6bddae9c8d8169aaed7cccfece1edd0..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-neg2.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/**************************************
- * pthread-neg.c
- *
- * Programme d'exemple de pthread utilisant les
- * arguments et retournant une valeur
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-#define NTHREADS 4
-void *neg (void * param) {
-  int *l;
-  l=(int *) param;
-  int *r=(int *)malloc(sizeof(int));
-  *r=-*l;
-  return ((void *) r);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int arg[NTHREADS];
-  int err;
-
-  for(long i=0;i<NTHREADS;i++) {
-    arg[i]=i;
-    err=pthread_create(&(threads[i]),NULL,&neg,(void *) &(arg[i]));
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    int *r;
-    err=pthread_join(threads[i],(void **)&r);
-    printf("Resultat[%d]=%d\n",i,*r);
-    free(r);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-neg2.out b/_static/src/Threads/S6-src/pthread-neg2.out
deleted file mode 100644
index d5823dd8ef29e10d55c1c0b0085387ce326e5d98..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-neg2.out
+++ /dev/null
@@ -1,4 +0,0 @@
-Resultat[0]=0
-Resultat[1]=-1
-Resultat[2]=-2
-Resultat[3]=-3
diff --git a/_static/src/Threads/S6-src/pthread-philo.c b/_static/src/Threads/S6-src/pthread-philo.c
deleted file mode 100644
index 33d63c137ecf32e6359464660adb269648fdfb91..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-philo.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**************************************
- * pthread-philo.c
- *
- * Programme d'exemple de pthread avec
- * philosophes qui dinent et mutex
- *
- **************************************/
-
-///AAA
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <unistd.h>
-
-#define PHILOSOPHES 3
-
-pthread_t phil[PHILOSOPHES];
-pthread_mutex_t baguette[PHILOSOPHES];
-
-void mange(int id) {
-  printf("Philosophe [%d] mange\n",id);
-  for(int i=0;i< rand(); i++) {
-    // philosophe mange
-  }
-}
-
-void* philosophe ( void* arg )
-{
-  int *id=(int *) arg;
-  int left = *id;
-  int right = (left + 1) % PHILOSOPHES;
-  while(true) {
-    printf("Philosophe [%d] pense\n",*id);
-    pthread_mutex_lock(&baguette[left]);
-    printf("Philosophe [%d] possède baguette gauche [%d]\n",*id,left);
-    pthread_mutex_lock(&baguette[right]);
-    printf("Philosophe [%d] possède baguette droite [%d]\n",*id,right);
-    mange(*id);
-    pthread_mutex_unlock(&baguette[left]);
-    printf("Philosophe [%d] a libéré baguette gauche [%d]\n",*id,left);
-    pthread_mutex_unlock(&baguette[right]);
-    printf("Philosophe [%d] a libéré baguette droite [%d]\n",*id,right);
-  }
-  return (NULL);
-}
-///BBB
-int main ( int argc, char *argv[])
-{
-   long i;
-   int id[PHILOSOPHES];
-
-   srand(getpid());
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     id[i]=i;
-
-   for (i = 0; i < PHILOSOPHES; i++)
-      pthread_mutex_init( &baguette[i], NULL);
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     pthread_create(&phil[i], NULL, philosophe, (void*)&(id[i]) );
-
-   for (i = 0; i < PHILOSOPHES; i++)
-      pthread_join(phil[i], NULL);
-
-   return (EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-philo2.c b/_static/src/Threads/S6-src/pthread-philo2.c
deleted file mode 100644
index 1e4113b83c358a1e84571aa1ce5f792a9bc1d504..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-philo2.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/**************************************
- * pthread-philo2.c
- *
- * Programme d'exemple de pthread avec
- * philosophes qui dinent et mutex
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-
-#define PHILOSOPHES 3
-
-static pthread_mutex_t baguette[PHILOSOPHES];
-
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-void mange(int id) {
-  printf("Philosophe [%d] mange\n",id);
-  for(int i=0;i< rand(); i++) {
-    // philosophe mange
-  }
-}
-
-///AAA
-
-void* philosophe ( void* arg )
-{
-  int *id=(int *) arg;
-  int left = *id;
-  int right = (left + 1) % PHILOSOPHES;
-  while(true) {
-    // philosophe pense
-    if(left<right) {
-      pthread_mutex_lock(&baguette[left]);
-      pthread_mutex_lock(&baguette[right]);
-    }
-    else {
-      pthread_mutex_lock(&baguette[right]);
-      pthread_mutex_lock(&baguette[left]);
-    }
-    mange(*id);
-    pthread_mutex_unlock(&baguette[left]);
-    pthread_mutex_unlock(&baguette[right]);
-  }
-  return (NULL);
-}
-///BBB
-int main ( int argc, char *argv[])
-{
-   int i;
-   int id[PHILOSOPHES];
-   int err;
-   pthread_t phil[PHILOSOPHES];
-
-   srand(getpid());
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     id[i]=i;
-
-   for (i = 0; i < PHILOSOPHES; i++) {
-     err=pthread_mutex_init( &baguette[i], NULL);
-      if(err!=0)
-	error(err,"pthread_mutex_init");
-   }
-
-   for (i = 0; i < PHILOSOPHES; i++) {
-     err=pthread_create(&phil[i], NULL, philosophe, (void*)&(id[i]) );
-     if(err!=0)
-       error(err,"pthread_create");
-   }
-
-   for (i = 0; i < PHILOSOPHES; i++) {
-      pthread_join(phil[i], NULL);
-      if(err!=0)
-	error(err,"pthread_join");
-   }
-
-   for (i = 0; i < PHILOSOPHES; i++) {
-      pthread_mutex_destroy(&baguette[i]);
-      if(err!=0)
-	error(err,"pthread_mutex_destroy");
-   }
-
-   return (EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-spin.c b/_static/src/Threads/S6-src/pthread-spin.c
deleted file mode 100644
index b4839da01400e690dfea38acab2bc7f8447fd916..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-spin.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/**************************************
- * pthread-spin.c
- *
- * Programme d'exemple de pthread avec
- * utilisation de spinlock pour éviter une
- * violation de section critique
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-///AAA
-
-#define NTHREADS 4
-
-long global=0;
-
-static pthread_spinlock_t spinlock_global;
-
-
-int increment(int i) {
-  return i+1;
-}
-
-void *func(void * param) {
-  for(int j=0;j<1000000;j++) {
-    pthread_spin_lock(&spinlock_global);
-    global=increment(global);
-    pthread_spin_unlock(&spinlock_global);
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  int err;
-
-  pthread_spin_init( &spinlock_global, 0);
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,&func,NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-  for(int i=0; i<1000000000;i++) { /*...*/ }
-
-  for(int i=NTHREADS-1;i>=0;i--) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-  }
-
-  printf("global: %ld\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread-test-if.c b/_static/src/Threads/S6-src/pthread-test-if.c
deleted file mode 100644
index f3fa8e26e7d22850e8fdeb06f5b9725a6f8d7a81..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread-test-if.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**************************************
- * pthread-test.c
- *
- * Programme d'exemple de pthread avec condition de course
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-
-long global=0;
-int even=0;
-int odd=0;
-
-void test_even(int i) {
-  if((i%2)==0)
-    even++;
-}
-
-int increment(int i) {
-  return i+1;
-}
-
-void *inc(void * param) {
-  for(int j=0;j<1000000;j++) {
-    global=increment(global);
-  }
-  pthread_exit(NULL);
-}
-
-void *is_even(void * param) {
-  for(int j=0;j<1000000;j++) {
-    test_even(global);
-  }
-  pthread_exit(NULL);
-}
-///BBB
-int main (int argc, char *argv[])  {
-  pthread_t thread_inc;
-  pthread_t thread_even;
-  int err;
-
-  err=pthread_create(&(thread_inc),NULL,&inc,NULL);
-  if(err!=0) {
-    error(err,"pthread_create");
-  }
-
-  err=pthread_create(&(thread_even),NULL,&is_even,NULL);
-  if(err!=0) {
-    error(err,"pthread_create");
-  }
-
-  err=pthread_join(thread_inc,NULL);
-  if(err!=0) {
-    error(err,"pthread_join");
-  }
-
-  err=pthread_join(thread_even,NULL);
-  if(err!=0) {
-    error(err,"pthread_join");
-  }
-
-  printf("global: %ld, even:%d\n",global,even);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/pthread.c b/_static/src/Threads/S6-src/pthread.c
deleted file mode 100644
index 9f781d0c1025d8cf28ee58734a6dc903fa44fd32..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/pthread.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/**************************************
- * pthread.c
- *
- * Programme d'exemple de pthread
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-int global=0;
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-void *thread_first(void * param) {
-  global++;
-  return(NULL);
-}
-
-void *thread_second(void * param) {
-  global++;
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-
-  ///AAA
-  pthread_t first;
-  pthread_attr_t attr_first;
-  size_t stacksize;
-
-  int err;
-
-  err= pthread_attr_init(&attr_first);
-  if(err!=0)
-    error(err,"pthread_attr_init");
-
-  err= pthread_attr_getstacksize(&attr_first,&stacksize);
-  if(err!=0)
-    error(err,"pthread_attr_getstacksize");
-
-  printf("Taille par défaut du stack : %ld\n",stacksize);
-
-  stacksize=65536;
-
-  err= pthread_attr_setstacksize(&attr_first,stacksize);
-  if(err!=0)
-    error(err,"pthread_attr_setstacksize");
-
-  err=pthread_create(&first,&attr_first,&thread_first,NULL);
-  if(err!=0)
-    error(err,"pthread_create");
-  ///BBB
-
-  for(int i=0; i<1000000000;i++) { /*...*/ }
-
-
-  err=pthread_join(first,NULL);
-    if(err!=0)
-      error(err,"pthread_join");
-
-  printf("global: %d\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S6-src/thread_crash.c b/_static/src/Threads/S6-src/thread_crash.c
deleted file mode 100644
index b9f34e91dea12772b85582bcec89d1589a73245c..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S6-src/thread_crash.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define N_THREADS 3
-
-pthread_mutex_t global_mutex;
-
-static void *thread_work(void *arg)
-{
-	pthread_mutex_lock(&global_mutex);
-
-	/* Do some work here */
-
-	pthread_exit(NULL);
-	pthread_mutex_unlock(&global_mutex);
-}
-
-
-int main (int argc, char const *argv[])
-{
-	int i;
-	pthread_t threads[N_THREADS];
-
-	pthread_mutex_init(&global_mutex, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_create(&threads[i], NULL, thread_work, NULL);
-
-	for (i = 0; i < N_THREADS; ++i)
-		pthread_join(threads[i], NULL);
-
-	return 0;
-}
diff --git a/_static/src/Threads/S7-src/Makefile b/_static/src/Threads/S7-src/Makefile
deleted file mode 100644
index 7a5a1577fe951aeab09924492e8d2e02b4a8efc8..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Makefile for source code
-#
-# Builds all .c files, assuming they are all independant and runs them
-# to collect the output on stdout
-#
-# Automatically builds some of the examples to be included in the text
-#
-
-GCC	= gcc
-
-CFLAGS = -Wall -std=c99 -g
-LDFLAGS = -lpthread
-
-ASMFLAGS = -Wall -std=c99 -O0 -fverbose-asm -fno-stack-protector -m32 -S
-
-CFILES := $(patsubst %.c,%.exe,$(wildcard *.c))
-ASMFILES := $(patsubst %.c,%.s,$(wildcard *.c))
-OUTPUT := $(patsubst %.c,%.out,$(wildcard *.c))
-
-
-all: ${CFILES} ${OUTPUT}
-
-%.s: %.c
-	@echo compiling $<
-	$(GCC) $(ASMFLAGS)  $<
-
-%.exe: %.c
-	@echo compiling $<
-	$(GCC) $(CFLAGS) -o $@ $< $(LDFLAGS)
-
-%.out: %.exe
-	rm -f $@
-	@echo executing $<
-	./$< >$@
-
diff --git a/_static/src/Threads/S7-src/pthread-barrier.c b/_static/src/Threads/S7-src/pthread-barrier.c
deleted file mode 100644
index 02033916baf1f9d687c07e963a78c77d0c7faf08..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-barrier.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/**************************************
- * pthread-barrier.c
- *
- * Programme d'exemple de barrières
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-void phase1(void)
-{
-  //
-  return;
-}
-
-
-void phase2(void)
-{
-  //
-  return;
-}
-
-///AAA
-#define NTHREADS 4
-pthread_barrier_t rendezvous;
-
-void *compute(void * param) {
-  phase1();
-  pthread_barrier_wait(&rendezvous);
-  phase2();
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  int err;
-
-  err=pthread_barrier_init(&rendezvous, NULL,NTHREADS);
-  if(err!=0) {
-      error(err,"pthread_barrier_init");
-  }
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,func[i],NULL);
-    if(err!=0) {
-      error(err,"pthread_create");
-    }
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0) {
-      error(err,"pthread_join");
-    }
-  }
-  pthread_barrier_destroy(&srendezvous);
-  if(err!=0) {
-      error(err,"pthread_barrier_destroy);
-  }
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S7-src/pthread-id.c b/_static/src/Threads/S7-src/pthread-id.c
deleted file mode 100644
index e72193fcd9e29cbc5a7c62ee9fb57bb68f75f3cf..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-id.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/**************************************
- * pthread-specific.c
- *
- * Programme d'exemple de pthread qui utilise une
- * zone mémoire pour stocker des données
- * spécifiques au thread
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#define MAXNUM 1000
-#define NTHREADS 4
-
-struct result {
-  long x;
-  long y;
-  long z;
-};
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-long power(long i, long j) {
-  long r=i;
-  while(j>0) {
-    r=r*i;
-    j--;
-  }
-  return r;
-}
-
-void g();
-
-void *f1( void* param) {
-
-  printf("f1 a calculé %d"
-  return(NULL);
-}
-
-
-void *fermat (void * param) {
-
-  struct result *r=(struct result *)malloc(sizeof(struct result));
-  if(r==NULL)
-    error(-1,"malloc");
-
-  long n=(long) param;
-  for(long x=1;x<MAXNUM;x++) {
-    for(long y=1;y<MAXNUM;y++) {
-      for(int z=1;z<MAXNUM;z++) {
-	if( (power(x,n)+power(y,n))==power(z,n) ) {
-	      r->x=x;
-	      r->y=y;
-	      r->z=z;
-	      return((void *) r);
-	}
-      }
-    }
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int err;
-
-  err=pthread_create(&(threads[i]),NULL,&fermat,(void *)(long) i+2);
-  if(err!=0)
-    error(err,"pthread_create");
-
-
-
-
-  for(int i=0;i<NTHREADS;i++) {
-    void *p;
-    err=pthread_join(threads[i],(void **)&(p));
-
-    if(err!=0)
-      error(err,"pthread_create");
-    //if(p!=NULL) {
-    //struct result r;
-      //      r=(struct result) p;
-      //printf("Trouvé pour %d : x=%ld, y=%ld, z=%ld\n",i+2,r[i].x,r[i].y, r[i].z);
-  }
-
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S7-src/pthread-philo-sem.c b/_static/src/Threads/S7-src/pthread-philo-sem.c
deleted file mode 100644
index 8d27d804b61277834c87a0cbc9d095413a8076a8..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-philo-sem.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/**************************************
- * pthread-philo-sem.c
- *
- * Programme d'exemple de pthread avec
- * philosophes qui dinent et sémaphores
- *
- **************************************/
-
-///AAA
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <unistd.h>
-
-#define PHILOSOPHES 3
-
-pthread_t phil[PHILOSOPHES];
-sem_t baguette[PHILOSOPHES];
-
-void mange(int id) {
-  printf("Philosophe [%d] mange\n",id);
-  for(int i=0;i< rand(); i++) {
-    // philosophe mange
-  }
-}
-
-void* philosophe ( void* arg )
-{
-  int *id=(int *) arg;
-  int left = *id;
-  int right = (left + 1) % PHILOSOPHES;
-  while(true) {
-    printf("Philosophe [%d] pense\n",*id);
-    sem_wait(&baguette[left]);
-    printf("Philosophe [%d] possède baguette gauche [%d]\n",*id,left);
-    sem_wait(&baguette[right]);
-    printf("Philosophe [%d] possède baguette droite [%d]\n",*id,right);
-    mange(*id);
-    sem_post(&baguette[left]);
-    printf("Philosophe [%d] a libéré baguette gauche [%d]\n",*id,left);
-    sem_post(&baguette[right]);
-    printf("Philosophe [%d] a libéré baguette droite [%d]\n",*id,right);
-  }
-  return (NULL);
-}
-///BBB
-int main ( int argc, char *argv[])
-{
-   long i;
-   int id[PHILOSOPHES];
-
-   srand(getpid());
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     id[i]=i;
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     sem_init( &baguette[i], 0 , 1);
-
-   for (i = 0; i < PHILOSOPHES; i++)
-     pthread_create(&phil[i], NULL, philosophe, (void*)&(id[i]) );
-
-   for (i = 0; i < PHILOSOPHES; i++)
-      pthread_join(phil[i], NULL);
-
-   return (EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S7-src/pthread-rw.c b/_static/src/Threads/S7-src/pthread-rw.c
deleted file mode 100644
index 22ab9328c59805f43bba9f2804d8edbf3f295143..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-rw.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/**************************************
- * pthread-rw.c
- *
- * Programme d'exemple de pthread avec
- * readers-writers lock
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#define SIZE 1000000
-#define READERS 10
-#define WRITERS 2
-#define LOOP 10000
-
-
-pthread_t p[READERS+WRITERS];
-pthread_rwlock_t lock;
-
-volatile int v[SIZE];
-
-void *writer( void *arg)
-{
-  for(int i=0;i<SIZE;i++) {
-    pthread_rwlock_wrlock(&lock);
-    v[i]=rand()%SIZE;
-    pthread_rwlock_wrunlock(&lock);
-  }
-  // ...
-  printf ("Writer %d terminé\n",gettid());
-  return(NULL);
-
-
-}
-void* reader ( void* arg )
-{
-  int result;
-  for(int i=0;i<LOOP;i++) {
-    int id=rand()%SIZE;
-    pthread_rwlock_rdlock(&lock);
-    result=v[id];
-    pthread_rwlock_rdunlock(&lock);
-  }
-  // ...
-  printf ("Reader %d terminé\n",gettid());
-  return(NULL);
-}
-
-///BBB
-int main ( int argc, char *argv[])
-{
-   int i;
-
-   srand(getpid());
-
-   pthread_rwlock_init(&lock, 0);
-
-   for (i = 0; i < READERS+WRITERS; i++) {
-     if(i<READERS)
-       pthread_create(&p[i], NULL, reader, NULL );
-     else
-       pthread_create(&p[i], NULL, writer, NULL );
-   }
-
-   for (i = 0; i < READERS+WRITERS; i++)
-     pthread_join(p[i], NULL);
-
-   pthread_rwlock_destroy(&lock);
-
-   return (EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S7-src/pthread-sem-before.c b/_static/src/Threads/S7-src/pthread-sem-before.c
deleted file mode 100644
index fd4567586f1ccd5c72a0b7e29848e960b898c6d9..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-sem-before.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/**************************************
- * pthread-sem-before.c
- *
- * Programme d'exemple de sémaphores
- * La fonction after ne peut s'exécuter
- * q'après la fonction before
- **************************************/
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-#define NTHREADS 2
-sem_t semaphore;
-
-void *before(void * param) {
-  // do something
-  for(int j=0;j<1000000;j++) {
-  }
-  sem_post(&semaphore);
-  return(NULL);
-}
-
-void *after(void * param) {
-  sem_wait(&semaphore);
-  // do something
-  for(int j=0;j<1000000;j++) {
-  }
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  void * (* func[])(void *)={before, after};
-  int err;
-
-  err=sem_init(&semaphore, 0,0);
-  if(err!=0) {
-      error(err,"sem_init");
-  }
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,func[i],NULL);
-    if(err!=0) {
-      error(err,"pthread_create");
-    }
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0) {
-      error(err,"pthread_join");
-    }
-  }
-  sem_destroy(&semaphore);
-  if(err!=0) {
-      error(err,"sem_destroy");
-  }
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S7-src/pthread-sem-before.out b/_static/src/Threads/S7-src/pthread-sem-before.out
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/_static/src/Threads/S7-src/pthread-sem.c b/_static/src/Threads/S7-src/pthread-sem.c
deleted file mode 100644
index 28890557548e5cdba7a052918cd5febf8c4fbe57..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-sem.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/**************************************
- * pthread-semt.c
- *
- * Programme d'exemple de sémaphores
- *
- **************************************/
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#define NTHREADS 4
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-
-static sem_t semaphore;
-long global=0;
-
-int increment(int i) {
-  return i+1;
-}
-
-void *inc(void * param) {
-  for(int j=0;j<1000000;j++) {
-    sem_wait(&semaphore);
-    global=increment(global);
-    sem_post(&semaphore);
-  }
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t thread[NTHREADS];
-  int err;
-
-  sem_init(&semaphore, 0,1);
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(thread[i]),NULL,&inc,NULL);
-    if(err!=0) {
-      error(err,"pthread_create");
-    }
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_join(thread[i],NULL);
-    if(err!=0) {
-      error(err,"pthread_join");
-    }
-  }
-  sem_destroy(&semaphore);
-  printf("global: %ld\n",global);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S7-src/pthread-sem.out b/_static/src/Threads/S7-src/pthread-sem.out
deleted file mode 100644
index cb6ea05e0fe7b70523a0556e88ea20481eb28b72..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-sem.out
+++ /dev/null
@@ -1 +0,0 @@
-global: 3837069
diff --git a/_static/src/Threads/S7-src/pthread-specific.c b/_static/src/Threads/S7-src/pthread-specific.c
deleted file mode 100644
index 38a347a126aa561951e49e6e782aa2a41eb8dd55..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-specific.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/**************************************
- * pthread-specific.c
- *
- * Programme d'exemple de pthread qui utilise une
- * zone mémoire pour stocker des données
- * spécifiques au thread
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-#define LOOP 1000000
-#define NTHREADS 4
-
-__thread int count=0;
-int global_count=0;
-
-void *f( void* param) {
-  for(int i=0;i<LOOP;i++) {
-    count++;
-    global_count=global_count-1;
-  }
-  printf("Valeurs : count=%d, global_count=%d\n",count, global_count);
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int err;
-
-  for(int i=0;i<NTHREADS;i++) {
-    count=i;   // local au thread du programme principal
-    err=pthread_create(&(threads[i]),NULL,&f,NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_join(threads[i],NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S7-src/pthread-specific.out b/_static/src/Threads/S7-src/pthread-specific.out
deleted file mode 100644
index f0eb4d4432d5c6cd658ac2ff16f2487c2334216f..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-specific.out
+++ /dev/null
@@ -1,4 +0,0 @@
-Valeurs : count=1000000, global_count=-870754
-Valeurs : count=1000000, global_count=-880737
-Valeurs : count=1000000, global_count=-916383
-Valeurs : count=1000000, global_count=-923423
diff --git a/_static/src/Threads/S7-src/pthread-specific2.c b/_static/src/Threads/S7-src/pthread-specific2.c
deleted file mode 100644
index 47cec0223ad8ae4f692c67f61fc754d46c731cfa..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-specific2.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**************************************
- * pthread-specific.c
- *
- * Programme d'exemple de pthread qui utilise une
- * zone mémoire pour stocker des données
- * spécifiques au thread
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-void error(int err, char *msg) {
-  fprintf(stderr,"%s a retourné %d, message d'erreur : %s\n",msg,err,strerror(errno));
-  exit(EXIT_FAILURE);
-}
-
-
-///AAA
-#define LOOP 1000000
-#define NTHREADS 4
-
-pthread_key_t count;
-int global_count=0;
-
-void g(void ) {
-  void * data=pthread_getspecific(count);
-  if(data==NULL)
-    error(-1,"pthread_getspecific");
-  int *count_ptr=(int *)data;
-  for(int i=0;i<LOOP;i++) {
-    *count_ptr=*(count_ptr)+1;
-    global_count=global_count-1;
-  }
-}
-
-void *f( void* param) {
-  int err;
-  int *int_ptr=malloc(sizeof(int));
-  *int_ptr=0;
-  err=pthread_setspecific(count, (void *)int_ptr);
-  if(err!=0)
-    error(err,"pthread_setspecific");
-  g();
-  printf("Valeurs : count=%d, global_count=%d\n",*int_ptr, global_count);
-  free(int_ptr);
-  return(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  pthread_t threads[NTHREADS];
-  int err;
-
-  err=pthread_key_create(&(count),NULL);
-  if(err!=0)
-    error(err,"pthread_key_create");
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_create(&(threads[i]),NULL,&f,NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-
-  for(int i=0;i<NTHREADS;i++) {
-    err=pthread_join(threads[i],NULL);
-    if(err!=0)
-      error(err,"pthread_create");
-  }
-  err=pthread_key_delete(count);
-  if(err!=0)
-    error(err,"pthread_key_delete");
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S7-src/pthread-specific2.out b/_static/src/Threads/S7-src/pthread-specific2.out
deleted file mode 100644
index c717fae88a16bed9a2e7040da20f76e80ee5e0be..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/pthread-specific2.out
+++ /dev/null
@@ -1,4 +0,0 @@
-Valeurs : count=1000000, global_count=-970217
-Valeurs : count=1000000, global_count=-2967957
-Valeurs : count=1000000, global_count=-2978745
-Valeurs : count=1000000, global_count=-3135210
diff --git a/_static/src/Threads/S7-src/reentrant.c b/_static/src/Threads/S7-src/reentrant.c
deleted file mode 100644
index 89743445840f46c42dd7ec9331d6843bec7f5630..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/reentrant.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/**************************************
- * reentrant.c
- *
- * Programme d'exemple de fonctions reentrantes
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-
-///AAA
-#include <stdint.h>
-#define SIZE 10000
-
-int g_max=INT32_MIN;
-int v[SIZE];
-
-int max_vector(int n, int *v) {
-  int max=INT32_MIN;
-  for(int i=0;i<n;i++) {
-    if(v[i]>max)
-      max=v[i];
-  }
-  return max;
-}
-
-int max_global(int *v) {
-    if (*v>g_max) {
-      g_max=*v;
-    }
-    return(g_max);
-}
-
-int max_static(int *v){
-  static int s_max=INT32_MIN;
-  if (*v>s_max) {
-    s_max=*v;
-  }
-  return(s_max);
-}
-
-///BBB
-
-int main (int argc, char *argv[])  {
-  srand((int) getpid());
-  for (int i=0;i<SIZE;i++) {
-    v[i]=rand()%1000000;
-  }
-  printf("max_vector: %d\n",max_vector(SIZE,v));
-  int max_g;
-  int max_s;
-  for(int i=0;i<SIZE;i++) {
-    max_g=max_global(&v[i]);
-    max_s=max_static(&v[i]);
-  }
-  printf("max_global: %d\n",max_g);
-  printf("max_static: %d\n",max_s);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S7-src/strerror.c b/_static/src/Threads/S7-src/strerror.c
deleted file mode 100644
index a1571c52fdea21e2ad2003a79ccaa430417a4ed0..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S7-src/strerror.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * strerror.c
- *
- * Programme d'exemple strerror
- *
- **************************************/
-
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main (int argc, char *argv[])  {
-
-  for(int i=0; i<999;i++) {
-    printf("strerror[%d] est à l'adresse %p\n",i,strerror(i));
-  };
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S8-src/Makefile b/_static/src/Threads/S8-src/Makefile
deleted file mode 100644
index 7a5a1577fe951aeab09924492e8d2e02b4a8efc8..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Makefile for source code
-#
-# Builds all .c files, assuming they are all independant and runs them
-# to collect the output on stdout
-#
-# Automatically builds some of the examples to be included in the text
-#
-
-GCC	= gcc
-
-CFLAGS = -Wall -std=c99 -g
-LDFLAGS = -lpthread
-
-ASMFLAGS = -Wall -std=c99 -O0 -fverbose-asm -fno-stack-protector -m32 -S
-
-CFILES := $(patsubst %.c,%.exe,$(wildcard *.c))
-ASMFILES := $(patsubst %.c,%.s,$(wildcard *.c))
-OUTPUT := $(patsubst %.c,%.out,$(wildcard *.c))
-
-
-all: ${CFILES} ${OUTPUT}
-
-%.s: %.c
-	@echo compiling $<
-	$(GCC) $(ASMFLAGS)  $<
-
-%.exe: %.c
-	@echo compiling $<
-	$(GCC) $(CFLAGS) -o $@ $< $(LDFLAGS)
-
-%.out: %.exe
-	rm -f $@
-	@echo executing $<
-	./$< >$@
-
diff --git a/_static/src/Threads/S8-src/Makefile-lib b/_static/src/Threads/S8-src/Makefile-lib
deleted file mode 100644
index 6cbf869aa0354706af10c9a5ddd0b3bb98e9ab15..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/Makefile-lib
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Makefile for library imax and imath
-#
-
-GCC	= gcc
-AR	= ar
-ARFLAGS = -cvq
-CFLAGS = -Wall -std=c99 -g -c
-LDFLAGS = --static -g
-
-all: imath
-
-imax.o: imax.c
-	@echo compiling imax
-	$(GCC) $(CFLAGS) imax.c
-
-libimax.a: imax.o
-	@echo building libimax
-	$(AR) $(ARFLAGS) libimax.a imax.o
-
-imath.o: imath.c imax.h
-	@echo compiling imath.o
-	$(GCC) $(CFLAGS) imath.c
-
-imath: imath.o libimax.a
-	@echo building imath
-	$(GCC) $(LDFLAGS)  -o imath libimax.a imath.o
-
-clean:
-	rm imath libimax.a imax.o imath.o
diff --git a/_static/src/Threads/S8-src/atexit.c b/_static/src/Threads/S8-src/atexit.c
deleted file mode 100644
index deb7367e8301e57e585a929ad7c0e54a913b92b6..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/atexit.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/**************************************
- * atexit.c
- *
- * Programme d'exemple d'utilisation de
- * atexit
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-
-void e1() {
-  printf("Exécution de la fonction e1\n");
-}
-
-int main (int argc, char *argv[])  {
-
-  int err;
-  err=atexit(e1);
-  if(err==-1) {
-    perror("atexit");
-    exit(EXIT_FAILURE);
-  }
-  return(EXIT_SUCCESS);
-
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/execve-long.c b/_static/src/Threads/S8-src/execve-long.c
deleted file mode 100644
index 0b5e7916dd31dee8385f92d3db6df24818c8c01e..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/execve-long.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/**************************************
- * execve-long.c
- *
- * Programme d'exemple pour execve
- *
- *************************************/
-
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-
-extern char **environ;
-
-int main (int argc, char *argv[])  {
-
-  if(argc==1) {
-    fprintf(stderr,"Erreur, nom de l'exécutable nécessaire\n");
-    return(EXIT_FAILURE);
-  }
-
-  int err=execve(argv[1], &(argv[1]), environ);
-  if(err!=0) {
-    fprintf(stderr,"Impossible d'exécuter %s, erreur %d %s\n",argv[1],err, strerror(errno));
-    exit(EXIT_FAILURE);
-  }
-  return(EXIT_SUCCESS);
-
-}
-
diff --git a/_static/src/Threads/S8-src/execve.c b/_static/src/Threads/S8-src/execve.c
deleted file mode 100644
index 64367f79f0b8db5996b6b5a25a57b04206b62a7c..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/execve.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/**************************************
- * execve.c
- *
- * Programme d'exemple pour execve
- *
- *************************************/
-
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int main (int argc, char *argv[])  {
-
-  char *arguments[]={"expr", "1", "+", "2", NULL};
-  char *environnement[]={"LANG=fr",NULL};
-
-  printf("Exécution du processus %d\n",getpid());
-  printf("Exécution de /usr/bin/expr\n");
-  int err=execve("/usr/bin/expr", arguments, environnement);
-  if(err!=0) {
-    perror("execve");
-    exit(EXIT_FAILURE);
-  }
-  // jamais atteint
-  printf("Ce message ne sera jamais affiché\n");
-  return(EXIT_SUCCESS);
-
-}
-
diff --git a/_static/src/Threads/S8-src/execve.out b/_static/src/Threads/S8-src/execve.out
deleted file mode 100644
index 00750edc07d6415dcc07ae0351e9397b0222b7ba..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/execve.out
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/_static/src/Threads/S8-src/fork-buf.c b/_static/src/Threads/S8-src/fork-buf.c
deleted file mode 100644
index 718004df8a0181b578017599dee900be7c67bd8f..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-buf.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/**************************************
- * fork.c
- *
- * Programme d'exemple d'utilisation de
- * fork
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <time.h>
-
-
-void output(char c) {
-  printf("Processus : %d\n",getpid());
-  srand(getpid()+time(NULL));
-  for(int i=0;i<60;i++) {
-    putchar(c);
-    int err=usleep((unsigned int) (rand()%10000));
-    if(err<0) {
-      perror("usleep");
-      exit(EXIT_FAILURE);
-    }
-  }
-}
-
-int main (int argc, char *argv[])  {
-
-  if(argc > 1) {
-    setbuf(stdout,NULL);
-  }
-
-  pid_t pid;
-
-  pid=fork();
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    // processus fils
-    output('f');
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    output('P');
-    printf("\n");
-    sleep(1);
-    // ...
-    return(EXIT_SUCCESS);
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork-execve.c b/_static/src/Threads/S8-src/fork-execve.c
deleted file mode 100644
index 52e771c15271001b8c48b511236e847bb3b1c231..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-execve.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/**************************************
- * fork-execve.c
- *
- * Programme d'exemple d'utilisation de
- * fork et execve
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-
-int main (int argc, char *argv[])  {
-  int status;
-  pid_t pid;
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    // fils
-    char *arguments[]={"expr", "1", "+", "2", NULL};
-    char *environnement[]={"PATH=/bin:/usr/bin",NULL};
-    int err=execve("/usr/bin/expr", arguments, environnement);
-    if(err!=0) {
-      perror("execve");
-      return(EXIT_FAILURE);
-    }
-  }
-  else {
-    // processus père
-    int fils=waitpid(pid,&status,0);
-    if(fils==-1) {
-      perror("wait");
-      exit(EXIT_FAILURE);
-    }
-    if(WIFEXITED(status)) {
-      printf("Le fils %d s'est terminé correctement et a retourné la valeur %d\n",fils,WEXITSTATUS(status));
-      return(EXIT_SUCCESS);
-    }
-    else {
-      if( WIFSIGNALED(status)) {
-	printf("Le fils %d a été tué par le signal %d\n",fils,WTERMSIG(status));
-      }
-      return(EXIT_FAILURE);
-    }
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork-manyexec.c b/_static/src/Threads/S8-src/fork-manyexec.c
deleted file mode 100644
index b0742d45b66bd85e56c17d3626626e3db0cbf431..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-manyexec.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/**************************************
- * fork-manyexec.c
- *
- * Programme d'exemple d'utilisation de
- * fork et execve
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <libgen.h>
-
-extern char **environ;
-
-int main (int argc, char *argv[])  {
-  int status;
-  pid_t pid;
-
-  for(int i=1;i<argc;i++) {
-    // création du fils
-    pid=fork();
-    if (pid==-1) {
-      perror("fork");
-      exit(EXIT_FAILURE);
-    }
-    if (pid==0) {
-      // fils
-      printf ("Exécution de la commande %s [pid=%d]\n",argv[i],getpid());
-      fflush(stdout);
-      char *arguments[2];
-      arguments[0]=basename(argv[i]);
-      arguments[1]=NULL;
-      int err=execve(argv[i], arguments, environ);
-      if(err!=0)
-	return(127);
-    } // fils
-    else {
-      // processus père
-      int fils=waitpid(pid,&status,0);
-      if(fils==-1) {
-	perror("wait");
-	exit(EXIT_FAILURE);
-      }
-      if(WIFEXITED(status)) {
-	if(WEXITSTATUS(status)==0)
-	  printf("La commande %s [%d] s'est terminée correctement\n",argv[i],fils);
-	else
-	  if (WEXITSTATUS(status)==127)
-	    printf("La commande %s n'a pu être exécutée\n",argv[i]);
-	  else
-	    printf("La commande %s [%d] a retourné %d\n",argv[i],fils,WEXITSTATUS(status));
-      }
-      else {
-	if( WIFSIGNALED(status))
-	  printf("La commande %s [%d] ne s'est pas terminée correctement\n",argv[i],fils);
-      }
-      fflush(stdout);
-    } // père
-  } // for loop
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S8-src/fork-manyexec.out b/_static/src/Threads/S8-src/fork-manyexec.out
deleted file mode 100644
index 942f0cdf2a69fa0ddd52340e28f0feb9392b0884..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-manyexec.out
+++ /dev/null
@@ -1,7 +0,0 @@
-$./fork-manyexec /bin/true /bin/false /bin/none
-Exécution de la commande /bin/true [pid=14217]
-La commande /bin/true [14217] s'est terminée correctement
-Exécution de la commande /bin/false [pid=14218]
-La commande /bin/false [14218] a retourné 1
-Exécution de la commande /bin/none [pid=14219]
-La commande /bin/none n'a pu être exécutée
diff --git a/_static/src/Threads/S8-src/fork-nice.c b/_static/src/Threads/S8-src/fork-nice.c
deleted file mode 100644
index e746a7d109259baf9e316f8fbff860c1dff12229..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-nice.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/**************************************
- * fork-zombie.c
- *
- * Programme d'exemple d'utilisation de
- * fork qui crée un zombie
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-void usage() {
-  printf("Usage :\n");
-  printf("prog -p num\navec num entier\n");
-
-}
-
-int main (int argc, char *argv[])  {
-  pid_t pid;
-  char *endptr, *str;
-  int err;
-  int ch;
-  int priority;
-  while ((ch = getopt(argc, argv, "p:")) != -1) {
-    switch (ch) {
-    case 'p':
-      priority=(int) strtol(optarg, &endptr, 10);
-      if( (priority < 0) || (priority >20) ) {
-	printf("La priorité doit être comprise entre 0 et 20\n");
-      }
-      return(EXIT_FAILURE);
-      break;
-    case '?':
-    default:
-      usage();
-      return(EXIT_FAILURE);
-    }
-  }
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    // fils
-    printf("pid du zombie: %d\n",getpid());
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    sleep(50);
-    err=wait(NULL);
-    if(err!=0) {
-      perror("fork");
-      exit(EXIT_FAILURE);
-    }
-    printf("Fin du processus père [%d]\n",getpid());
-    return(EXIT_SUCCESS);
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork-orphan.c b/_static/src/Threads/S8-src/fork-orphan.c
deleted file mode 100644
index 751d5a123d9035862047b6308b1fc894eaef63af..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-orphan.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * fork-ophan.c
- *
- * Programme d'exemple d'utilisation de
- * fork avec fils orphelin
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-
-int main (int argc, char *argv[])  {
-  pid_t pid;
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    printf("Processus : %d, père : %d\n",getpid(),getppid());
-    fflush(stdout);
-    sleep(3);
-    printf("Processus : %d, père : %d\n",getpid(),getppid());
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    sleep(1);
-    printf("Fin du processus père [%d]\n",getpid());
-    return(EXIT_FAILURE);
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork-orphan.out b/_static/src/Threads/S8-src/fork-orphan.out
deleted file mode 100644
index 6f5395e9eb46edac55b814bb46d43ca9149d7990..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-orphan.out
+++ /dev/null
@@ -1,3 +0,0 @@
-Processus : 28750, père : 28749
-Fin du processus père [28749]
-Processus : 28750, père : 1
diff --git a/_static/src/Threads/S8-src/fork-perf.c b/_static/src/Threads/S8-src/fork-perf.c
deleted file mode 100644
index 3c330d9569d6b947e69c2f0c557656898257f01b..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-perf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/**************************************
- * fork-perf.c
- *
- * Programme d'exemple pour calculer le coût
- * de fork
- *
- *************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-#define N 100000
-
-int main (int argc, char *argv[])  {
-  int status;
-  pid_t pid;
-
-  for(int i=0;i<N;i++) {
-    pid=fork();
-    if (pid==-1) {
-      // erreur à l'exécution de fork
-      perror("fork");
-      exit(EXIT_FAILURE);
-    }
-    // pas d'erreur
-    if (pid==0) {
-      return(EXIT_SUCCESS);
-    }
-    else {
-      int fils=waitpid(pid,&status,0);
-      if(fils==-1) {
-	perror("wait");
-	exit(EXIT_FAILURE);
-      }
-      if(!WIFEXITED(status)) {
-	fprintf(stderr,"Erreur de waitpid\n");
-	exit(EXIT_FAILURE);
-      }
-    }
-  }
-  return(EXIT_SUCCESS);
-
-}
-
diff --git a/_static/src/Threads/S8-src/fork-pthread.c b/_static/src/Threads/S8-src/fork-pthread.c
deleted file mode 100644
index ebb9b6d6bd6e9580d7942c92af6167ba8d2a993b..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-pthread.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/**************************************
- * fork-pthread.c
- *
- * Programme d'exemple pour voir le contenu de /proc
- *
- *************************************/
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <sys/syscall.h>
-
-#define DELAY 600
-
-pid_t gettid() {
-    pid_t tid;
-    tid = syscall(SYS_gettid);
-    return tid;
-}
-
-
-void *func(void * param) {
-  int slept=DELAY;
-  printf("thread : %d\n",gettid());
-  fflush(stdout);
-  while((slept=sleep(slept))!=0) ;
-  pthread_exit(NULL);
-}
-
-int main (int argc, char *argv[])  {
-  int err;
-  pid_t pid;
-  int status;
-  pthread_t thread;
-  int slept=DELAY;
-  printf("père : %d\n",getpid());
-  fflush(stdout);
-  pid=fork();
-  if (pid==-1) {
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  if (pid==0) {
-    // fils
-    printf("fils : %d\n",getpid());
-    fflush(stdout);
-    while((slept=sleep(slept))!=0) ;
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // père
-    err=pthread_create(&(thread),NULL,&func,NULL);
-    if(err!=0) {
-      perror("pthread_create");
-      exit(EXIT_FAILURE);
-    }
-    err=pthread_join(thread,NULL);
-    if(err!=0) {
-      perror("pthread_join");
-      exit(EXIT_FAILURE);
-    }
-    int fils=waitpid(pid,&status,0);
-    if(fils==-1) {
-      perror("wait");
-      exit(EXIT_FAILURE);
-    }
-    if(!WIFEXITED(status)) {
-      fprintf(stderr,"Erreur de waitpid\n");
-      exit(EXIT_FAILURE);
-    }
-  }
-  return(EXIT_SUCCESS);
-}
-
diff --git a/_static/src/Threads/S8-src/fork-wait.c b/_static/src/Threads/S8-src/fork-wait.c
deleted file mode 100644
index 9d8fa3b903351bc0344b3a42bfc385eadb836675..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-wait.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/**************************************
- * fork-wait.c
- *
- * Programme d'exemple d'utilisation de
- * fork
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-
-int main (int argc, char *argv[])  {
-  int status;
-  pid_t pid;
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    sleep(8);
-    return(42);
-  }
-  else {
-    // processus père
-    int fils=waitpid(pid,&status,0);
-    if(fils==-1) {
-      perror("wait");
-      exit(EXIT_FAILURE);
-    }
-    if(WIFEXITED(status)) {
-      printf("Le fils %d s'est terminé correctement et a retourné la valeur %d\n",fils,WEXITSTATUS(status));
-      return(EXIT_SUCCESS);
-    }
-    else {
-      if( WIFSIGNALED(status)) {
-	printf("Le fils %d a été tué par le signal %d\n",fils,WTERMSIG(status));
-      }
-      return(EXIT_FAILURE);
-    }
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork-zombie.c b/_static/src/Threads/S8-src/fork-zombie.c
deleted file mode 100644
index 33959bf53a1bbcd70d980bd9fae5164fe48115d9..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork-zombie.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/**************************************
- * fork-zombie.c
- *
- * Programme d'exemple d'utilisation de
- * fork qui crée un zombie
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-
-int main (int argc, char *argv[])  {
-  pid_t pid;
-  int err;
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    // fin du fils
-    printf("pid du zombie: %d\n",getpid());
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    sleep(50);
-    err=wait(NULL);
-    if(err!=0) {
-      perror("fork");
-      exit(EXIT_FAILURE);
-    }
-    printf("Fin du processus père [%d]\n",getpid());
-    return(EXIT_SUCCESS);
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork.c b/_static/src/Threads/S8-src/fork.c
deleted file mode 100644
index 6cd78db0a9484b656e6b9710fc6ca1363bbe5165..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/**************************************
- * fork.c
- *
- * Programme d'exemple d'utilisation de
- * fork
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int g=0; // segment données
-
-int main (int argc, char *argv[])  {
-  int l=1252; // sur la pile
-  int *m;     // sur le heap
-  m=(int *) malloc(sizeof(int));
-  *m=-1;
-
-  pid_t pid;
-
-  pid=fork();
-
-  if (pid==-1) {
-    // erreur à l'exécution de fork
-    perror("fork");
-    exit(EXIT_FAILURE);
-  }
-  // pas d'erreur
-  if (pid==0) {
-    // processus fils
-    l++;
-    g++;
-    *m=17;
-    printf("Dans le processus fils g=%d, l=%d et *m=%d\n",g,l,*m);
-    free(m);
-    return(EXIT_SUCCESS);
-  }
-  else {
-    // processus père
-    sleep(2);
-    printf("Dans le processus père g=%d, l=%d et *m=%d\n",g,l,*m);
-    free(m);
-    // ...
-    return(EXIT_SUCCESS);
-  }
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/fork.out b/_static/src/Threads/S8-src/fork.out
deleted file mode 100644
index 1f71b8911b5f970a3e0012f03e3c4e800553bfbe..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/fork.out
+++ /dev/null
@@ -1,2 +0,0 @@
-Dans le processus fils g=1, l=1253 et *m=17
-Dans le processus père g=0, l=1252 et *m=-1
diff --git a/_static/src/Threads/S8-src/getpid.c b/_static/src/Threads/S8-src/getpid.c
deleted file mode 100644
index fddef731a947678c8a615b3bbfdddec52e9ea461..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/getpid.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * getpid.c
- *
- * Programme d'exemple de getpid
- *
- **************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-
-int main (int argc, char *argv[])  {
-  int pid=getpid();
-  int ppid=getppid();
-  printf("Processus %d, parent:%d\n",pid,ppid);
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/imath.c b/_static/src/Threads/S8-src/imath.c
deleted file mode 100644
index 3c2887a56e3763f57e5237fa94ab07081d4f2a3f..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/imath.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/**************************************
- * math.c
- *
- * Programme d'exemple d'utilisation de
- * la librairie math
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include "imax.h"
-
-int main (int argc, char *argv[])  {
-  int n1=1;
-  int n2=-3;
-  printf("Maximum : %d\n",imax(n1,n2));
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/imax.c b/_static/src/Threads/S8-src/imax.c
deleted file mode 100644
index 92b80fee674638cbf2c7ae9a52c0c1dbe7d5c4a7..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/imax.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/**************************************
- * imax.c
- *
- * Programme d'exemple d'utilisation de
- * librairie
- *
- *************************************/
-///AAA
-
-int imax(int i, int j) {
-  return ((i>j) ? i : j);
-
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/imax.h b/_static/src/Threads/S8-src/imax.h
deleted file mode 100644
index 444fb1ab002477eecfb88e226b1a2ae23436d657..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/imax.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/**************************************
- * imax.h
- *
- * Programme d'exemple d'utilisation de
- * librairie
- *
- *************************************/
-///AAA
-
-int imax(int,int);
-
-///BBB
diff --git a/_static/src/Threads/S8-src/math.c b/_static/src/Threads/S8-src/math.c
deleted file mode 100644
index 55e23123df634f6f0c075ecc23521a711731f397..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/math.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/**************************************
- * math.c
- *
- * Programme d'exemple d'utilisation de
- * la librairie math
- *
- *************************************/
-///AAA
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-
-int main (int argc, char *argv[])  {
-  double n1=1.0;
-  double n2=-3.14;
-  printf("Maximum : %f\n",fmax(n1,n2));
-
-  return(EXIT_SUCCESS);
-}
-///BBB
diff --git a/_static/src/Threads/S8-src/max.c b/_static/src/Threads/S8-src/max.c
deleted file mode 100644
index bab26965fb534d534034116f03af788642d01b79..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/max.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/**************************************
- * math.c
- *
- * Programme d'exemple d'utilisation de
- * la librairie math
- *
- *************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-
-int main (int argc, char *argv[])  {
-  double n1=1.0;
-  double n2=-3.14;
-  printf("Maximum : %f\n",fmax(n1,n2));
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S8-src/mini8.c b/_static/src/Threads/S8-src/mini8.c
deleted file mode 100644
index b69b1aefa12db155a77c248310b4078af838fcd1..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/mini8.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <limits.h>
-#include <time.h>
-
-/* Necessary for the correct compilation */
-#define _POSIX_C_SOURCE 199309L
-
-#define N_ITERATIONS	(100)
-#define N_CONSUMERS	(4)
-#define N_PRODUCERS	(2)
-#define N_RETRIEVES	((N_ITERATIONS) * (N_PRODUCERS) / (N_CONSUMERS))
-#define MIN(a, b)	((a) > (b) ? (b) : (a))
-
-/* A COMPLETER */
-
-/*
- * Insert val in the bounded-buffer. Should wait if there are no empty spaces
- * available.
- */
-void insert(int val)
-{
-	/* A COMPLETER */
-}
-
-/*
- * Returns and removes the next element from the bounded buffer.
- */
-int retrieve(void)
-{
-	/* A COMPLETER */
-	return -1;
-}
-
-
-void *producer(void *arg)
-{
-	int i, val;
-
-	for (i = 0; i < N_ITERATIONS; ++i) {
-		/* sleep for few miliseconds */
-		struct timespec sleep;
-		sleep.tv_sec = 0;
-		sleep.tv_nsec = (long) rand() % 100000000;
-		nanosleep(&sleep, NULL);
-
-		/* generate a value and insert it in the buffer */
-		val = abs(rand());
-		insert(val);
-	}
-	return NULL;
-}
-
-void *consumer(void *arg)
-{
-	int i, *min = (int *)arg;
-
-	for (i = 0; i < N_RETRIEVES; ++i) {
-		/* sleep for few miliseconds */
-		struct timespec sleep;
-		sleep.tv_sec = 0;
-		sleep.tv_nsec = (long) rand() % 100000000;
-		nanosleep(&sleep, NULL);
-
-		/* maintain the minimum value up to now */
-		*min = MIN(*min, retrieve());
-	}
-	return (void *)min;
-}
-
-int main (int argc, char const *argv[])
-{
-	int i, min = INT_MAX, *ret;
-	pthread_t producers[N_PRODUCERS];
-	pthread_t consumers[N_CONSUMERS];
-	int returns[N_CONSUMERS];
-	int err;
-
-	/* seed the PRNG */
-	srand(time(NULL));
-
-	/* A COMPLETER */
-
-	for (i = 0; i < N_PRODUCERS; ++i) {
-		err = pthread_create(&producers[i], NULL, producer, NULL);
-		if (err)
-			goto error;
-	}
-
-	for (i = 0; i < N_CONSUMERS; ++i) {
-		err = pthread_create(&consumers[i], NULL, consumer, &returns[i]);
-		if (err)
-			goto error;
-	}
-
-	for (i = 0; i < N_PRODUCERS; ++i) {
-		err = pthread_join(producers[i], NULL);
-		if (err)
-			goto error;
-	}
-
-	for (i = 0; i < N_CONSUMERS; ++i) {
-		err = pthread_join(consumers[i], (void **)&ret);
-		if (err)
-			goto error;
-		min = MIN(min, *ret);
-	}
-
-	printf("The minimal value generated is %d.\n", min);
-
-	return (EXIT_SUCCESS);
-
-error:
-	perror("Error happened:\n");
-	return (EXIT_FAILURE);
-}
diff --git a/_static/src/Threads/S8-src/pthread-perf.c b/_static/src/Threads/S8-src/pthread-perf.c
deleted file mode 100644
index 07772a2c21ab37b146401686b55c6945b23ba375..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/pthread-perf.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************
- * pthread-perf.c
- *
- * Programme d'exemple pour calculer le coût
- * de pthread
- *
- *************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <pthread.h>
-
-#define N 100000
-
-void *func(void * param) {
-  pthread_exit(NULL);
-}
-
-
-int main (int argc, char *argv[])  {
-  int err;
-  pthread_t thread;
-
-
-  for(int i=0;i<N;i++) {
-
-    err=pthread_create(&(thread),NULL,&func,NULL);
-    if(err!=0) {
-      perror("pthread_create");
-      exit(EXIT_FAILURE);
-    }
-    err=pthread_join(thread,NULL);
-    if(err!=0) {
-      perror("pthread_join");
-      exit(EXIT_FAILURE);
-    }
-  }
-  return(EXIT_SUCCESS);
-
-}
-
diff --git a/_static/src/Threads/S8-src/script.sh b/_static/src/Threads/S8-src/script.sh
deleted file mode 100755
index cfd6015e4989e6a37c97c0b8950c868f98b35761..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/script.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# script.sh
-if [ $# -ne 1 ]
-then
-    echo "Usage: `basename $0` fichier"
-    exit 1
-fi
-if [ -x ${1} ]
-then
-    head -1 $1 | grep "^#\!" >>/dev/null
-    if [ $? ]
-    then
-	echo "Script interprétable"
-	exit 0
-    else
-	echo "Script non-interprétable"
-	exit 1
-    fi
-else
-    echo "Bit x non mis dans les métadonnées"
-    exit 1
-fi
diff --git a/_static/src/Threads/S8-src/syscall.c b/_static/src/Threads/S8-src/syscall.c
deleted file mode 100644
index f102291addc712aefd597e9599441b81d9832c60..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/syscall.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/**************************************
- * syscall.c
- *
- * Programme d'exemple d'utilisation de syscall
- *
- **************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-
-
-int main (int argc, char *argv[])  {
-  int pid=getpid();
-  int pid2=syscall(SYS_getpgid);
-  printf("Processus %d, pid:%d\n",pid,pid2);
-
-  return(EXIT_SUCCESS);
-}
diff --git a/_static/src/Threads/S8-src/test.tail b/_static/src/Threads/S8-src/test.tail
deleted file mode 100755
index 242953177ecd4d6f101fe13221388c466b0081bf..0000000000000000000000000000000000000000
--- a/_static/src/Threads/S8-src/test.tail
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/tail -n +1
-Hello, world
-SINF1252