diff --git a/.gitattributes b/.gitattributes
index 9e9a7182a919bca3da58b8dc139c7bf620cf3149..763ee0c525ad05667408cb8740785b1ca76d2b72 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3,6 +3,17 @@ IMG/logo_spip.jpg -text
 /INSTALL.txt -text
 dist/choix_mots.html -text
 dist/style_prive.html -text
+ecrire/action/autoriser.php -text
+ecrire/action/ical.php -text
+ecrire/action/iconifier.php -text
+ecrire/action/instituer.php -text
+ecrire/action/joindre.php -text
+ecrire/action/purger.php -text
+ecrire/action/redirect.php -text
+ecrire/action/supprimer.php -text
+ecrire/action/test_dirs.php -text
+ecrire/action/tester.php -text
+ecrire/action/tourner.php -text
 ecrire/charsets/cp1251.php -text
 ecrire/charsets/cp1256.php -text
 ecrire/charsets/html.php -text
@@ -13,75 +24,64 @@ ecrire/charsets/iso-8859-9.php -text
 ecrire/charsets/mathml.php -text
 ecrire/charsets/translit.php -text
 ecrire/charsets/translitcomplexe.php -text
-ecrire/exec_accueil.php -text
-ecrire/exec_admin_effacer.php -text
-ecrire/exec_admin_plugin.php -text
-ecrire/exec_admin_repair.php -text
-ecrire/exec_admin_tech.php -text
-ecrire/exec_admin_vider.php -text
-ecrire/exec_aide_index.php -text
-ecrire/exec_ajax_page.php -text
-ecrire/exec_articles.php -text
-ecrire/exec_articles_edit.php -text
-ecrire/exec_articles_forum.php -text
-ecrire/exec_articles_ortho.php -text
-ecrire/exec_articles_page.php -text
-ecrire/exec_articles_tous.php -text
-ecrire/exec_articles_versions.php -text
-ecrire/exec_auteur_infos.php -text
-ecrire/exec_auteurs.php -text
-ecrire/exec_auteurs_edit.php -text
-ecrire/exec_breves.php -text
-ecrire/exec_breves_edit.php -text
-ecrire/exec_breves_voir.php -text
-ecrire/exec_brouteur.php -text
-ecrire/exec_brouteur_frame.php -text
-ecrire/exec_config_contenu.php -text
-ecrire/exec_config_fonctions.php -text
-ecrire/exec_config_lang.php -text
-ecrire/exec_config_multilang.php -text
-ecrire/exec_configuration.php -text
-ecrire/exec_controle_forum.php -text
-ecrire/exec_controle_petition.php -text
-ecrire/exec_convert_utf8.php -text
-ecrire/exec_delete_all.php -text
-ecrire/exec_documents_liste.php -text
-ecrire/exec_export_all.php -text
-ecrire/exec_forum_admin.php -text
-ecrire/exec_forum_envoi.php -text
-ecrire/exec_import_all.php -text
-ecrire/exec_install.php -text
-ecrire/exec_js_menu_rubriques.php -text
-ecrire/exec_lang_raccourcis.php -text
-ecrire/exec_message.php -text
-ecrire/exec_message_edit.php -text
-ecrire/exec_messagerie.php -text
-ecrire/exec_mots_edit.php -text
-ecrire/exec_mots_tous.php -text
-ecrire/exec_mots_type.php -text
-ecrire/exec_naviguer.php -text
-ecrire/exec_recherche.php -text
-ecrire/exec_rubriques_edit.php -text
-ecrire/exec_sites_edit.php -text
-ecrire/exec_sites_tous.php -text
-ecrire/exec_spip_action_autoriser.php -text
-ecrire/exec_spip_action_ical.php -text
-ecrire/exec_spip_action_iconifier.php -text
-ecrire/exec_spip_action_instituer.php -text
-ecrire/exec_spip_action_joindre.php -text
-ecrire/exec_spip_action_purger.php -text
-ecrire/exec_spip_action_redirect.php -text
-ecrire/exec_spip_action_supprimer.php -text
-ecrire/exec_spip_action_test_dirs.php -text
-ecrire/exec_spip_action_tester.php -text
-ecrire/exec_spip_action_tourner.php -text
-ecrire/exec_statistiques_lang.php -text
-ecrire/exec_statistiques_referers.php -text
-ecrire/exec_statistiques_repartition.php -text
-ecrire/exec_statistiques_svg.php -text
-ecrire/exec_statistiques_visites.php -text
-ecrire/exec_synchro.php -text
-ecrire/exec_upgrade.php -text
+ecrire/exec/accueil.php -text
+ecrire/exec/admin_effacer.php -text
+ecrire/exec/admin_plugin.php -text
+ecrire/exec/admin_repair.php -text
+ecrire/exec/admin_tech.php -text
+ecrire/exec/admin_vider.php -text
+ecrire/exec/aide_index.php -text
+ecrire/exec/ajax_page.php -text
+ecrire/exec/articles.php -text
+ecrire/exec/articles_edit.php -text
+ecrire/exec/articles_forum.php -text
+ecrire/exec/articles_ortho.php -text
+ecrire/exec/articles_page.php -text
+ecrire/exec/articles_tous.php -text
+ecrire/exec/articles_versions.php -text
+ecrire/exec/auteur_infos.php -text
+ecrire/exec/auteurs.php -text
+ecrire/exec/auteurs_edit.php -text
+ecrire/exec/breves.php -text
+ecrire/exec/breves_edit.php -text
+ecrire/exec/breves_voir.php -text
+ecrire/exec/brouteur.php -text
+ecrire/exec/brouteur_frame.php -text
+ecrire/exec/config_contenu.php -text
+ecrire/exec/config_fonctions.php -text
+ecrire/exec/config_lang.php -text
+ecrire/exec/config_multilang.php -text
+ecrire/exec/configuration.php -text
+ecrire/exec/controle_forum.php -text
+ecrire/exec/controle_petition.php -text
+ecrire/exec/convert_utf8.php -text
+ecrire/exec/delete_all.php -text
+ecrire/exec/documents_liste.php -text
+ecrire/exec/export_all.php -text
+ecrire/exec/forum_admin.php -text
+ecrire/exec/forum_envoi.php -text
+ecrire/exec/import_all.php -text
+ecrire/exec/install.php -text
+ecrire/exec/js_menu_rubriques.php -text
+ecrire/exec/lang_raccourcis.php -text
+ecrire/exec/message.php -text
+ecrire/exec/message_edit.php -text
+ecrire/exec/messagerie.php -text
+ecrire/exec/mots_edit.php -text
+ecrire/exec/mots_tous.php -text
+ecrire/exec/mots_type.php -text
+ecrire/exec/naviguer.php -text
+ecrire/exec/recherche.php -text
+ecrire/exec/rubriques_edit.php -text
+ecrire/exec/sites_edit.php -text
+ecrire/exec/sites_tous.php -text
+ecrire/exec/statistiques_lang.php -text
+ecrire/exec/statistiques_referers.php -text
+ecrire/exec/statistiques_repartition.php -text
+ecrire/exec/statistiques_svg.php -text
+ecrire/exec/statistiques_visites.php -text
+ecrire/exec/synchro.php -text
+ecrire/exec/upgrade.php -text
 ecrire/img_pack/admin-12.gif -text
 ecrire/img_pack/administration-24.gif -text
 ecrire/img_pack/administration-48.png -text
