//**************************************************************************** // DWORD NEAR PASCAL ImportFile(LPCSTR szImportFile) // // This function imports a file from the given section // // History: // Mon 21-Mar-1996 12:40:00 -by- Mark MacLin [mmaclin] // Created. //**************************************************************************** #include "isignup.h" #define MAXLONGLEN 80 #define SIZE_ReadBuf 0x00008000 // 32K buffer size #pragma data_seg(".rdata") static TCHAR szNull[] = TEXT(""); #pragma data_seg() //int atoi (LPCSTR szBuf) //{ // int iRet = 0; // // while ((*szBuf >= '0') && (*szBuf <= '9')) // { // iRet = (iRet*10)+(int)(*szBuf-'0'); // szBuf++; // }; // return iRet; //} DWORD ImportFile(LPCTSTR lpszImportFile, LPCTSTR lpszSection, LPCTSTR lpszOutputFile) { HFILE hFile; LPTSTR pszLine, pszFile; int i, iMaxLine; UINT cbSize, cbRet; DWORD dwRet = ERROR_SUCCESS; // Allocate a buffer for the file // if ((pszFile = (LPTSTR)LocalAlloc(LMEM_FIXED, SIZE_ReadBuf * sizeof(TCHAR))) == NULL) { return ERROR_OUTOFMEMORY; } // Look for script // if (GetPrivateProfileString(lpszSection, NULL, szNull, pszFile, SIZE_ReadBuf, lpszImportFile) != 0) { // Get the maximum line number // pszLine = pszFile; iMaxLine = -1; while (*pszLine) { i = _ttoi(pszLine); iMaxLine = max(iMaxLine, i); pszLine += lstrlen(pszLine)+1; }; // If we have at least one line, we will import the script file // if (iMaxLine >= 0) { // Create the script file // #ifdef UNICODE CHAR szTmp[MAX_PATH+1]; wcstombs(szTmp, lpszOutputFile, MAX_PATH+1); hFile = _lcreat(szTmp, 0); #else hFile = _lcreat(lpszOutputFile, 0); #endif if (hFile != HFILE_ERROR) { TCHAR szLineNum[MAXLONGLEN+1]; // From The first line to the last line // for (i = 0; i <= iMaxLine; i++) { // Read the script line // wsprintf(szLineNum, TEXT("%d"), i); if ((cbSize = GetPrivateProfileString(lpszSection, szLineNum, szNull, pszLine, SIZE_ReadBuf, lpszImportFile)) != 0) { // Write to the script file // lstrcat(pszLine, TEXT("\x0d\x0a")); #ifdef UNICODE wcstombs(szTmp, pszLine, MAX_PATH+1); cbRet=_lwrite(hFile, szTmp, cbSize+2); #else cbRet=_lwrite(hFile, pszLine, cbSize+2); #endif }; }; _lclose(hFile); } else { dwRet = ERROR_PATH_NOT_FOUND; }; } else { dwRet = ERROR_PATH_NOT_FOUND; }; } else { dwRet = ERROR_PATH_NOT_FOUND; }; LocalFree(pszFile); return dwRet; }