Index: /trunk/ChangeLog
===================================================================
--- /trunk/ChangeLog	(revision 1116)
+++ /trunk/ChangeLog	(revision 1117)
@@ -8,4 +8,5 @@
 ========
  * new: xcache.disable_on_crash = Off
+ * new: xcache.coverager_autostart = On
 
 ChangeLog
@@ -14,4 +15,5 @@
  * closes #73: warn for improper PHP_FCGI_CHILDREN setting fcgi mode (>=PHP_5_3)
  * closes #174: updated api to support "clear all cache"
+ * fixed #39: ini_set never work for xcache.coverager setting. use API instead
  * code refactor
    * uses extension to load XCache. load via zend_extension is unsupported
Index: /trunk/mod_coverager/xc_coverager.c
===================================================================
--- /trunk/mod_coverager/xc_coverager.c	(revision 1116)
+++ /trunk/mod_coverager/xc_coverager.c	(revision 1117)
@@ -245,10 +245,10 @@
 static void xc_coverager_enable(TSRMLS_D) /* {{{ */
 {
-	XG(coverage_enabled) = 1;
+	XG(coverager_enabled) = 1;
 }
 /* }}} */
 static void xc_coverager_disable(TSRMLS_D) /* {{{ */
 {
-	XG(coverage_enabled) = 0;
+	XG(coverager_enabled) = 0;
 }
 /* }}} */
@@ -257,5 +257,7 @@
 {
 	if (XG(coverager)) {
-		xc_coverager_enable(TSRMLS_C);
+		if (XG(coverager_autostart)) {
+			xc_coverager_enable(TSRMLS_C);
+		}
 #ifdef ZEND_COMPILE_EXTENDED_INFO
 		CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
@@ -265,5 +267,5 @@
 	}
 	else {
-		XG(coverage_enabled) = 0;
+		XG(coverager_enabled) = 0;
 	}
 	return SUCCESS;
@@ -469,5 +471,5 @@
 	TSRMLS_FETCH();
 
-	if (XG(coverages) && XG(coverage_enabled)) {
+	if (XG(coverages) && XG(coverager_enabled)) {
 		int size = xc_coverager_get_op_array_size_no_tail(op_array);
 		int oplineno = (*EG(opline_ptr)) - op_array->opcodes;
@@ -631,5 +633,6 @@
 /* {{{ PHP_INI */
 PHP_INI_BEGIN()
-	STD_PHP_INI_BOOLEAN("xcache.coverager"      ,        "0", PHP_INI_ALL,    OnUpdateBool,         coverager,         zend_xcache_globals, xcache_globals)
+	STD_PHP_INI_BOOLEAN("xcache.coverager",              "0", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, coverager,           zend_xcache_globals, xcache_globals)
+	STD_PHP_INI_BOOLEAN("xcache.coverager_autostart",    "1", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, coverager_autostart, zend_xcache_globals, xcache_globals)
 	PHP_INI_ENTRY1     ("xcache.coveragedump_directory",  "", PHP_INI_SYSTEM, xcache_OnUpdateDummy, NULL)
 PHP_INI_END()
@@ -644,5 +647,5 @@
 		covdumpdir = NULL;
 	}
-	php_info_print_table_row(2, "Coverage Auto Dumper", XG(coverager) && covdumpdir ? "enabled" : "disabled");
+	php_info_print_table_row(2, "Coverage Started", XG(coverager_started) && covdumpdir ? "On" : "Off");
 	php_info_print_table_end();
 
Index: /trunk/xcache-zh-gb2312.ini
===================================================================
--- /trunk/xcache-zh-gb2312.ini	(revision 1116)
+++ /trunk/xcache-zh-gb2312.ini	(revision 1117)
@@ -65,9 +65,10 @@
 [xcache.coverager]
 ; ±¾¹¦ÄÜ¿ªÆôºó½µµÍÔËÐÐÐÔÄÜ
-; ¾¡ÔÚ xcache.coverager == On && xcache.coveragedump_directory == "·Ç¿ÕÖµ" Ê±±¾¹¦ÄÜ²Å»áÆôÓÃ
+; ½öÔÚ xcache.coverager == On && xcache.coveragedump_directory == "·Ç¿ÕÖµ" Ê±±¾¹¦ÄÜ²Å»áÆôÓÃ
 
 ; per request settings. ¿ÉÒÔ ini_set, .htaccess µÈ
 ; ÆôÓÃ´úÂëÁ÷³Ì¸²¸ÇÃæÐÅÏ¢²É¼¯ÒÔ¼° xcache_coverager_start/stop/get/clean() µÈº¯Êý
-xcache.coverager =          Off
+xcache.coverager =           Off
+xcache.coverager_autostart =  On
 
 ; ½öÔÚ php ini ÎÄ¼þÄÚÉèÖÃ
Index: /trunk/xcache.ini
===================================================================
--- /trunk/xcache.ini	(revision 1116)
+++ /trunk/xcache.ini	(revision 1117)
@@ -65,9 +65,10 @@
 [xcache.coverager]
 ; enabling this feature will impact performance
-; enable only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"
+; enabled only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"
 
 ; per request settings. can ini_set, .htaccess etc
 ; enable coverage data collecting and xcache_coverager_start/stop/get/clean() functions
-xcache.coverager =          Off
+xcache.coverager =           Off
+xcache.coverager_autostart =  On
 
 ; set in php ini file only
Index: /trunk/xcache_globals.h
===================================================================
--- /trunk/xcache_globals.h	(revision 1116)
+++ /trunk/xcache_globals.h	(revision 1117)
@@ -11,5 +11,6 @@
 #ifdef HAVE_XCACHE_COVERAGER
 	zend_bool coverager;
-	zend_bool coverage_enabled;
+	zend_bool coverager_autostart;
+	zend_bool coverager_enabled;
 	HashTable *coverages;  /* coverages[file][line] = times */
 #endif