diff --git a/ecrire/exec_spip_action_autoriser.php b/ecrire/action/autoriser.php
similarity index 100%
rename from ecrire/exec_spip_action_autoriser.php
rename to ecrire/action/autoriser.php
diff --git a/ecrire/exec_spip_action_cookie.php b/ecrire/action/cookie.php
similarity index 100%
rename from ecrire/exec_spip_action_cookie.php
rename to ecrire/action/cookie.php
diff --git a/ecrire/exec_spip_action_ical.php b/ecrire/action/ical.php
similarity index 100%
rename from ecrire/exec_spip_action_ical.php
rename to ecrire/action/ical.php
diff --git a/ecrire/exec_spip_action_iconifier.php b/ecrire/action/iconifier.php
similarity index 100%
rename from ecrire/exec_spip_action_iconifier.php
rename to ecrire/action/iconifier.php
diff --git a/ecrire/exec_spip_action_inscription.php b/ecrire/action/inscription.php
similarity index 100%
rename from ecrire/exec_spip_action_inscription.php
rename to ecrire/action/inscription.php
diff --git a/ecrire/exec_spip_action_instituer.php b/ecrire/action/instituer.php
similarity index 100%
rename from ecrire/exec_spip_action_instituer.php
rename to ecrire/action/instituer.php
diff --git a/ecrire/exec_spip_action_joindre.php b/ecrire/action/joindre.php
similarity index 100%
rename from ecrire/exec_spip_action_joindre.php
rename to ecrire/action/joindre.php
diff --git a/ecrire/exec_spip_action_pass.php b/ecrire/action/pass.php
similarity index 100%
rename from ecrire/exec_spip_action_pass.php
rename to ecrire/action/pass.php
diff --git a/ecrire/exec_spip_action_purger.php b/ecrire/action/purger.php
similarity index 100%
rename from ecrire/exec_spip_action_purger.php
rename to ecrire/action/purger.php
diff --git a/ecrire/exec_spip_action_redirect.php b/ecrire/action/redirect.php
similarity index 100%
rename from ecrire/exec_spip_action_redirect.php
rename to ecrire/action/redirect.php
diff --git a/ecrire/exec_spip_action_rss.php b/ecrire/action/rss.php
similarity index 100%
rename from ecrire/exec_spip_action_rss.php
rename to ecrire/action/rss.php
diff --git a/ecrire/exec_spip_action_supprimer.php b/ecrire/action/supprimer.php
similarity index 100%
rename from ecrire/exec_spip_action_supprimer.php
rename to ecrire/action/supprimer.php
diff --git a/ecrire/exec_spip_action_test_dirs.php b/ecrire/action/test_dirs.php
similarity index 100%
rename from ecrire/exec_spip_action_test_dirs.php
rename to ecrire/action/test_dirs.php
diff --git a/ecrire/exec_spip_action_tester.php b/ecrire/action/tester.php
similarity index 100%
rename from ecrire/exec_spip_action_tester.php
rename to ecrire/action/tester.php
diff --git a/ecrire/exec_spip_action_tourner.php b/ecrire/action/tourner.php
similarity index 100%
rename from ecrire/exec_spip_action_tourner.php
rename to ecrire/action/tourner.php
diff --git a/ecrire/exec_accueil.php b/ecrire/exec/accueil.php
similarity index 100%
rename from ecrire/exec_accueil.php
rename to ecrire/exec/accueil.php
diff --git a/ecrire/exec_admin_effacer.php b/ecrire/exec/admin_effacer.php
similarity index 100%
rename from ecrire/exec_admin_effacer.php
rename to ecrire/exec/admin_effacer.php
diff --git a/ecrire/exec_admin_plugin.php b/ecrire/exec/admin_plugin.php
similarity index 100%
rename from ecrire/exec_admin_plugin.php
rename to ecrire/exec/admin_plugin.php
diff --git a/ecrire/exec_admin_repair.php b/ecrire/exec/admin_repair.php
similarity index 100%
rename from ecrire/exec_admin_repair.php
rename to ecrire/exec/admin_repair.php
diff --git a/ecrire/exec_admin_tech.php b/ecrire/exec/admin_tech.php
similarity index 100%
rename from ecrire/exec_admin_tech.php
rename to ecrire/exec/admin_tech.php
diff --git a/ecrire/exec_admin_vider.php b/ecrire/exec/admin_vider.php
similarity index 100%
rename from ecrire/exec_admin_vider.php
rename to ecrire/exec/admin_vider.php
diff --git a/ecrire/exec_aide_index.php b/ecrire/exec/aide_index.php
similarity index 100%
rename from ecrire/exec_aide_index.php
rename to ecrire/exec/aide_index.php
diff --git a/ecrire/exec_ajax_page.php b/ecrire/exec/ajax_page.php
similarity index 100%
rename from ecrire/exec_ajax_page.php
rename to ecrire/exec/ajax_page.php
diff --git a/ecrire/exec_articles.php b/ecrire/exec/articles.php
similarity index 100%
rename from ecrire/exec_articles.php
rename to ecrire/exec/articles.php
diff --git a/ecrire/exec_articles_edit.php b/ecrire/exec/articles_edit.php
similarity index 100%
rename from ecrire/exec_articles_edit.php
rename to ecrire/exec/articles_edit.php
diff --git a/ecrire/exec_articles_forum.php b/ecrire/exec/articles_forum.php
similarity index 100%
rename from ecrire/exec_articles_forum.php
rename to ecrire/exec/articles_forum.php
diff --git a/ecrire/exec_articles_ortho.php b/ecrire/exec/articles_ortho.php
similarity index 100%
rename from ecrire/exec_articles_ortho.php
rename to ecrire/exec/articles_ortho.php
diff --git a/ecrire/exec_articles_page.php b/ecrire/exec/articles_page.php
similarity index 100%
rename from ecrire/exec_articles_page.php
rename to ecrire/exec/articles_page.php
diff --git a/ecrire/exec_articles_tous.php b/ecrire/exec/articles_tous.php
similarity index 100%
rename from ecrire/exec_articles_tous.php
rename to ecrire/exec/articles_tous.php
diff --git a/ecrire/exec_articles_versions.php b/ecrire/exec/articles_versions.php
similarity index 100%
rename from ecrire/exec_articles_versions.php
rename to ecrire/exec/articles_versions.php
diff --git a/ecrire/exec_auteur_infos.php b/ecrire/exec/auteur_infos.php
similarity index 100%
rename from ecrire/exec_auteur_infos.php
rename to ecrire/exec/auteur_infos.php
diff --git a/ecrire/exec_auteurs.php b/ecrire/exec/auteurs.php
similarity index 100%
rename from ecrire/exec_auteurs.php
rename to ecrire/exec/auteurs.php
diff --git a/ecrire/exec_auteurs_edit.php b/ecrire/exec/auteurs_edit.php
similarity index 100%
rename from ecrire/exec_auteurs_edit.php
rename to ecrire/exec/auteurs_edit.php
diff --git a/ecrire/exec_auth.php b/ecrire/exec/auth.php
similarity index 100%
rename from ecrire/exec_auth.php
rename to ecrire/exec/auth.php
diff --git a/ecrire/exec_breves.php b/ecrire/exec/breves.php
similarity index 100%
rename from ecrire/exec_breves.php
rename to ecrire/exec/breves.php
diff --git a/ecrire/exec_breves_edit.php b/ecrire/exec/breves_edit.php
similarity index 100%
rename from ecrire/exec_breves_edit.php
rename to ecrire/exec/breves_edit.php
diff --git a/ecrire/exec_breves_voir.php b/ecrire/exec/breves_voir.php
similarity index 100%
rename from ecrire/exec_breves_voir.php
rename to ecrire/exec/breves_voir.php
diff --git a/ecrire/exec_brouteur.php b/ecrire/exec/brouteur.php
similarity index 100%
rename from ecrire/exec_brouteur.php
rename to ecrire/exec/brouteur.php
diff --git a/ecrire/exec_brouteur_frame.php b/ecrire/exec/brouteur_frame.php
similarity index 100%
rename from ecrire/exec_brouteur_frame.php
rename to ecrire/exec/brouteur_frame.php
diff --git a/ecrire/exec_calendrier.php b/ecrire/exec/calendrier.php
similarity index 100%
rename from ecrire/exec_calendrier.php
rename to ecrire/exec/calendrier.php
diff --git a/ecrire/exec_config_contenu.php b/ecrire/exec/config_contenu.php
similarity index 100%
rename from ecrire/exec_config_contenu.php
rename to ecrire/exec/config_contenu.php
diff --git a/ecrire/exec_config_fonctions.php b/ecrire/exec/config_fonctions.php
similarity index 100%
rename from ecrire/exec_config_fonctions.php
rename to ecrire/exec/config_fonctions.php
diff --git a/ecrire/exec_config_lang.php b/ecrire/exec/config_lang.php
similarity index 100%
rename from ecrire/exec_config_lang.php
rename to ecrire/exec/config_lang.php
diff --git a/ecrire/exec_config_multilang.php b/ecrire/exec/config_multilang.php
similarity index 100%
rename from ecrire/exec_config_multilang.php
rename to ecrire/exec/config_multilang.php
diff --git a/ecrire/exec_configuration.php b/ecrire/exec/configuration.php
similarity index 100%
rename from ecrire/exec_configuration.php
rename to ecrire/exec/configuration.php
diff --git a/ecrire/exec_controle_forum.php b/ecrire/exec/controle_forum.php
similarity index 100%
rename from ecrire/exec_controle_forum.php
rename to ecrire/exec/controle_forum.php
diff --git a/ecrire/exec_controle_petition.php b/ecrire/exec/controle_petition.php
similarity index 100%
rename from ecrire/exec_controle_petition.php
rename to ecrire/exec/controle_petition.php
diff --git a/ecrire/exec_convert_utf8.php b/ecrire/exec/convert_utf8.php
similarity index 100%
rename from ecrire/exec_convert_utf8.php
rename to ecrire/exec/convert_utf8.php
diff --git a/ecrire/exec_delete_all.php b/ecrire/exec/delete_all.php
similarity index 100%
rename from ecrire/exec_delete_all.php
rename to ecrire/exec/delete_all.php
diff --git a/ecrire/exec_documents_liste.php b/ecrire/exec/documents_liste.php
similarity index 100%
rename from ecrire/exec_documents_liste.php
rename to ecrire/exec/documents_liste.php
diff --git a/ecrire/exec_export.php b/ecrire/exec/export.php
similarity index 100%
rename from ecrire/exec_export.php
rename to ecrire/exec/export.php
diff --git a/ecrire/exec_export_all.php b/ecrire/exec/export_all.php
similarity index 100%
rename from ecrire/exec_export_all.php
rename to ecrire/exec/export_all.php
diff --git a/ecrire/exec_forum_admin.php b/ecrire/exec/forum_admin.php
similarity index 100%
rename from ecrire/exec_forum_admin.php
rename to ecrire/exec/forum_admin.php
diff --git a/ecrire/exec_forum_envoi.php b/ecrire/exec/forum_envoi.php
similarity index 100%
rename from ecrire/exec_forum_envoi.php
rename to ecrire/exec/forum_envoi.php
diff --git a/ecrire/exec_import_all.php b/ecrire/exec/import_all.php
similarity index 100%
rename from ecrire/exec_import_all.php
rename to ecrire/exec/import_all.php
diff --git a/ecrire/exec_install.php b/ecrire/exec/install.php
similarity index 100%
rename from ecrire/exec_install.php
rename to ecrire/exec/install.php
diff --git a/ecrire/exec_js_menu_rubriques.php b/ecrire/exec/js_menu_rubriques.php
similarity index 100%
rename from ecrire/exec_js_menu_rubriques.php
rename to ecrire/exec/js_menu_rubriques.php
diff --git a/ecrire/exec_lang_raccourcis.php b/ecrire/exec/lang_raccourcis.php
similarity index 100%
rename from ecrire/exec_lang_raccourcis.php
rename to ecrire/exec/lang_raccourcis.php
diff --git a/ecrire/exec_message.php b/ecrire/exec/message.php
similarity index 100%
rename from ecrire/exec_message.php
rename to ecrire/exec/message.php
diff --git a/ecrire/exec_message_edit.php b/ecrire/exec/message_edit.php
similarity index 100%
rename from ecrire/exec_message_edit.php
rename to ecrire/exec/message_edit.php
diff --git a/ecrire/exec_messagerie.php b/ecrire/exec/messagerie.php
similarity index 100%
rename from ecrire/exec_messagerie.php
rename to ecrire/exec/messagerie.php
diff --git a/ecrire/exec_mots_edit.php b/ecrire/exec/mots_edit.php
similarity index 100%
rename from ecrire/exec_mots_edit.php
rename to ecrire/exec/mots_edit.php
diff --git a/ecrire/exec_mots_tous.php b/ecrire/exec/mots_tous.php
similarity index 100%
rename from ecrire/exec_mots_tous.php
rename to ecrire/exec/mots_tous.php
diff --git a/ecrire/exec_mots_type.php b/ecrire/exec/mots_type.php
similarity index 100%
rename from ecrire/exec_mots_type.php
rename to ecrire/exec/mots_type.php
diff --git a/ecrire/exec_naviguer.php b/ecrire/exec/naviguer.php
similarity index 100%
rename from ecrire/exec_naviguer.php
rename to ecrire/exec/naviguer.php
diff --git a/ecrire/exec_recherche.php b/ecrire/exec/recherche.php
similarity index 100%
rename from ecrire/exec_recherche.php
rename to ecrire/exec/recherche.php
diff --git a/ecrire/exec_rubriques_edit.php b/ecrire/exec/rubriques_edit.php
similarity index 100%
rename from ecrire/exec_rubriques_edit.php
rename to ecrire/exec/rubriques_edit.php
diff --git a/ecrire/exec_sites.php b/ecrire/exec/sites.php
similarity index 100%
rename from ecrire/exec_sites.php
rename to ecrire/exec/sites.php
diff --git a/ecrire/exec_sites_edit.php b/ecrire/exec/sites_edit.php
similarity index 100%
rename from ecrire/exec_sites_edit.php
rename to ecrire/exec/sites_edit.php
diff --git a/ecrire/exec_sites_tous.php b/ecrire/exec/sites_tous.php
similarity index 100%
rename from ecrire/exec_sites_tous.php
rename to ecrire/exec/sites_tous.php
diff --git a/ecrire/exec_statistiques_lang.php b/ecrire/exec/statistiques_lang.php
similarity index 100%
rename from ecrire/exec_statistiques_lang.php
rename to ecrire/exec/statistiques_lang.php
diff --git a/ecrire/exec_statistiques_referers.php b/ecrire/exec/statistiques_referers.php
similarity index 100%
rename from ecrire/exec_statistiques_referers.php
rename to ecrire/exec/statistiques_referers.php
diff --git a/ecrire/exec_statistiques_repartition.php b/ecrire/exec/statistiques_repartition.php
similarity index 100%
rename from ecrire/exec_statistiques_repartition.php
rename to ecrire/exec/statistiques_repartition.php
diff --git a/ecrire/exec_statistiques_svg.php b/ecrire/exec/statistiques_svg.php
similarity index 100%
rename from ecrire/exec_statistiques_svg.php
rename to ecrire/exec/statistiques_svg.php
diff --git a/ecrire/exec_statistiques_visites.php b/ecrire/exec/statistiques_visites.php
similarity index 100%
rename from ecrire/exec_statistiques_visites.php
rename to ecrire/exec/statistiques_visites.php
diff --git a/ecrire/exec_suivi_revisions.php b/ecrire/exec/suivi_revisions.php
similarity index 100%
rename from ecrire/exec_suivi_revisions.php
rename to ecrire/exec/suivi_revisions.php
diff --git a/ecrire/exec_synchro.php b/ecrire/exec/synchro.php
similarity index 100%
rename from ecrire/exec_synchro.php
rename to ecrire/exec/synchro.php
diff --git a/ecrire/exec_tidy.php b/ecrire/exec/tidy.php
similarity index 100%
rename from ecrire/exec_tidy.php
rename to ecrire/exec/tidy.php
diff --git a/ecrire/exec_upgrade.php b/ecrire/exec/upgrade.php
similarity index 100%
rename from ecrire/exec_upgrade.php
rename to ecrire/exec/upgrade.php
diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php
index cc32c43bb134408689690479d9f23cbcf29ca65a..1fabcf0be4b34a65b776c1361c8975ff9f026b15 100644
--- a/ecrire/inc_utils.php
+++ b/ecrire/inc_utils.php
@@ -55,29 +55,17 @@ function include_ecrire($file, $silence=false) {
 // charge un fichier perso ou, a defaut, standard
 // et retourne si elle existe le nom de la fonction homonyme, ou de suffixe _dist
 
-function include_fonction($nom) {
-	$inc = ("exec_" . $nom  . '.php');
-	$f = find_in_path($inc);
-	if ($f) {
-		if (!$GLOBALS['included_files'][$f]++) include($f);
-		#spip_log("surcharge de $nom trouvee dans $f");
-	} else {
-		$f = (defined(' _DIR_INCLUDE') ? _DIR_INCLUDE : _DIR_RESTREINT)
-			. $inc;
-		if (is_readable($f)) {
-			if (!$GLOBALS['included_files'][$f]++) include($f);
-		} else {
-		    $inc = "";
-		}
-	}
+function include_fonction($nom, $dossier='exec') {
+	if(!preg_match(',^[a-z0-9_-]+$,', $nom)) return;
+	$inc = include_spip($dossier.'/'.$nom);
 	if (function_exists($nom))
 		return $nom;
 	elseif (function_exists($f = $nom . "_dist"))
 		return $f;
 	else {
-	  spip_log("fonction $nom indisponible" .
-		   ($inc ? "" : "(aucun fichier exec_$nom disponible)"));
-	  exit;
+		spip_log("fonction $nom indisponible" .
+			($inc ? "" : "(fichier $dossier/$nom absent)"));
+		exit;
 	}
 }
 
@@ -85,9 +73,10 @@ function include_fonction($nom) {
 // une fonction destinee a remplacer include_ecrire, surchargeable
 // par $surcharge['inc_truc'] = '/chemin/vers/truc.php'
 //
-function include_spip($f) {
+function include_spip($f, $include = true) {
 	// deja charge (nom) ?
-	if (@$GLOBALS['included_files'][$f]++) return true;
+	if (isset($GLOBALS['included_files'][$f]))
+		return @$GLOBALS['included_files'][$f];
 
 	// Hack pour pouvoir appeler cette fonction depuis mes_options.
 	define('_DIR_INCLUDE', _DIR_RESTREINT);
@@ -100,14 +89,17 @@ function include_spip($f) {
 	// sinon, chercher dans le chemin
 	AND !$s = find_in_path($f . '.php')
 	AND !$s = find_in_path($f . '.php3'))
-		return false;
+		return $GLOBALS['included_files'][$f] = false;
 
 	// deja charge (chemin complet) ?
-	if ($GLOBALS['included_files'][$s]++) return true;
+	if (isset($GLOBALS['included_files'][$s]))
+		return $GLOBALS['included_files'][$f] = $GLOBALS['included_files'][$s];
 
-	// alors on le charge
-	include($s);
-	return true;
+	// alors on le charge (sauf si on ne voulait que son chemin)
+	if ($include) {
+		include($s);
+	}
+	return $GLOBALS['included_files'][$f] = $GLOBALS['included_files'][$s] = $s;
 }
 
 // un pipeline est lie a une action et une valeur
diff --git a/ecrire/page.php b/ecrire/page.php
index 18dface618443a598006766f4043c9b61a21b58a..3ef041a3793c5deff13894064cc86b28ce984d3b 100644
--- a/ecrire/page.php
+++ b/ecrire/page.php
@@ -22,7 +22,7 @@ if (!function_exists('find_in_path')) {
 
 // Est-ce une action ?
 if ($action = _request('action')) {
-	$var_f = include_fonction('spip_action_' . $action);
+	$var_f = include_fonction($action, 'action');
 	$var_f();
 	if ($redirect) redirige_par_entete(urldecode($redirect));
 	exit;