ntmakefile-clean-20040401
[openafs.git] / src / WINNT / client_creds / misc.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 extern "C" {
11 #include <afs/param.h>
12 #include <afs/stds.h>
13 }
14
15 #include "afscreds.h"
16
17
18 /*
19  * REALLOC ____________________________________________________________________
20  *
21  */
22
23 BOOL AfsCredsReallocFunction (LPVOID *ppTarget, size_t cbElement, size_t *pcTarget, size_t cReq, size_t cInc)
24 {
25    LPVOID pNew;
26    size_t cNew;
27
28    if (cReq <= *pcTarget)
29       return TRUE;
30
31    if ((cNew = cInc * ((cReq + cInc-1) / cInc)) <= 0)
32       return FALSE;
33
34    if ((pNew = Allocate (cbElement * cNew)) == NULL)
35       return FALSE;
36    memset (pNew, 0x00, cbElement * cNew);
37
38    if (*pcTarget != 0)
39       {
40       memcpy (pNew, *ppTarget, cbElement * (*pcTarget));
41       Free (*ppTarget);
42       }
43
44    *ppTarget = pNew;
45    *pcTarget = cNew;
46    return TRUE;
47 }
48
49
50 /*
51  * REGISTRY SETTINGS __________________________________________________________
52  *
53  */
54
55 void LoadRemind (size_t iCreds)
56 {
57    g.aCreds[ iCreds ].fRemind = TRUE;
58
59    HKEY hk;
60    if (RegOpenKey (HKEY_CURRENT_USER, REGSTR_PATH_OPENAFS_CLIENT_REMIND, &hk) == 0)
61       {
62       DWORD dwValue = 1;
63       DWORD dwSize = sizeof(dwValue);
64       DWORD dwType = REG_DWORD;
65       if (RegQueryValueEx (hk, g.aCreds[ iCreds ].szCell, NULL, &dwType, (PBYTE)&dwValue, &dwSize) == 0)
66          g.aCreds[ iCreds ].fRemind = dwValue;
67       RegCloseKey (hk);
68       }
69 }
70
71
72 void SaveRemind (size_t iCreds)
73 {
74    HKEY hk;
75    if (RegCreateKey (HKEY_CURRENT_USER, REGSTR_PATH_OPENAFS_CLIENT_REMIND, &hk) == 0)
76       {
77       DWORD dwValue = g.aCreds[ iCreds ].fRemind;
78       RegSetValueEx (hk, g.aCreds[ iCreds ].szCell, NULL, REG_DWORD, (PBYTE)&dwValue, sizeof(DWORD));
79       RegCloseKey (hk);
80       }
81 }
82
83
84 void TimeToSystemTime (SYSTEMTIME *pst, time_t TimeT)
85 {
86    memset (pst, 0x00, sizeof(SYSTEMTIME));
87
88    struct tm *pTime;
89    if ((pTime = localtime (&TimeT)) != NULL)
90       {
91       pst->wYear = pTime->tm_year + 1900;
92       pst->wMonth = pTime->tm_mon + 1;
93       pst->wDayOfWeek = pTime->tm_wday;
94       pst->wDay = pTime->tm_mday;
95       pst->wHour = pTime->tm_hour;
96       pst->wMinute = pTime->tm_min;
97       pst->wSecond = pTime->tm_sec;
98       pst->wMilliseconds = 0;
99       }
100 }
101
102
103 LPARAM GetTabParam (HWND hTab, int iTab)
104 {
105    TC_ITEM Item;
106    memset (&Item, 0x00, sizeof(Item));
107    Item.mask = TCIF_PARAM;
108    if (!TabCtrl_GetItem (hTab, iTab, &Item))
109       return NULL;
110    return Item.lParam;
111 }
112
113
114 HWND GetTabChild (HWND hTab)
115 {
116    for (HWND hChild = GetWindow (hTab, GW_CHILD);
117         hChild != NULL;
118         hChild = GetWindow (hChild, GW_HWNDNEXT))
119       {
120       TCHAR szClassName[ cchRESOURCE ];
121
122       if (GetClassName (hChild, szClassName, cchRESOURCE))
123          {
124          if (!lstrcmp (szClassName, TEXT("#32770"))) // WC_DIALOG
125             return hChild;
126          }
127       }
128
129    return NULL;
130 }
131