From d88fbb7a78b84bb7c1c461738803793438f35fde Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Tue, 20 Jun 2000 20:48:46 +0000 Subject: [PATCH] Make WritePrivateProfileSectionA care for "" and NULL as the string argument. New function PROFILE_DeleteAllKeys. --- files/profile.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/files/profile.c b/files/profile.c index 99d04f4f14..afbf8b0b18 100644 --- a/files/profile.c +++ b/files/profile.c @@ -392,6 +392,34 @@ static BOOL PROFILE_DeleteKey( PROFILESECTION **section, } +/*********************************************************************** + * PROFILE_DeleteAllKeys + * + * Delete all keys from a profile tree. + */ +void PROFILE_DeleteAllKeys( LPCSTR section_name) +{ + PROFILESECTION **section= &CurProfile->section; + while (*section) + { + if ((*section)->name && !strcasecmp( (*section)->name, section_name )) + { + PROFILEKEY **key = &(*section)->key; + while (*key) + { + PROFILEKEY *to_del = *key; + *key = to_del->next; + if (to_del->name) HeapFree( GetProcessHeap(), 0, to_del->name ); + if (to_del->value) HeapFree( GetProcessHeap(), 0, to_del->value); + HeapFree( GetProcessHeap(), 0, to_del ); + CurProfile->changed =TRUE; + } + } + section = &(*section)->next; + } +} + + /*********************************************************************** * PROFILE_Find * @@ -1386,9 +1414,13 @@ BOOL WINAPI WritePrivateProfileSectionA( LPCSTR section, if (PROFILE_Open( filename )) { if (!section && !string && !filename) PROFILE_ReleaseFile(); /* always return FALSE in this case */ + else if (!string) /* delete the named section*/ + ret = PROFILE_SetString(section,NULL,NULL); else { - while(*string){ - LPSTR buf=HEAP_strdupA( GetProcessHeap(), 0, string ); + PROFILE_DeleteAllKeys(section); + ret = TRUE; + while(*string) { + LPSTR buf=HEAP_strdupA( GetProcessHeap(), 0, string ); if((p=strchr( buf, '='))){ *p='\0'; ret = PROFILE_SetString( section, buf, p+1 ); -- 2.32.0.93.g670b81a890