Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1442 lines
50 KiB

/*
$Id: prefs.c,v 1.26 1995/08/14 20:41:49 eric Exp $
Enhanced NCSA Mosaic from Spyglass
"Guitar"
Copyright 1994 Spyglass, Inc.
All Rights Reserved
Author(s):
Eric W. Sink [email protected]
*/
/*
This file contains MOST of the code which accesses the INI file. The style
sheets are read elsewhere.
*/
#include "all.h"
#ifdef _GIBRALTAR
#define HTP_CONFIRM_OFFSET 10
//
// Convert the font index to font names
//
void
ResolveFontType()
{
switch(gPrefs.iUserTextType)
{
case FONT_FANCY:
strcpy(gPrefs.szMainFontName, "Arial");
strcpy(gPrefs.szHeaderFontName, "Arial");
strcpy(gPrefs.szMonospaceFontName, "Courier New");
break;
case FONT_MIXED:
strcpy(gPrefs.szMainFontName, "Times New Roman");
strcpy(gPrefs.szHeaderFontName, "Arial");
strcpy(gPrefs.szMonospaceFontName, "Courier New");
break;
default:
case FONT_PLAIN:
strcpy(gPrefs.szMainFontName, "Times New Roman");
strcpy(gPrefs.szHeaderFontName, "Times New Roman");
strcpy(gPrefs.szMonospaceFontName, "Courier New");
break;
}
}
#endif // _GIBRALTAR
void PREF_HandleCustomURLMenuItem(struct Mwin * tw, int ndx)
{
char *szURL;
szURL = NULL;
Hash_GetIndexedEntry(&gPrefs.hashCustomURLMenuItems, ndx, NULL, &szURL, NULL);
if (szURL)
{
if (*szURL != '+')
{
CreateOrLoad(tw, szURL, NULL);
}
else
{
UINT result;
/* Plus sign indicates it was a string to WinExec, not a URL. */
result = WinExec(&szURL[1], SW_SHOW);
if (result <= 31)
{
char szTemp[_MAX_PATH + _MAX_PATH + 70];
if (strchr(&szURL[1], '\\') == NULL)
/* No '\', no explicit path, therefore WinExec should have
searched path, and we need a different error message. */
sprintf(szTemp, GTR_GetString(SID_ERR_UNABLE_TO_LAUNCH_CHECK_PATH_S), &szURL[1]);
else
sprintf(szTemp, GTR_GetString(SID_ERR_UNABLE_TO_LAUNCH_CHECK_DIRECTORY_S), &szURL[1]);
ERR_ReportError(NULL, SID_ERR_SIMPLY_SHOW_ARGUMENTS_S_S, szTemp, NULL);
}
}
}
}
void PREF_AddCustomURLMenu(HMENU hMenu)
{
if (gPrefs.bCustomURLMenu)
{
HMENU hURLMenu;
int count;
int i;
char *szName;
char *szURL;
count = Hash_Count(&gPrefs.hashCustomURLMenuItems);
hURLMenu = CreateMenu();
for (i=0; i<count; i++)
{
Hash_GetIndexedEntry(&gPrefs.hashCustomURLMenuItems, i, &szName, &szURL, NULL);
if (!szURL || (0 == strcmp(szURL, "-")))
{
AppendMenu(hURLMenu, MF_ENABLED|MF_SEPARATOR, 0, NULL);
}
else
{
AppendMenu(hURLMenu, MF_ENABLED|MF_STRING, RES_MENU_ITEM_URL__FIRST__ + i, szName);
}
}
InsertMenu(hMenu, 3, MF_ENABLED|MF_BYPOSITION|MF_STRING|MF_POPUP, (UINT) hURLMenu, gPrefs.szCustomURLMenuName);
}
}
#ifdef _GIBRALTAR
void PageSetup_Init(RECT *p)
{
p->top = 1000;
p->left = 1250;
p->right = 1250;
p->bottom = 1000;
}
#else
void PageSetup_Init(struct page_setup *p)
{
p->marginleft = (float) 0.75;
p->margintop = (float) 0.75;
p->marginright = (float) 0.75;
p->marginbottom = (float) 0.75;
strcpy(p->headerleft, "&w");
strcpy(p->headerright, "Page &p of &P");
strcpy(p->footerleft, "&D");
strcpy(p->footerright, "&t");
}
#endif // _GIBRALTAR
COLORREF PREF_GetBackgroundColor(void)
{
return gPrefs.window_bgcolor;
}
COLORREF PREF_GetForegroundColor(void)
{
return gPrefs.window_color_text;
}
DWORD PREF_GetTempPath(DWORD cchBuffer, LPTSTR lpszTempPath)
{
int len;
DWORD result;
if (!gPrefs.szUserTempDir[0])
{
result = GetTempPath(cchBuffer, lpszTempPath);
if (result != 0)
{
DOS_EnforceEndingSlash(lpszTempPath);
}
return result;
}
else
{
len = strlen(gPrefs.szUserTempDir);
if (len < cchBuffer)
{
strcpy(lpszTempPath, gPrefs.szUserTempDir);
DOS_EnforceEndingSlash(gPrefs.szUserTempDir);
}
return len;
}
}
UINT PREF_GetWindowsDirectory(LPTSTR lpszWinPath)
{
UINT result;
result = GetWindowsDirectory(lpszWinPath, _MAX_PATH);
if (result > 0)
{
DOS_EnforceEndingSlash(lpszWinPath);
return result;
}
else
{
PREF_GetRootDirectory(lpszWinPath);
return 1;
}
}
void PREF_GetPrefsDirectory(char *s)
{
#ifdef FEATURE_ROOT_DIR_ENV
/*
TODO Should we verify that the dir actually exists?
*/
if (0 != GetEnvironmentVariable(FEATURE_ROOT_DIR_ENV, s, _MAX_PATH))
{
DOS_EnforceEndingSlash(s);
}
else
#endif /* !FEATURE_ROOT_DIR_ENV */
{
#ifdef FEATURE_VENDOR_PREFERENCES
if (gPrefs.szPrefsDirectory[0])
{
strcpy(s, gPrefs.szPrefsDirectory);
DOS_EnforceEndingSlash(s);
}
else
#endif
{
PREF_GetWindowsDirectory(s);
}
}
}
/*
In the following two functions, we use the INI file entry directly if it is a
path spec. If it's just a filename, we prepend it with the prefs directory.
*/
void PREF_GetPathToHotlistFile(char *s)
{
if (strchr(gPrefs.szHotListFile, ':') || strchr(gPrefs.szHotListFile, '\\'))
{
s[0] = 0;
}
else
{
PREF_GetPrefsDirectory(s);
}
strcat(s, gPrefs.szHotListFile);
}
void PREF_GetPathToHistoryFile(char *s)
{
if (strchr(gPrefs.szGlobHistFile, ':') || strchr(gPrefs.szGlobHistFile, '\\'))
{
s[0] = 0;
}
else
{
PREF_GetPrefsDirectory(s);
}
strcat(s, gPrefs.szGlobHistFile);
}
void PREF_GetRootDirectory(char *s)
{
strcpy(s, wg.szRootDirectory);
DOS_EnforceEndingSlash(s);
}
void PREF_GetHelpDirectory(char *s)
{
#ifdef FEATURE_ROOT_DIR_ENV
/* Environemnt variable searching for files used in numerous places. */
/*
TODO Should we verify that the dir actually exists?
*/
if (0 != GetEnvironmentVariable(FEATURE_ROOT_DIR_ENV, s, _MAX_PATH))
{
DOS_EnforceEndingSlash(s);
}
else
#endif /* !FEATURE_ROOT_DIR_ENV */
PREF_GetRootDirectory(s);
}
void PREF_GetHomeURL(char *url)
{
char path[_MAX_PATH];
if (strchr(gPrefs.szHomeURL, ':') && strchr(gPrefs.szHomeURL, '/'))
{
strcpy(url, gPrefs.szHomeURL);
}
else if (!strchr(gPrefs.szHomeURL, '\\'))
{
#ifdef FEATURE_ROOT_DIR_ENV
/* Environemnt variable searching for files used in numerous places. */
PREF_GetHelpDirectory(path);
#else /* FEATURE_ROOT_DIR_ENV */
PREF_GetRootDirectory(path);
#endif /* FEATURE_ROOT_DIR_ENV */
FixPathName(path);
strcpy(url, "file:///");
strcat(url, path);
strcat(url, gPrefs.szHomeURL);
}
else
{
strcpy(path, gPrefs.szHomeURL);
FixPathName(path);
strcpy(url, "file:///");
strcat(url, path);
}
}
void PREF_CreateInitialURL(char *url)
{
char path[_MAX_PATH];
PREF_GetRootDirectory(path);
FixPathName(path);
strcpy(url, "file:///");
strcat(url, path);
strcat(url, GTR_GetString(SID_MISC_INITIAL_HTM));
}
static BOOL x_is_yes(char *s)
{
if (0 == GTR_strcmpi(s, "yes"))
{
return TRUE;
}
if (0 == GTR_strcmpi(s, "true"))
{
return TRUE;
}
return FALSE;
}
#ifdef PROTOCOL_HELPERS
void LoadProtocolsInfo(void)
{
char strType[63 + 1];
char strEntry[31 + 1];
char strDesc[255 + 1];
int idx;
char *p;
struct Protocol_Info *ppiNew;
char szProtocolApp[_MAX_PATH+1];
char szSmartProtocolServiceName[255+1];
unsigned long lSmartProtocolFlags;
for (idx = 0; ; idx++)
{
sprintf(strEntry, "TYPE%d", idx);
GetPrivateProfileString("Protocols", strEntry, "", strType, 63, AppIniFile);
if (!strType[0])
break;
/*
Get the viewer command string itself
*/
GetPrivateProfileString("Protocols", strType, "", szProtocolApp, _MAX_PATH, AppIniFile);
p = strchr(szProtocolApp, '%');
/* Check for a smart viewer (DDE service name) */
/* TODO: does this apply for protocols? */
GetPrivateProfileString("SDI_Protocols", strType, "", szSmartProtocolServiceName, 255, AppIniFile);
if (szSmartProtocolServiceName[0])
{
lSmartProtocolFlags = GetPrivateProfileInt("SDI_Protocol_Flags", strType, 0x0, AppIniFile);
}
else
{
lSmartProtocolFlags = 0;
}
GetPrivateProfileString("Protocol Descriptions", strType, "", strDesc, 255, AppIniFile);
ppiNew = PREF_InitCNFPType(strType, strDesc, szProtocolApp, szSmartProtocolServiceName);
}
/* Immediately after loading, we save the protocols info */
SaveProtocolsInfo();
}
#endif /* PROTOCOL_HELPERS */
void LoadViewersInfo(void)
{
char strType[63 + 1];
char strEntry[31 + 1];
char strEncoding[31 + 1];
char strDesc[255 + 1];
int idx;
char *p;
struct Viewer_Info *pviNew;
char szSuffixes[255+1];
char szViewerApp[_MAX_PATH+1];
char szSmartViewerServiceName[255+1];
unsigned long lSmartViewerFlags;
int iHowToPresent;
BOOL fConfirmSave;
for (idx = 0; ; idx++)
{
sprintf(strEntry, "TYPE%d", idx);
GetPrivateProfileString("Viewers", strEntry, "", strType, 63, AppIniFile);
if (!strType[0])
break;
/*
Get the viewer command string itself
*/
GetPrivateProfileString("Viewers", strType, "", szViewerApp, _MAX_PATH, AppIniFile);
p = strchr(szViewerApp, '%');
if (p && p[1] == 'l') // This strips out the 'l' from %ls for old-style strings.
{
p++;
while (*p)
{
*p = *(p+1);
p++;
}
}
/*
Check for a smart viewer (DDE service name)
*/
GetPrivateProfileString("SDI_Viewers", strType, "", szSmartViewerServiceName, 255, AppIniFile);
if (szSmartViewerServiceName[0])
{
lSmartViewerFlags = GetPrivateProfileInt("SDI_Viewer_Flags", strType, 0x0, AppIniFile);
}
else
{
lSmartViewerFlags = 0;
}
GetPrivateProfileString("Suffixes", strType, "", szSuffixes, 255, AppIniFile);
GetPrivateProfileString("Encodings", strType, "", strEncoding, 31, AppIniFile);
if (!strEncoding[0])
{
strcpy(strEncoding, "binary");
}
GetPrivateProfileString("MIME Descriptions", strType, "", strDesc, 255, AppIniFile);
iHowToPresent = GetPrivateProfileInt("HowToPresent", strType, HTP_UNKNOWN, AppIniFile);
pviNew = PREF_InitMIMEType(strType, strDesc, szSuffixes, strEncoding, szViewerApp, NULL, szSmartViewerServiceName);
#ifdef _GIBRALTAR
fConfirmSave = (iHowToPresent >= HTP_CONFIRM_OFFSET);
if (fConfirmSave)
{
iHowToPresent -= HTP_CONFIRM_OFFSET;
}
//
// Why were we ignoring iHowToPresent?
//
if (iHowToPresent < HTP_BUILTIN || iHowToPresent > HTP_UNKNOWN)
{
iHowToPresent = HTP_UNKNOWN;
}
if (pviNew && !pviNew->funcBuiltIn)
{
pviNew->iHowToPresent = iHowToPresent;
pviNew->fConfirmSave = fConfirmSave;
}
#endif// _GIBRALTAR
}
/* Immediately after loading, we save the viewers info */
SaveViewersInfo();
}
void InitPreferences(void)
{
strcpy(gPrefs.szHomeURL, DEFAULT_INITIAL); /* Main: Home Page - SAVED */
#ifdef _GIBRALTAR
*gPrefs.szSearchURL = '\0';
#endif // _GIBRALTAR
gPrefs.bDisableKeepAlive = FALSE; /* Main: Disable_KeepAlive */
gPrefs.bAutoLoadImages = TRUE; /* Main: Display Inline Images - SAVED */
gPrefs.bDitherColors = TRUE; /* Main: Dither_Colors - SAVED */
gPrefs.bProgressiveImageDisplay = TRUE; /* Main: Display_Images_Progressively - SAVED */
gPrefs.ReformatHandling = 1; /* Main: Reformat_Handling */
gPrefs.szUserTempDir[0] = 0; /* Main: Temp_Directory - SAVED */
gPrefs.bDeleteTempFilesOnExit = TRUE; /* Main: Delete_Temp_Files_On_Exit - SAVED */
gPrefs.bSaveSessionHistoryOnExit = FALSE; /* Main: Save_Session_History_On_Exit - SAVED */
gPrefs.bUnderlineLinks = TRUE; /* Main: Anchor Underline - SAVED */
gPrefs.bShowServerErrors = FALSE; /* Main: Show Server Errors */
gPrefs.history_expire_days = DEFAULT_HISTORY_EXPIRATION; /* Main: History_Expire_Days */
gPrefs.socket_connect_timeout = 120; /* Main: Socket_Connect_Timeout */
gPrefs.visitation_horizon = 1; /* Main: Anchor_Visitation_Horizon - SAVED */
strcpy(gPrefs.szHotListFile, GTR_GetString(SID_MISC_HOTLIST_HTM)); /* Main: Hotlist_File */
strcpy(gPrefs.szGlobHistFile, GTR_GetString(SID_MISC_GLOBHIST_HTM)); /* Main: GlobHist_File */
#ifdef _GIBRALTAR
strcpy(gPrefs.szHelpFile, "iexplore.hlp"); /* Main: Help_File */
#else
strcpy(gPrefs.szHelpFile, DEFAULT_HELP_FILE); /* Main: Help_File */
#endif // _GIBRALTAR
gPrefs.szAcceptLanguageHeader[0] = 0; /* Main: Accept_Language_Header */
gPrefs.szEmailAddress[0] = 0; /* Mailto: Email_Address */
gPrefs.szEmailServer[0] = 0; /* Mailto: SMTP_Server */
strcpy(gPrefs.szDefaultCharSet, LATIN1_CHARSET_NAME); /* Main: Default_Character_Set */
gPrefs.nMaxConnections = GTR_MAX_TCP_CONNECTIONS; /* Main: Max_Connections */
gPrefs.bIgnoreDocumentAttributes = FALSE; /* Main: Ignore_Document_Attributes */
gPrefs.bUseSystemColors = FALSE; /* Main: Use_System_Colors */
#ifdef _GIBRALTAR
gPrefs.iUserTextSize = FONT_MEDIUM; /* Main: Display_Text_Size */
gPrefs.iPrintTextSize = FONT_SMALL; /* Main: Print_Text_Size */
gPrefs.iUserTextType = FONT_PLAIN;
#else
gPrefs.iUserTextSize = 2; /* Main: Display_Text_Size */
gPrefs.iPrintTextSize = 1; /* Main: Print_Text_Size */
#endif // _GIBRALTAR
gPrefs.bEnableDiskCache = FALSE; /* Main: Enable_Disk_Cache */
gPrefs.dcache_size_kilobytes = 2048; /* MainDiskCache: Size_Kilobytes */
gPrefs.dcache_verify_policy = 0; /* MainDiskCache: Verify_Policy */
gPrefs.bClearMainCacheOnExit = FALSE; /* MainDiskCache: Clear_On_Exit */
gPrefs.szMainCacheDir[0] = 0; /* MainDiskCache: Directory */
gPrefs.bUseWedge = FALSE; /* Services: Use_PW_Seal */
gPrefs.bUseAsyncDNS = TRUE; /* Services: Use_Async_DNS */
#ifdef _GIBRALTAR
gPrefs.fEnableProxy = FALSE;
gPrefs.fEnsureWinsHostName = FALSE;
#endif // _GIBRALTAR
gPrefs.szProxyHTTP[0] = 0; /* Services: HTTP_Proxy_Server - SAVED */
gPrefs.szProxyGOPHER[0] = 0; /* Services: Gopher_Proxy_Server - SAVED */
gPrefs.szProxyFTP[0] = 0; /* Services: FTP_Proxy_Server - SAVED */
gPrefs.szProxyOverrides[0] = 0; /* Services: No_Proxy */
gPrefs.szNNTP_Server[0] = 0; /* Services: NNTP_Server */
gPrefs.window_color_text = GetSysColor(COLOR_WINDOWTEXT);
gPrefs.window_bgcolor = GetSysColor(COLOR_WINDOW);
gPrefs.anchor_color = DEFAULT_ANCHOR_COLOR; /* Settings: Anchor Color - SAVED */
gPrefs.anchor_color_beenthere = DEFAULT_ANCHOR_COLOR_BEENTHERE; /* Settings: Anchor Color Visited - SAVED */
#ifdef FEATURE_KIOSK_MODE
gPrefs.doc_cache_size = 0; /* Document Caching: Number */
#else
gPrefs.doc_cache_size = 4; /* Document Caching: Number */
#endif
gPrefs.image_cache_size = 50; /* Image Caching: Number */
gPrefs.cxWindow = 500; /* Document Windows: width */
gPrefs.cyWindow = 400; /* Document Windows: height */
gPrefs.xWindow = CW_USEDEFAULT; /* Document Windows: x */
gPrefs.yWindow = 0; /* Document Windows: y (ignored when x is CW_USEDEFAULT) */
#ifdef FEATURE_HTML_HIGHLIGHT
gPrefs.highlight_color = DEFAULT_HIGHLIGHT_COLOR; /* Search: Highlight_Color */
gPrefs.szSearchEngine[0] = 0;
#endif /* FEATURE_HTML_HIGHLIGHT */
#ifdef _GIBRALTAR
PageSetup_Init(&gPrefs.rtMargin);
#else
PageSetup_Init(&gPrefs.page);
#endif // _GIBRALTAR
gPrefs.szMailToHelper[0] = 0;
gPrefs.szTelnetHelper[0] = 0;
gPrefs.bStrictHTML = FALSE; /* Main: Strict_HTML */
#ifdef FEATURE_TOOLBAR
PREF_SetupToolbar();
#endif /* FEATURE_TOOLBAR */
gPrefs.bCustomURLMenu = FALSE;
InitViewers();
#ifdef PROTOCOL_HELPERS
InitProtocols();
#endif /* PROTOCOL_HELPERS */
#ifdef FEATURE_DISPLAY_USER_NAME
gPrefs.szStatusBarUserName[0] = 0; /* Not in the INI file at all */
#endif
#ifndef _GIBRALTAR
strcpy(gPrefs.szMainFontName, "Times New Roman");
strcpy(gPrefs.szHeaderFontName, "Arial");
strcpy(gPrefs.szMonospaceFontName, "Courier New");
#endif // _GIBRALTAR
#ifdef _GIBRALTAR
gPrefs.bShowLocation = TRUE;
gPrefs.bShowStatusBar = TRUE;
gPrefs.bLittleGlobe = TRUE;
#endif // _GIBRALTAR
InitViewers();
#ifdef FEATURE_DISPLAY_USER_NAME
gPrefs.szStatusBarUserName[0] = 0; /* Not in the INI file at all */
#endif
}
void LoadPreferences(void)
{
char buf[64 + 1];
GetPrivateProfileString("Main", "Enable_Disk_Cache", (gPrefs.bEnableDiskCache ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bEnableDiskCache = TRUE;
}
else
{
gPrefs.bEnableDiskCache = FALSE;
}
/*
Note that szMainCacheDir, when it's read from the INI file, might contain aliases
like $(EXEDIR). If it does, then the alias will get resolved on the call
to InitializeDiskCache(), in dcache.c
*/
GetPrivateProfileString("MainDiskCache", "Directory", gPrefs.szMainCacheDir, gPrefs.szMainCacheDir, _MAX_PATH, AppIniFile);
gPrefs.dcache_size_kilobytes = GetPrivateProfileInt("MainDiskCache", "Size_Kilobytes", gPrefs.dcache_size_kilobytes, AppIniFile);
gPrefs.dcache_verify_policy = GetPrivateProfileInt("MainDiskCache", "Verify_Policy", gPrefs.dcache_verify_policy, AppIniFile);
GetPrivateProfileString("MainDiskCache", "Clear_On_Exit", (gPrefs.bClearMainCacheOnExit ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bClearMainCacheOnExit = TRUE;
}
else
{
gPrefs.bClearMainCacheOnExit = FALSE;
}
GetPrivateProfileString("Main", "Use_System_Colors", (gPrefs.bUseSystemColors ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bUseSystemColors = TRUE;
}
else
{
gPrefs.bUseSystemColors = FALSE;
}
GetPrivateProfileString("Main", "Ignore_Document_Attributes", (gPrefs.bIgnoreDocumentAttributes ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bIgnoreDocumentAttributes = TRUE;
}
else
{
gPrefs.bIgnoreDocumentAttributes = FALSE;
}
GetPrivateProfileString("Main", "Accept_Language_Header", gPrefs.szAcceptLanguageHeader, gPrefs.szAcceptLanguageHeader, 31, AppIniFile);
GetPrivateProfileString("Mailto", "Email_Address", gPrefs.szEmailAddress, gPrefs.szEmailAddress, 255, AppIniFile);
GetPrivateProfileString("Mailto", "Email_Server", gPrefs.szEmailServer, gPrefs.szEmailServer, 255, AppIniFile);
GetPrivateProfileString("Mailto", "SMTP_Server", gPrefs.szEmailServer, gPrefs.szEmailServer, 255, AppIniFile);
GetPrivateProfileString("Main", "Default_Character_Set", gPrefs.szDefaultCharSet, gPrefs.szDefaultCharSet, 63, AppIniFile);
GetPrivateProfileString("Main", "Display Inline Images", (gPrefs.bAutoLoadImages ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bAutoLoadImages = TRUE;
}
else
{
gPrefs.bAutoLoadImages = FALSE;
}
GetPrivateProfileString("Main", "Disable_KeepAlive", (gPrefs.bDisableKeepAlive ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bDisableKeepAlive = TRUE;
}
else
{
gPrefs.bDisableKeepAlive = FALSE;
}
GetPrivateProfileString("Main", "Dither_Colors", (gPrefs.bDitherColors ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bDitherColors = TRUE;
}
else
{
gPrefs.bDitherColors = FALSE;
}
GetPrivateProfileString("Main", "Display_Images_Progressively", (gPrefs.bProgressiveImageDisplay ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bProgressiveImageDisplay = TRUE;
}
else
{
gPrefs.bProgressiveImageDisplay = FALSE;
}
GetPrivateProfileString("Main", "Strict_HTML", (gPrefs.bStrictHTML ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bStrictHTML = TRUE;
}
else
{
gPrefs.bStrictHTML = FALSE;
}
GetPrivateProfileString("Main", "Temp_Directory", gPrefs.szUserTempDir, gPrefs.szUserTempDir, _MAX_PATH, AppIniFile);
GetPrivateProfileString("Main", "Delete_Temp_Files_On_Exit", (gPrefs.bDeleteTempFilesOnExit ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bDeleteTempFilesOnExit = TRUE;
}
else
{
gPrefs.bDeleteTempFilesOnExit = FALSE;
}
GetPrivateProfileString("Main", "Save_Session_History_On_Exit", (gPrefs.bSaveSessionHistoryOnExit ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bSaveSessionHistoryOnExit = TRUE;
}
else
{
gPrefs.bSaveSessionHistoryOnExit = FALSE;
}
GetPrivateProfileString("Services", "Use_PW_Seal", (gPrefs.bUseWedge ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bUseWedge = TRUE;
}
else
{
gPrefs.bUseWedge = FALSE;
}
GetPrivateProfileString("Services", "Use_Async_DNS", (gPrefs.bUseAsyncDNS ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bUseAsyncDNS = TRUE;
}
else
{
gPrefs.bUseAsyncDNS = FALSE;
}
GetPrivateProfileString("Main", "Anchor Underline", (gPrefs.bUnderlineLinks ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bUnderlineLinks = TRUE;
}
else
{
gPrefs.bUnderlineLinks = FALSE;
}
{
int iRed, iGreen, iBlue;
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.anchor_color), GetGValue(gPrefs.anchor_color), GetBValue(gPrefs.anchor_color));
GetPrivateProfileString("Settings", "Anchor Color", buf, buf, 64, AppIniFile);
sscanf(buf, "%d,%d,%d", &iRed, &iGreen, &iBlue);
if ((iRed < 0) || (iRed > 255))
{
iRed = 0;
}
if ((iGreen < 0) || (iGreen > 255))
{
iGreen = 0;
}
if ((iBlue < 0) || (iBlue > 255))
{
iBlue = 255;
}
gPrefs.anchor_color = RGB(iRed, iGreen, iBlue);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.anchor_color_beenthere), GetGValue(gPrefs.anchor_color_beenthere), GetBValue(gPrefs.anchor_color_beenthere));
GetPrivateProfileString("Settings", "Anchor Color Visited", buf, buf, 64, AppIniFile);
sscanf(buf, "%d,%d,%d", &iRed, &iGreen, &iBlue);
if ((iRed < 0) || (iRed > 255))
{
iRed = 0;
}
if ((iGreen < 0) || (iGreen > 255))
{
iGreen = 0;
}
if ((iBlue < 0) || (iBlue > 255))
{
iBlue = 255;
}
gPrefs.anchor_color_beenthere = RGB(iRed, iGreen, iBlue);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.window_color_text), GetGValue(gPrefs.window_color_text), GetBValue(gPrefs.window_color_text));
GetPrivateProfileString("Settings", "Text_Color", buf, buf, 64, AppIniFile);
sscanf(buf, "%d,%d,%d", &iRed, &iGreen, &iBlue);
if ((iRed < 0) || (iRed > 255))
{
iRed = 0;
}
if ((iGreen < 0) || (iGreen > 255))
{
iGreen = 0;
}
if ((iBlue < 0) || (iBlue > 255))
{
iBlue = 255;
}
gPrefs.window_color_text = RGB(iRed, iGreen, iBlue);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.window_bgcolor), GetGValue(gPrefs.window_bgcolor), GetBValue(gPrefs.window_bgcolor));
GetPrivateProfileString("Settings", "Background_Color", buf, buf, 64, AppIniFile);
sscanf(buf, "%d,%d,%d", &iRed, &iGreen, &iBlue);
if ((iRed < 0) || (iRed > 255))
{
iRed = 0;
}
if ((iGreen < 0) || (iGreen > 255))
{
iGreen = 0;
}
if ((iBlue < 0) || (iBlue > 255))
{
iBlue = 255;
}
gPrefs.window_bgcolor = RGB(iRed, iGreen, iBlue);
}
#ifndef _GIBRALTAR
GetPrivateProfileString("Main", "Help_File", gPrefs.szHelpFile, gPrefs.szHelpFile, _MAX_PATH, AppIniFile);
#endif // _GIBRALTAR
GetPrivateProfileString("Main", "Hotlist_File", gPrefs.szHotListFile, gPrefs.szHotListFile, _MAX_PATH, AppIniFile);
GetPrivateProfileString("Main", "GlobHist_File", gPrefs.szGlobHistFile, gPrefs.szGlobHistFile, _MAX_PATH, AppIniFile);
#ifndef _GIBRALTAR
GetPrivateProfileString("Services", "NNTP_Server", gPrefs.szNNTP_Server, gPrefs.szNNTP_Server, 256, AppIniFile);
#endif // _GIBRALTAT
#ifdef _GIBRALTAR
GetPrivateProfileString("Services", "Enable Proxy", ((gPrefs.fEnableProxy) ? "yes" : "no"), buf, 64, AppIniFile);
if (x_is_yes(buf))
{
gPrefs.fEnableProxy = TRUE;
}
else
{
gPrefs.fEnableProxy = FALSE;
}
GetPrivateProfileString("Main", "Convert Local Host Names To OEM", ((gPrefs.fEnsureWinsHostName) ? "yes" : "no"), buf, 64, AppIniFile);
if (x_is_yes(buf))
{
gPrefs.fEnsureWinsHostName = TRUE;
}
else
{
gPrefs.fEnsureWinsHostName = FALSE;
}
#endif // _GIBRALTAR
GetPrivateProfileString("Services", "Proxy_Server", gPrefs.szProxyHTTP, gPrefs.szProxyHTTP, MAX_URL_STRING, AppIniFile);
if (gPrefs.szProxyHTTP[0])
{
strcpy(gPrefs.szProxyGOPHER, gPrefs.szProxyHTTP);
strcpy(gPrefs.szProxyFTP, gPrefs.szProxyHTTP);
}
GetPrivateProfileString("Services", "HTTP_Proxy_Server", gPrefs.szProxyHTTP, gPrefs.szProxyHTTP, MAX_URL_STRING, AppIniFile);
GetPrivateProfileString("Services", "Gopher_Proxy_Server", gPrefs.szProxyGOPHER, gPrefs.szProxyGOPHER, MAX_URL_STRING, AppIniFile);
GetPrivateProfileString("Services", "FTP_Proxy_Server", gPrefs.szProxyFTP, gPrefs.szProxyFTP, MAX_URL_STRING, AppIniFile);
GetPrivateProfileString("Services", "No_Proxy", gPrefs.szProxyOverrides, gPrefs.szProxyOverrides, MAX_URL_STRING, AppIniFile);
#ifdef _GIBRALTAR
GetPrivateProfileString("Main", "Show Toolbar", ((gPrefs.tb.bShowToolBar) ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.tb.bShowToolBar = TRUE;
}
else
{
gPrefs.tb.bShowToolBar = FALSE;
}
GetPrivateProfileString("Main", "Show Statusbar", ((gPrefs.bShowStatusBar) ? "yes" : "no"), buf, 64, AppIniFile);
if (x_is_yes(buf))
{
gPrefs.bShowStatusBar = TRUE;
}
else
{
gPrefs.bShowStatusBar = FALSE;
}
GetPrivateProfileString("Main", "Show Location", ((gPrefs.bShowLocation) ? "yes" : "no"), buf, 64, AppIniFile);
if (x_is_yes(buf))
{
gPrefs.bShowLocation = TRUE;
}
else
{
gPrefs.bShowLocation = FALSE;
}
gPrefs.bLittleGlobe = !gPrefs.bShowLocation || !gPrefs.tb.bShowToolBar;
GetPrivateProfileString("Main", "Search Page", gPrefs.szSearchURL, gPrefs.szSearchURL, MAX_URL_STRING, AppIniFile);
#endif // _GIBRALTAR
GetPrivateProfileString("Main", "Home Page", gPrefs.szHomeURL, gPrefs.szHomeURL, MAX_URL_STRING, AppIniFile);
GetPrivateProfileString("Main", "Show Server Errors", (gPrefs.bShowServerErrors ? "yes" : "no"), buf, 64, AppIniFile);
gPrefs.bShowServerErrors = GTR_is_Yes_or_True(buf);
gPrefs.nMaxConnections = GetPrivateProfileInt("Main", "Max_Connections", gPrefs.nMaxConnections, AppIniFile);
gPrefs.ReformatHandling = GetPrivateProfileInt("Main", "Reformat_Handling", gPrefs.ReformatHandling, AppIniFile);
gPrefs.iUserTextSize = GetPrivateProfileInt("Main", "Display_Text_Size", gPrefs.iUserTextSize, AppIniFile);
gPrefs.iUserTextSize = max(min(gPrefs.iUserTextSize, FONT_LARGEST), FONT_SMALLEST);
gPrefs.iPrintTextSize = GetPrivateProfileInt("Main", "Print_Text_Size", gPrefs.iPrintTextSize, AppIniFile);
gPrefs.iPrintTextSize = max(min(gPrefs.iPrintTextSize, FONT_LARGEST), FONT_SMALLEST);
#ifdef _GIBRALTAR
gPrefs.iUserTextType = GetPrivateProfileInt("Main", "Display_Text_Type", gPrefs.iUserTextType, AppIniFile);
gPrefs.iUserTextType = max(min(gPrefs.iUserTextType, FONT_MIXED), FONT_PLAIN);
//
// Convert font index to font type
//
ResolveFontType();
#endif // _GIBRALTAR
#ifndef FEATURE_KIOSK_MODE
gPrefs.doc_cache_size = GetPrivateProfileInt("Document Caching", "Number", gPrefs.doc_cache_size, AppIniFile);
#endif
gPrefs.image_cache_size = GetPrivateProfileInt("Image Caching", "Number", gPrefs.image_cache_size, AppIniFile);
gPrefs.visitation_horizon = GetPrivateProfileInt("Main", "Anchor_Visitation_Horizon", gPrefs.visitation_horizon, AppIniFile);
gPrefs.history_expire_days = GetPrivateProfileInt("Main", "History_Expire_Days", gPrefs.history_expire_days, AppIniFile);
gPrefs.socket_connect_timeout = GetPrivateProfileInt("Main", "Socket_Connect_Timeout", gPrefs.socket_connect_timeout, AppIniFile);
gPrefs.cxWindow = GetPrivateProfileInt("Document Windows", "width", gPrefs.cxWindow, AppIniFile);
gPrefs.cyWindow = GetPrivateProfileInt("Document Windows", "height", gPrefs.cyWindow, AppIniFile);
gPrefs.xWindow = GetPrivateProfileInt("Document Windows", "x", gPrefs.cxWindow, AppIniFile);
gPrefs.yWindow = GetPrivateProfileInt("Document Windows", "y", gPrefs.cyWindow, AppIniFile);
if ( (gPrefs.xWindow < 0)
|| (gPrefs.xWindow > GetSystemMetrics(SM_CXSCREEN))
|| (gPrefs.yWindow < 0)
|| (gPrefs.yWindow > GetSystemMetrics(SM_CYSCREEN)))
{
gPrefs.xWindow = CW_USEDEFAULT;
gPrefs.yWindow = 0;
}
#ifdef _GIBRALTAR
sprintf(buf, "%d", gPrefs.rtMargin.left);
GetPrivateProfileString("PageSetup", "margin_left", buf, buf, 64, AppIniFile);
gPrefs.rtMargin.left = atoi(buf);
sprintf(buf, "%d", gPrefs.rtMargin.right);
GetPrivateProfileString("PageSetup", "margin_right", buf, buf, 64, AppIniFile);
gPrefs.rtMargin.right = atoi(buf);
sprintf(buf, "%d", gPrefs.rtMargin.top);
GetPrivateProfileString("PageSetup", "margin_top", buf, buf, 64, AppIniFile);
gPrefs.rtMargin.top = atoi(buf);
sprintf(buf, "%d", gPrefs.rtMargin.bottom);
GetPrivateProfileString("PageSetup", "margin_bottom", buf, buf, 64, AppIniFile);
gPrefs.rtMargin.bottom = atoi(buf);
#else
sprintf(buf, "%g", gPrefs.page.marginleft);
GetPrivateProfileString("PageSetup", "margin_left", buf, buf, 64, AppIniFile);
gPrefs.page.marginleft = (float) atof(buf);
sprintf(buf, "%g", gPrefs.page.marginright);
GetPrivateProfileString("PageSetup", "margin_right", buf, buf, 64, AppIniFile);
gPrefs.page.marginright = (float) atof(buf);
sprintf(buf, "%g", gPrefs.page.margintop);
GetPrivateProfileString("PageSetup", "margin_top", buf, buf, 64, AppIniFile);
gPrefs.page.margintop = (float) atof(buf);
sprintf(buf, "%g", gPrefs.page.marginbottom);
GetPrivateProfileString("PageSetup", "margin_bottom", buf, buf, 64, AppIniFile);
gPrefs.page.marginbottom = (float) atof(buf);
GetPrivateProfileString("PageSetup", "header_left", gPrefs.page.headerleft, gPrefs.page.headerleft, PAGE_SETUP_STRINGLIMIT, AppIniFile);
GetPrivateProfileString("PageSetup", "header_right", gPrefs.page.headerright, gPrefs.page.headerright, PAGE_SETUP_STRINGLIMIT, AppIniFile);
GetPrivateProfileString("PageSetup", "footer_left", gPrefs.page.footerleft, gPrefs.page.footerleft, PAGE_SETUP_STRINGLIMIT, AppIniFile);
GetPrivateProfileString("PageSetup", "footer_right", gPrefs.page.footerright, gPrefs.page.footerright, PAGE_SETUP_STRINGLIMIT, AppIniFile);
#endif // _GIBRALTAR
#ifndef _GIBRALTAR
GetPrivateProfileString("Helpers", "mailto", gPrefs.szMailToHelper, gPrefs.szMailToHelper, _MAX_PATH, AppIniFile);
GetPrivateProfileString("Helpers", "telnet", gPrefs.szTelnetHelper, gPrefs.szTelnetHelper, _MAX_PATH, AppIniFile);
#endif // _GIBRALTAR
#ifdef _GIBRALTAR // We don't support custom URL menus
gPrefs.bCustomURLMenu = FALSE;
#else
GetPrivateProfileString("Custom_URL_Menu", "Enable", (gPrefs.bCustomURLMenu ? "yes" : "no"), buf, 64, AppIniFile);
if (GTR_is_Yes_or_True(buf))
{
gPrefs.bCustomURLMenu = TRUE;
}
else
{
gPrefs.bCustomURLMenu = FALSE;
}
if (gPrefs.bCustomURLMenu)
{
int count;
char buf[63+1];
char szTitle[255+1];
char szURL[MAX_URL_STRING+1];
char szTmp[_MAX_PATH+1];
char szEXE[_MAX_PATH+2];
int i;
Hash_Init(&gPrefs.hashCustomURLMenuItems);
GetPrivateProfileString("Custom_URL_Menu", "Name", gPrefs.szCustomURLMenuName, gPrefs.szCustomURLMenuName, 255, AppIniFile);
if (!gPrefs.szCustomURLMenuName[0])
{
strcpy(gPrefs.szCustomURLMenuName, "URL");
}
count = 0;
sprintf(buf, "%d", count);
GetPrivateProfileString("Custom_URL_Menu", "Count", buf, buf, 64, AppIniFile);
count = atoi(buf);
if (count > 0)
{
if (count > ((RES_MENU_ITEM_URL__LAST__ - RES_MENU_ITEM_URL__FIRST__)))
{
count = ((RES_MENU_ITEM_URL__LAST__ - RES_MENU_ITEM_URL__FIRST__));
}
for (i=0; i<count; i++)
{
sprintf(buf, "Title_%d", i+1);
GetPrivateProfileString("Custom_URL_Menu", buf, "", szTitle, 255, AppIniFile);
sprintf(buf, "URL_%d", i+1);
GetPrivateProfileString("Custom_URL_Menu", buf, "", szURL, MAX_URL_STRING, AppIniFile);
if (szURL[0])
{
if (!szTitle[0])
{
strncpy(szTitle, szURL, 255);
szURL[255] = 0;
}
Hash_Add(&gPrefs.hashCustomURLMenuItems, szTitle, szURL, NULL);
}
else
{
sprintf(buf, "command_%d", i+1);
GetPrivateProfileString("Custom_URL_Menu", buf, "", szTmp, _MAX_PATH, AppIniFile);
/* There's no URL, check for 'command' to WinExec */
if (szTmp[0])
{
sprintf(szEXE, "+%s", szTmp);
Hash_Add(&gPrefs.hashCustomURLMenuItems, szTitle, szEXE, NULL);
}
else
{
sprintf(szTitle, "__CustomURLSeparator%d", i);
Hash_Add(&gPrefs.hashCustomURLMenuItems, szTitle, "-", NULL);
}
}
}
}
}
#endif // _GIBRALTAR
#ifdef FEATURE_HTML_HIGHLIGHT
GetPrivateProfileString("Search", "Application", gPrefs.szSearchEngine, gPrefs.szSearchEngine, _MAX_PATH, AppIniFile);
{
int iRed, iGreen, iBlue;
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.highlight_color), GetGValue(gPrefs.highlight_color), GetBValue(gPrefs.highlight_color));
GetPrivateProfileString("Search", "Highlight_Color", buf, buf, 64, AppIniFile);
sscanf(buf, "%d,%d,%d", &iRed, &iGreen, &iBlue);
if ((iRed < 0) || (iRed > 255))
iRed = 0;
if ((iGreen < 0) || (iGreen > 255))
iGreen = 0;
if ((iBlue < 0) || (iBlue > 255))
iBlue = 255;
gPrefs.highlight_color = RGB(iRed, iGreen, iBlue);
}
#endif /* FEATURE_HTML_HIGHLIGHT */
LoadViewersInfo();
#ifdef PROTOCOL_HELPERS
LoadProtocolsInfo();
#endif PROTOCOL_HELPERS
}
void DestroyPreferences(void)
{
if (gPrefs.bCustomURLMenu)
{
Hash_FreeContents(&gPrefs.hashCustomURLMenuItems);
}
DestroyViewers();
#ifdef PROTOCOL_HELPERS
DestroyProtocols();
#endif /* PROTOCOL_HELPERS */
}
void PREF_SaveWindowPosition(HWND hWndFrame)
{
char szNum[32];
#ifdef _GIBRALTAR
WINDOWPLACEMENT wp;
wp.length = sizeof(wp);
GetWindowPlacement(hWndFrame, &wp);
gPrefs.cxWindow = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
gPrefs.cyWindow = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
gPrefs.xWindow = wp.rcNormalPosition.left;
gPrefs.yWindow = wp.rcNormalPosition.top;
sprintf(szNum, "%d", gPrefs.cxWindow);
WritePrivateProfileString("Document Windows", "width", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.cyWindow);
WritePrivateProfileString("Document Windows", "height", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.xWindow);
WritePrivateProfileString("Document Windows", "x", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.yWindow);
WritePrivateProfileString("Document Windows", "y", szNum, AppIniFile);
#else
RECT r;
/* Do not save the dimensions if the window is minimized */
if (IsIconic(hWndFrame))
{
return;
}
GetWindowRect(hWndFrame, &r);
gPrefs.cxWindow = r.right - r.left;
gPrefs.cyWindow = r.bottom - r.top;
gPrefs.xWindow = r.left;
gPrefs.yWindow = r.top;
sprintf(szNum, "%d", gPrefs.cxWindow);
WritePrivateProfileString("Document Windows", "width", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.cyWindow);
WritePrivateProfileString("Document Windows", "height", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.xWindow);
WritePrivateProfileString("Document Windows", "x", szNum, AppIniFile);
sprintf(szNum, "%d", gPrefs.yWindow);
WritePrivateProfileString("Document Windows", "y", szNum, AppIniFile);
#endif // _GIBRALTAR
}
#ifdef PROTOCOL_HELPERS
void SaveProtocolsInfo(void)
{
int count, i;
struct Protocol_Info *ppi;
char strEntry[63+1];
count = Hash_Count(gPrefs.pHashProtocols);
for (i=0; i < count; i++)
{
Hash_GetIndexedEntry(gPrefs.pHashProtocols, i, NULL, NULL, &ppi);
if (ppi->bTemporaryStruct) /* Do not save SDI structures */
{
continue;
}
sprintf(strEntry, "TYPE%d", i);
WritePrivateProfileString("Protocols", strEntry, ppi->szType, AppIniFile);
WritePrivateProfileString("Protocols", ppi->szType,
ppi->szProtocolApp[0] ? ppi->szProtocolApp : NULL, AppIniFile);
if (0 != strcmp(ppi->szDesc, ppi->szType))
{
WritePrivateProfileString("Protocol Descriptions", ppi->szType, ppi->szDesc, AppIniFile);
}
WritePrivateProfileString("SDI_Protocols", ppi->szType, ppi->szSmartProtocolServiceName, AppIniFile);
}
/* Now, delete the i+1 entry */
sprintf(strEntry, "TYPE%d", i);
WritePrivateProfileString("Protocols", strEntry, NULL, AppIniFile);
}
#endif /* PROTOCOL_HELPERS */
void SaveViewersInfo(void)
{
int count;
int i;
char strEntry[63+1];
struct Viewer_Info *pvi;
char *szMIMEType;
char *temp;
count = Hash_Count(gPrefs.pHashViewers);
for (i=0; i<count; i++)
{
Hash_GetIndexedEntry(gPrefs.pHashViewers, i, NULL, NULL, &pvi);
if (pvi->bTemporaryStruct) /* Do not save SDI structures */
{
continue;
}
sprintf(strEntry, "TYPE%d", i);
szMIMEType = HTAtom_name(pvi->atomMIMEType);
WritePrivateProfileString("Viewers", strEntry, szMIMEType, AppIniFile);
if (pvi->szViewerApp[0])
{
WritePrivateProfileString("Viewers", szMIMEType, pvi->szViewerApp, AppIniFile);
}
else
{
WritePrivateProfileString("Viewers", szMIMEType, NULL, AppIniFile);
}
/* Under Win32s, WritePrivateProfileString will modify its argument and
remove trailing spaces. */
temp = GTR_strdup(pvi->szSuffixes);
if (temp)
{
WritePrivateProfileString("Suffixes", szMIMEType, temp, AppIniFile);
GTR_FREE(temp);
}
WritePrivateProfileString("Encodings", szMIMEType, HTAtom_name(pvi->atomEncoding), AppIniFile);
if (0 != strcmp(pvi->szDesc, szMIMEType))
{
WritePrivateProfileString("MIME Descriptions", szMIMEType, pvi->szDesc, AppIniFile);
}
WritePrivateProfileString("SDI_Viewers", szMIMEType, pvi->szSmartViewerServiceName, AppIniFile);
#ifdef _GIBRALTAR
{
char buf[16];
int iHowToPresent = pvi->iHowToPresent;
if (pvi->fConfirmSave)
{
iHowToPresent += HTP_CONFIRM_OFFSET;
}
sprintf(buf, "%d", iHowToPresent);
WritePrivateProfileString("HowToPresent", szMIMEType, buf, AppIniFile);
}
#endif // _GIBRALTAR
}
/*
Now, delete the i+1 entry
*/
sprintf(strEntry, "TYPE%d", i);
WritePrivateProfileString("Viewers", strEntry, NULL, AppIniFile);
#ifndef _GIBRALTAR
WritePrivateProfileString("Helpers", "mailto", gPrefs.szMailToHelper, AppIniFile);
WritePrivateProfileString("Helpers", "telnet", gPrefs.szTelnetHelper, AppIniFile);
#endif // _GIBRALTAR
}
void SavePreferences(void)
{
char buf[256];
sprintf(buf, "%d", gPrefs.dcache_size_kilobytes);
WritePrivateProfileString("MainDiskCache", "Size_Kilobytes", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.dcache_verify_policy);
WritePrivateProfileString("MainDiskCache", "Verify_Policy", buf, AppIniFile);
WritePrivateProfileString("MainDiskCache", "Clear_On_Exit", (gPrefs.bClearMainCacheOnExit ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("MainDiskCache", "Directory", gPrefs.szMainCacheDir, AppIniFile);
WritePrivateProfileString("Main", "Use_System_Colors", (gPrefs.bUseSystemColors ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Ignore_Document_Attributes", (gPrefs.bIgnoreDocumentAttributes ? "yes" : "no"), AppIniFile);
sprintf(buf, "%d", gPrefs.ReformatHandling);
WritePrivateProfileString("Main", "Reformat_Handling", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.iUserTextSize);
WritePrivateProfileString("Main", "Display_Text_Size", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.iPrintTextSize);
WritePrivateProfileString("Main", "Print_Text_Size", buf, AppIniFile);
#ifdef _GIBRALTAR
sprintf(buf, "%d", gPrefs.iUserTextType);
WritePrivateProfileString("Main", "Display_Text_Type", buf, AppIniFile);
WritePrivateProfileString("Main", "Enable_Disk_Cache", (gPrefs.bEnableDiskCache ? "yes" : "no"), AppIniFile);
#endif // _GIBRALTAR
WritePrivateProfileString("Main", "Show Server Errors", (gPrefs.bShowServerErrors ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Display Inline Images", (gPrefs.bAutoLoadImages ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Dither_Colors", (gPrefs.bDitherColors ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Display_Images_Progressively", (gPrefs.bProgressiveImageDisplay ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Anchor Underline", (gPrefs.bUnderlineLinks ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Delete_Temp_Files_On_Exit", (gPrefs.bDeleteTempFilesOnExit ? "yes" : "no"), AppIniFile);
#ifdef FEATURE_OPTIONS_MENU
WritePrivateProfileString("Main", "Save_Session_History_On_Exit", (gPrefs.bSaveSessionHistoryOnExit ? "yes" : "no"), AppIniFile);
#endif
sprintf(buf, "%d", gPrefs.history_expire_days);
WritePrivateProfileString("Main", "History_Expire_Days", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.visitation_horizon);
WritePrivateProfileString("Main", "Anchor_Visitation_Horizon", buf, AppIniFile);
WritePrivateProfileString("Main", "Accept_Language_Header", gPrefs.szAcceptLanguageHeader, AppIniFile);
#ifndef _GIBRALTAR
WritePrivateProfileString("Mailto", "Email_Address", gPrefs.szEmailAddress, AppIniFile);
WritePrivateProfileString("Mailto", "Email_Server", gPrefs.szEmailServer, AppIniFile);
WritePrivateProfileString("Mailto", "SMTP_Server", gPrefs.szEmailServer, AppIniFile);
#endif // _GIBRALTAR
#ifdef _GIBRALTAR
WritePrivateProfileString("Services", "Enable Proxy", (gPrefs.fEnableProxy ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Convert Local Host Names To OEM", (gPrefs.fEnsureWinsHostName ? "yes" : "no"), AppIniFile);
#endif // _GIBRALTAR
WritePrivateProfileString("Services", "HTTP_Proxy_Server", gPrefs.szProxyHTTP, AppIniFile);
WritePrivateProfileString("Services", "Gopher_Proxy_Server", gPrefs.szProxyGOPHER, AppIniFile);
WritePrivateProfileString("Services", "FTP_Proxy_Server", gPrefs.szProxyFTP, AppIniFile);
WritePrivateProfileString("Services", "No_Proxy", gPrefs.szProxyOverrides, AppIniFile);
#ifndef _GIBRALTAR
WritePrivateProfileString("Services", "NNTP_Server", gPrefs.szNNTP_Server, AppIniFile);
#endif // _GIBRALTAR
WritePrivateProfileString("Main", "Home Page", gPrefs.szHomeURL, AppIniFile);
#ifdef FEATURE_OPTIONS_MENU
WritePrivateProfileString("Main", "Temp_Directory", gPrefs.szUserTempDir, AppIniFile);
#endif
#ifdef _GIBRALTAR
WritePrivateProfileString("Main", "Search Page", gPrefs.szSearchURL, AppIniFile);
WritePrivateProfileString("Main", "Show Statusbar", (gPrefs.bShowStatusBar ? "yes" : "no"), AppIniFile);
WritePrivateProfileString("Main", "Show Location", (gPrefs.bShowLocation ? "yes" : "no"), AppIniFile);
#endif _GIBRALTAR
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.anchor_color), GetGValue(gPrefs.anchor_color), GetBValue(gPrefs.anchor_color));
WritePrivateProfileString("Settings", "Anchor Color", buf, AppIniFile);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.anchor_color_beenthere), GetGValue(gPrefs.anchor_color_beenthere), GetBValue(gPrefs.anchor_color_beenthere));
WritePrivateProfileString("Settings", "Anchor Color Visited", buf, AppIniFile);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.window_color_text), GetGValue(gPrefs.window_color_text), GetBValue(gPrefs.window_color_text));
WritePrivateProfileString("Settings", "Text_Color", buf, AppIniFile);
sprintf(buf, "%d,%d,%d", GetRValue(gPrefs.window_bgcolor), GetGValue(gPrefs.window_bgcolor), GetBValue(gPrefs.window_bgcolor));
WritePrivateProfileString("Settings", "Background_Color", buf, AppIniFile);
#ifdef FEATURE_TOOLBAR
WritePrivateProfileString("Main", "Show Toolbar", (gPrefs.tb.bShowToolBar ? "yes" : "no"), AppIniFile);
#endif
#ifdef _GIBRALTAR
sprintf(buf, "%d", gPrefs.rtMargin.left);
WritePrivateProfileString("PageSetup", "margin_left", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.rtMargin.right);
WritePrivateProfileString("PageSetup", "margin_right", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.rtMargin.top);
WritePrivateProfileString("PageSetup", "margin_top", buf, AppIniFile);
sprintf(buf, "%d", gPrefs.rtMargin.bottom);
WritePrivateProfileString("PageSetup", "margin_bottom", buf, AppIniFile);
#else
sprintf(buf, "%f", gPrefs.page.marginleft);
WritePrivateProfileString("PageSetup", "margin_left", buf, AppIniFile);
sprintf(buf, "%f", gPrefs.page.margintop);
WritePrivateProfileString("PageSetup", "margin_top", buf, AppIniFile);
sprintf(buf, "%f", gPrefs.page.marginright);
WritePrivateProfileString("PageSetup", "margin_right", buf, AppIniFile);
sprintf(buf, "%f", gPrefs.page.marginbottom);
WritePrivateProfileString("PageSetup", "margin_bottom", buf, AppIniFile);
WritePrivateProfileString("PageSetup", "header_left", gPrefs.page.headerleft, AppIniFile);
WritePrivateProfileString("PageSetup", "header_right", gPrefs.page.headerright, AppIniFile);
WritePrivateProfileString("PageSetup", "footer_left", gPrefs.page.footerleft, AppIniFile);
WritePrivateProfileString("PageSetup", "footer_right", gPrefs.page.footerright, AppIniFile);
#endif // _GIBRALTAR
SaveViewersInfo();
#ifdef PROTOCOL_HELPERS
SaveProtocolsInfo();
#endif /* PROTOCOL_HELPERS */
}