BOOL Group_Create_OnOK (HWND hDlg) { LPCREATEGROUPDLG lpp = (LPCREATEGROUPDLG)GetWindowLongPtr (hDlg, DWLP_USER); // Start a background task to do all the work. // LPGROUP_CREATE_PARAMS pTask = New (GROUP_CREATE_PARAMS); memset (pTask, 0x00, sizeof(GROUP_CREATE_PARAMS)); if (IsDlgButtonChecked (hDlg, IDC_NEWGROUP_ID_AUTO)) pTask->idGroup = UID_AUTOSELECT; else // (IsDlgButtonChecked (hDlg, IDC_NEWGROUP_ID_MANUAL)) pTask->idGroup = SP_GetPos (GetDlgItem (hDlg, IDC_NEWGROUP_ID)); lstrcpy (pTask->Properties.szOwner, lpp->Advanced.szOwner); pTask->Properties.aaListStatus = lpp->Advanced.aaStatus; pTask->Properties.aaListGroupsOwned = lpp->Advanced.aaGroups; pTask->Properties.aaListMembers = lpp->Advanced.aaMembers; pTask->Properties.aaAddMember = lpp->Advanced.aaAdd; pTask->Properties.aaDeleteMember = lpp->Advanced.aaRemove; if (lpp->Advanced.pMembers) asc_AsidListCopy (&pTask->pMembers, &lpp->Advanced.pMembers); else pTask->pMembers = NULL; if (lpp->Advanced.pGroupsOwner) asc_AsidListCopy (&pTask->pGroupsOwner, &lpp->Advanced.pGroupsOwner); else pTask->pGroupsOwner = NULL; // Crack the specified list of user names into a multi-string // TCHAR szSeparators[ cchRESOURCE ]; GetString (szSeparators, IDS_SEPARATORS); lstrcat (szSeparators, TEXT(" \t")); LPTSTR pszNames = GetEditText (GetDlgItem (hDlg, IDC_NEWGROUP_NAME)); LPCTSTR pszStart = pszNames; while (lstrchr (szSeparators, *pszStart)) ++pszStart; while (*pszStart) { // Find the first non-name character // LPCTSTR pszEnd = pszStart; while (*pszEnd && !lstrchr(szSeparators, *pszEnd)) ++pszEnd; // Copy off this particular name // TCHAR szName[ cchNAME ]; lstrcpy (szName, pszStart); szName[ pszEnd - pszStart ] = TEXT('\0'); if (szName[0]) FormatMultiString (&pTask->mszNames, FALSE, TEXT("%1"), TEXT("%s"), szName); // Find the next valid-name character // pszStart = pszEnd; while (lstrchr(szSeparators, *pszStart)) ++pszStart; } FreeString (pszNames); // Do the real work of creating the user(s) // StartTask (taskGROUP_CREATE, NULL, pTask); // Store these creation parameters as the new defaults // memcpy (&gr.CreateGroup, &lpp->Advanced, sizeof(GROUPPROPINFO)); return TRUE; }
EXPORTED BOOL ADMINAPI AfsAppLib_asc_AsidListCopy (LPASIDLIST *ppListTarget, LPASIDLIST *ppListSource) { return asc_AsidListCopy (ppListTarget, ppListSource); }