/* * NOTE: This function has an important side effect. If this machine * is not the first in a new cell, then this function will get the * cell name from the config info. The cell name may be needed in * config calls that come later, and so this function must be called * before they are. */ static int IsConfigInfoValid(BOOL& bValid, afs_status_t& nStatus) { if (bCancel) return FALSE; afs_status_t configStatus; char *pszCellName = 0; NextStep(IDS_CHECK_CONFIG_INFO); bValid = FALSE; g_LogFile.Write("Is there valid configuration information on this machine: "); int nResult = cfg_HostQueryStatus(GetHostnameA(), &configStatus, &pszCellName, &nStatus); if (!nResult) return FALSE; g_LogFile.WriteBoolResult((configStatus == 0)); if (configStatus == 0) lstrncpy(g_CfgData.szCellName, A2S(pszCellName), MAX_CELL_NAME_LEN); else g_LogFile.WriteError("The configuration information on this host is not valid", configStatus); bValid = (BOOL)(configStatus == 0); return TRUE; }
static BOOL GetDriveInfo(TCHAR chDrive, DRIVE_INFO& di) { DWORD dwDummy; TCHAR szFileSys[64]; DWORD dwDriveFlags; _stprintf(di.szRootDir, TEXT("%c:\\"), chDrive); if (GetDriveType(di.szRootDir) != DRIVE_FIXED) return FALSE; if (!GetVolumeInformation(di.szRootDir, di.szVolName, sizeof(di.szVolName), 0, &dwDummy, &dwDriveFlags, szFileSys, sizeof(szFileSys))) return FALSE; TCHAR szError[256] = TEXT(""); BOOL bInvalid = FALSE, bHasData = FALSE; BOOL bIsAfs = ValidateDrive(IsAnAfsPartition(di.szRootDir), IDS_ERROR_DRIVE_ALREADY_HAS_AFS, szError); if (!bIsAfs) { bInvalid |= ValidateDrive(dwDriveFlags & FS_VOL_IS_COMPRESSED, IDS_ERROR_DRIVE_COMPRESSED, szError); bInvalid |= ValidateDrive(lstrcmp(szFileSys, TEXT("NTFS")) != 0, IDS_ERROR_FS_IS_NOT_NTFS, szError); /* * We are no longer going to require that afs drives be empty; we will give a warning instead. * * bInvalid |= ValidateDrive(DoesDriveContainNT(di.szRootDir), IDS_ERROR_DRIVE_CONTAINS_NT, szError); * bRecycle = ValidateDrive(DriveHasRecycleBin(di.szRootDir), IDS_WARNING_DRIVE_HAS_RECYCLE_BIN, szError); */ if (!bInvalid) bHasData = ValidateDrive(DoesDriveContainData(di.szRootDir), IDS_ERROR_DRIVE_HAS_DATA, szError); } if (*szError) { lstrcpy(di.szVolName, szError); if (bIsAfs) di.nImage = AFS_DISK_DRIVE_IMAGE; else if (bHasData) di.nImage = DISK_DRIVE_WITH_WARNING_IMAGE; // Treat this as a warning else di.nImage = DISABLED_DISK_DRIVE_IMAGE; if (bIsAfs || bInvalid) { di.bDisabled = TRUE; di.dwFlags |= FLIF_DISALLOW_SELECT; } } else { di.nImage = DISK_DRIVE_IMAGE; if (lstrlen(di.szVolName) == 0) GetString(di.szVolName, IDS_VOLUME_HAS_NO_NAME); } lstrncpy(di.szSize, GetDriveSizeAsString(di.szRootDir), sizeof(di.szSize)); return TRUE; }
static BOOL SavePageInfo() { TCHAR szText[cchRESOURCE]; GetWndText(hDlg, IDC_CELL_NAME, szText); if (lstrlen(szText) > MAX_CELL_NAME_LEN) { MsgBox(hDlg, IDS_CELL_NAME_LEN_ERROR, GetAppTitleID(), MB_ICONSTOP | MB_OK); return FALSE; } lstrcpy(g_CfgData.szCellName, szText); lstrncpy(g_CfgData.szServerPW, GetWndText(hDlg, IDC_SERVER_PW, szText), MAX_SERVER_PW_LEN); g_CfgData.bFirstServer = IsButtonChecked(hDlg, IDC_FIRST_SERVER); return TRUE; }
static BOOL IsClientConfigured(BOOL& bConfigured, afs_status_t& nStatus) { if (bCancel) return FALSE; bConfigured = FALSE; NextStep(IDS_CHECK_AFS_CLIENT); short isInstalled; afs_status_t configStatus; char *pszCellName = 0; g_LogFile.Write("Is the AFS Client installed on this machine: "); if (!cfg_ClientQueryStatus(GetHostnameA(), &isInstalled, &g_CfgData.nClientVersion, &configStatus, &pszCellName, &nStatus)) { ImmediateErrorDialog(nStatus, IDS_ERROR_AFS_CLIENT_CHECK); return FALSE; } g_LogFile.WriteBoolResult((BOOL)isInstalled); bConfigured = (BOOL)(configStatus == 0); if (bConfigured) lstrncpy(g_CfgData.szClientCellName, A2S(pszCellName), MAX_CELL_NAME_LEN); else g_LogFile.WriteError("The client configuration information on this host is not valid", configStatus); if (!isInstalled) { g_LogFile.Write("ERROR: AFS Client is not installed. The AFS Server requires the AFS Client.\r\n"); ImmediateErrorDialog(0, IDS_ERROR_AFS_CLIENT_NOT_INSTALLED); nStatus = -1; // Just need something nonzero return FALSE; } return TRUE; }
LPTSTR Services_GetColumnText (LPIDENT lpi, SERVICECOLUMN svccol, BOOL fShowServerName) { static TCHAR aszBuffer[ nSERVICECOLUMNS ][ cchRESOURCE ]; static size_t iBufferNext = 0; LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ]; if (iBufferNext == nSERVICECOLUMNS) iBufferNext = 0; *pszBuffer = TEXT('\0'); LPSERVICESTATUS lpss = NULL; LPSERVICE_PREF lpsp; if ((lpsp = (LPSERVICE_PREF)lpi->GetUserParam()) != NULL) lpss = &lpsp->ssLast; switch (svccol) { case svccolNAME: if (!fShowServerName) lpi->GetServiceName (pszBuffer); else { TCHAR szNameSvr[ cchNAME ]; TCHAR szNameSvc[ cchNAME ]; lpi->GetServerName (szNameSvr); lpi->GetServiceName (szNameSvc); LPTSTR pszName = FormatString (IDS_SERVER_SERVICE, TEXT("%s%s"), szNameSvr, szNameSvc); lstrcpy (pszBuffer, pszName); FreeString (pszName); } break; case svccolTYPE: if (lpss) { if (lpss->type == SERVICETYPE_SIMPLE) GetString (pszBuffer, IDS_SERVICETYPE_SIMPLE); else if (lpss->type == SERVICETYPE_FS) GetString (pszBuffer, IDS_SERVICETYPE_FS); else GetString (pszBuffer, IDS_SERVICETYPE_CRON); } break; case svccolPARAMS: if (lpss) { lstrncpy (pszBuffer, lpss->szParams, cchRESOURCE-1); pszBuffer[ cchRESOURCE-1 ] = TEXT('\0'); for (LPTSTR pch = pszBuffer; *pch; ++pch) { if (*pch == TEXT('\r') || *pch == TEXT('\t') || *pch == TEXT('\n')) *pch = TEXT(' '); } } break; case svccolNOTIFIER: if (lpss) { lstrncpy (pszBuffer, lpss->szNotifier, cchRESOURCE-1); pszBuffer[ cchRESOURCE-1 ] = TEXT('\0'); for (LPTSTR pch = pszBuffer; *pch; ++pch) { if (*pch == TEXT('\r') || *pch == TEXT('\t') || *pch == TEXT('\n')) *pch = TEXT(' '); } } break; case svccolSTATUS: if (lpss) { if (lpss->state == SERVICESTATE_RUNNING) GetString (pszBuffer, IDS_SERVICESTATE_RUNNING); else if (lpss->state == SERVICESTATE_STOPPING) GetString (pszBuffer, IDS_SERVICESTATE_STOPPING); else if (lpss->state == SERVICESTATE_STARTING) GetString (pszBuffer, IDS_SERVICESTATE_STARTING); else GetString (pszBuffer, IDS_SERVICESTATE_STOPPED); } break; case svccolDATE_START: if (lpss) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastStart)) pszBuffer[0] = TEXT('\0'); } break; case svccolDATE_STOP: if (lpss) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastStop)) pszBuffer[0] = TEXT('\0'); } break; case svccolDATE_STARTSTOP: if (lpss) { LPSYSTEMTIME pst; int ids; if ((lpss->state == SERVICESTATE_RUNNING) || (lpss->state == SERVICESTATE_STARTING)) { ids = IDS_SERVICE_STARTDATE; pst = &lpss->timeLastStart; } else { ids = IDS_SERVICE_STOPDATE; pst = &lpss->timeLastStop; } TCHAR szDate[ cchRESOURCE ]; if (FormatTime (szDate, TEXT("%s"), pst)) { LPTSTR psz = FormatString (ids, TEXT("%s"), szDate); lstrcpy (pszBuffer, psz); FreeString (psz); } } break; case svccolDATE_FAILED: if (lpss) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastFail)) pszBuffer[0] = TEXT('\0'); } break; case svccolLASTERROR: if (lpss) { LPTSTR psz = FormatString (IDS_SERVICE_LASTERROR, TEXT("%ld"), lpss->dwErrLast); lstrcpy (pszBuffer, psz); FreeString (psz); } break; } return pszBuffer; }
/****************************************************************************** TerEnableTracking: Enable or disable tracking of text changes. This function returns the previous status. ******************************************************************************/ BOOL WINAPI _export TerEnableTracking(HWND hWnd, bool enable, LPBYTE UName, BOOL UseDefaultClrStyle, DWORD InsStyle, COLORREF InsColor, DWORD DelStyle, COLORREF DelColor) { BYTE name[UNLEN+1]; LPBYTE pName=null; int i,len; SYSTEMTIME SysTime; FILETIME FileTime; WORD DosDate,DosTime; bool NewUser=false; PTERWND w; if (NULL==(w=GetWindowPointer(hWnd))) return false; // get the pointer to window data if (!TerArg.WordWrap) return false; if (TrackChanges == enable) return true; // no status change requested TrackChanges=enable; if (enable) { if (UName && lstrlen(UName)>0) pName=UName; else { // get system user name len=UNLEN; name[0]=0; GetUserName(name,&len); if (len>49) len=49; // StrReviewer limit name[len]=0; pName=name; } // check if this reviewer exists for (i=1;i<TotalReviewers;i++) if (lstrcmpi(reviewer[i].name,pName)==0) break; if (i==TotalReviewers) { i=GetReviewerSlot(w); lstrncpy(reviewer[i].name,pName,49); // copy name reviewer[i].name[49]=0; NewUser=true; } if (!UseDefaultClrStyle) { reviewer[i].InsStyle=InsStyle; reviewer[i].DelStyle=DelStyle; reviewer[i].InsColor=InsColor; reviewer[i].DelColor=DelColor; reviewer[i].FmtColor=InsColor; } TrackRev=i; // current reviewer id // get the current date/time as DWORD GetLocalTime(&SysTime); SystemTimeToFileTime(&SysTime,&FileTime); FileTimeToDosDateTime(&FileTime,&DosDate,&DosTime); TrackTime=(((DWORD)DosDate)<<16)+DosTime; InsertMode=true; // insert mode always true when tracking if (!NewUser) { // font/style might have changed, so recreate the fonts RecreateFonts(w,hTerDC); RequestPagination(w,true); PaintTer(w); } } else { TrackRev=0; TrackTime=0; } return true; }