* writes cIniline with cxGroupName of cLineType to email.ini file Parameter cxGroupName, cLineType, cIniLine PRIVATE ALL #DEFINE cIniFile "EMAIL.INI" CREATE CURSOR IniFile (GroupName C(50), TextLine C(100), LINENO N(10)) INDEX ON LINENO TAG LINENO FileHandle = FOPEN(cIniFile, 2) * get first GroupName line - there may be blank initial lines cTextLine = "" DO WHILE !FEOF(FileHandle) AND LEFT(cTextLine, 1) != '[' cTextLine = FGETS(FileHandle) ENDDO cGroupName = cTextLine nLineNum = 10 * copy .ini lines into cursor DO WHILE !FEOF(FileHandle) cTextLine = FGETS(FileHandle) IF LEFT(cTextLine, 1) == '[' cGroupName = cTextLine ENDIF IF !ALLT(cGroupName) $ ALLT(cTextLine) INSERT INTO IniFile VALUES (cGroupName, cTextLine, nLineNum) ENDIF nLineNum = nLineNum + 10 ENDDO FCLOSE(FileHandle) ** Write New Info to IniFile cursor * Insert new line info InsertCursorLine(cxGroupName, ALLT(cLineType) + '=', ALLT(cIniLine)) ** Rewrite .ini file ERASE (cIniFile) FileHandle = FCREATE(cIniFile) GO TOP cGroupName = ALLT(IniFile.GroupName) FPUTS(FileHandle, cGroupName) SCAN && IniFile IF !cGroupName $ ALLT(IniFile.GroupName) && GroupName changed cGroupName = ALLT(IniFile.GroupName) && New GroupName FPUTS(FileHandle, cGroupName) ENDIF FPUTS(FileHandle, ALLT(IniFile.TextLine)) ENDSCAN FCLOSE(FileHandle) Use In IniFile *-------------------------- PROCEDURE InsertCursorLine * inserts modified or new lines into cursor IniFile - which is later writen to mail.ini file. PARAMETER cGroupName, cLineType, cLineValue SELECT IniFile LOCATE FOR cGroupName $ IniFile.GroupName AND cLineType $ IniFile.TextLine IF FOUND() && replace with new SMTPServer REPLACE IniFile.TextLine WITH cLineType + ALLT(cLineValue) ELSE && add new line SET ORDER TO LINENO DESCENDING LOCATE FOR cGroupName $ IniFile.GroupName IF FOUND() INSERT INTO IniFile VALUES (cGroupName, cLineType + ALLT(cLineValue), IniFile.LINENO + 1) ELSE && not even [SENDMAIL_PROMOTIONS] groupname exists INSERT INTO IniFile VALUES (cGroupName, cLineType + ALLT(cLineValue), 1000) ENDIF ENDIF SET ORDER TO LINENO ASCENDING