/* ---------------------------------------------------------------------- Copyright (c) 1996, Microsoft Corporation All rights reserved stiderc.c ---------------------------------------------------------------------- */ #include "precomp.h" #include "global.h" #include "dirlist.h" UINT gfOprahMode = 0; VOID static _GetPsz(LPTSTR * ppsz, PTCHAR pszDest) { PTCHAR pch = *ppsz; while (_T('\0') != *pch) { *pszDest++ = (*pch++)-1; } *pszDest = _T('\0'); *ppsz = pch+1; } PTCHAR static _NextWord(PTCHAR pch) { pch = (PTCHAR) _StrChr(pch, _T(',')); if (NULL != pch) { *pch = _T('\0'); pch++; } return pch; } HRESULT OprahDirectory(CDirListView* pdlv) { HRSRC hRes; PVOID pData; LPTSTR psz; PTCHAR pch; TCHAR szEmail[32]; TCHAR szCity[32]; TCHAR szCountry[128]; TCHAR rgsz[4][32]; if (NULL == (hRes = FindResource(GetInstanceHandle(), MAKEINTRESOURCE(IDC_STIDERC), "CDAT")) || (NULL == (psz = (LPTSTR) LockResource(LoadResource(GetInstanceHandle(), hRes))) ) ) { return E_FAIL; } _GetPsz(&psz, szEmail); _GetPsz(&psz, szCity); _GetPsz(&psz, rgsz[0]); _GetPsz(&psz, rgsz[1]); _GetPsz(&psz, rgsz[2]); _GetPsz(&psz, rgsz[3]); for ( ; ; ) { TCHAR szRow[MAX_PATH]; UINT bFlags; LPTSTR pszFirst; LPTSTR pszLast; LPTSTR pszComments; LPTSTR pszCity; LPTSTR pszCountry; _GetPsz(&psz, szRow); if (FEmptySz(szRow)) break; pch = szRow; bFlags = (*pch) - _T('\0'); pch++; pszFirst = pch; pch = _NextWord(pch); pszLast = pch; pch = _NextWord(pch); pszComments = pch; pch++; switch (*pch) { case _T(','): pch++; case _T('\0'): pszComments = rgsz[*pszComments-_T('1')]; break; default: pch = _NextWord(pch); break; } if (FEmptySz(pch)) { pszCity = szCity; pszCountry = TEXT("US"); } else { pszCity = pch; pszCountry = _NextWord(pch); } if ((_T('\0') != pszCountry[0]) && (_T('\0') != pszCountry[1]) && (_T('\0') == pszCountry[2])) { if (pdlv->FFindCountry(szCountry, pszCountry)) { pszCountry = szCountry; } } pdlv->Add(szEmail, pszFirst, pszLast, pszCity, pszCountry, pszComments, (bFlags & 0x04) ? II_IN_CALL : II_NOT_IN_CALL, (bFlags & 0x01) ? II_AUDIO_CAPABLE : 0, (bFlags & 0x02) ? II_VIDEO_CAPABLE : 0); } FreeResource(hRes); pdlv->CancelDirectory(); return E_FAIL; }