BOOL Config_ContactGateway (LPTSTR pszGateway, LPTSTR pszCell) { BOOL rc = FALSE; BYTE OutData[ PIOCTL_MAXSIZE ]; memset (OutData, 0x00, sizeof(OutData)); struct ViceIoctl IOInfo; IOInfo.in_size = 0; IOInfo.in = 0; IOInfo.out = (char *)OutData; IOInfo.out_size = PIOCTL_MAXSIZE; TCHAR szOldGateway[ MAX_PATH ]; Config_GetGatewayName (szOldGateway); Config_SetGatewayName (pszGateway); ULONG status; if ((status = pioctl (0, VIOC_GET_WS_CELL, &IOInfo, 1)) == 0) { if (OutData[0]) { lstrcpy (pszCell, (LPCTSTR)OutData); rc = TRUE; } } Config_SetGatewayName (szOldGateway); return rc; }
BOOL GeneralTab_OnApply (HWND hDlg, BOOL fForce, BOOL fComplainIfInvalid) { if (!fForce) { // Don't try to do anything if we've already failed the apply if (GetWindowLongPtr (hDlg, DWLP_MSGRESULT)) return FALSE; } // If the user has changed CellServDB, configuration parameters for // the driver or anything else, we want to commit those changes first. // We *won't* commit server prefs changes yet, because we haven't yet // checked to see if the service is running. // if (!HostsTab_CommitChanges (fForce)) return FALSE; if (!AdvancedTab_CommitChanges (fForce)) return FALSE; if (!GeneralTab_VerifyOK (hDlg, fComplainIfInvalid)) return FALSE; TCHAR szText[ MAX_PATH ]; if (g.fIsWinNT) { GetDlgItemText (hDlg, IDC_CELL, szText, MAX_PATH); if (lstrcmpi (szText, g.Configuration.szCell)) { if (!Config_SetCellName (szText)) return FALSE; lstrcpy (g.Configuration.szCell, szText); } } BOOL fLogonAuthent = IsDlgButtonChecked (hDlg, IDC_LOGON); if (fLogonAuthent != g.Configuration.fLogonAuthent) { SetBitLogonOption(fLogonAuthent,LOGON_OPTION_INTEGRATED); g.Configuration.fLogonAuthent = fLogonAuthent; } Config_SetTrayIconFlag (IsDlgButtonChecked (hDlg, IDC_TRAYICON)); if (g.fIsWinNT) { BOOL fBeGateway = IsDlgButtonChecked (hDlg, IDC_GATEWAY); if (fBeGateway != g.Configuration.fBeGateway) { if (!Config_SetGatewayFlag (fBeGateway)) return FALSE; g.fNeedRestart = TRUE; g.Configuration.fBeGateway = fBeGateway; } } else // (!g.fIsWinNT) { GetDlgItemText (hDlg, IDC_GATEWAY, szText, MAX_PATH); if (lstrcmpi (szText, g.Configuration.szGateway)) { TCHAR szNewCell[ MAX_PATH ]; if (!Config_ContactGateway (szText, szNewCell)) { Message (MB_ICONASTERISK | MB_OK, GetErrorTitle(), IDS_BADGATEWAY_DESC); return FALSE; } if (!GeneralTab_VerifyCell (hDlg, fComplainIfInvalid, szNewCell)) return FALSE; if (!Config_SetGatewayName (szText)) return FALSE; if (!Config_SetCellName (szNewCell)) return FALSE; Config_FixGatewayDrives(); SetDlgItemText (hDlg, IDC_CELL, szNewCell); lstrcpy (g.Configuration.szGateway, szText); lstrcpy (g.Configuration.szCell, szNewCell); GeneralTab_OnGateway (hDlg); } } return TRUE; }