diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index b3a82ed59be01cfa52833e4e8e5290e3c7241708..f1ea6e3347cad04e202bfcecf89fa109117bd34e 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -272,6 +272,22 @@ BOOL iniRemoveSection(str_list_t* list, const char* section)
 	return(TRUE);
 }
 
+BOOL iniRenameSection(str_list_t* list, const char* section, const char* newname)
+{
+	char	str[INI_MAX_LINE_LEN];
+	size_t	i;
+
+	if(section==ROOT_SECTION)
+		return(FALSE);
+
+	i=find_section_index(*list,section);
+	if((*list)[i]==NULL)	/* not found */
+		return(FALSE);
+
+	sprintf(str,"[%s]",newname);
+	return(strListReplace(*list, i, str)!=NULL);
+}
+
 size_t iniAddSection(str_list_t* list, const char* section
 					,ini_style_t* style)
 {
diff --git a/src/xpdev/ini_file.h b/src/xpdev/ini_file.h
index a12958590b3be94cf13dbf8884079f791557e2fc..bc2d999e854ac152e85e8a3e8292c02eb6ad5314 100644
--- a/src/xpdev/ini_file.h
+++ b/src/xpdev/ini_file.h
@@ -126,6 +126,7 @@ BOOL		iniValueExists(str_list_t*, const char* section, const char* key);
 BOOL		iniRemoveKey(str_list_t*, const char* section, const char* key);
 BOOL		iniRemoveValue(str_list_t*, const char* section, const char* key);
 BOOL		iniRemoveSection(str_list_t*, const char* section);
+BOOL		iniRenameSection(str_list_t*, const char* section, const char* newname);
 
 #if defined(__cplusplus)
 }