$(NTMAKE)
$(CD) ..\..
-adminutil: tbutc
+talocale: tbutc
echo ***** $@
- $(DOCD) $(SRC)\libadmin\$@
- $(CD) $(SRC)\libadmin\$@
+ $(DOCD) $(SRC)\WINNT\$@
+ $(CD) $(SRC)\WINNT\$@
$(NTMAKE)
$(CD) ..\..\..
-vos: adminutil
+license: talocale
echo ***** $@
- $(DOCD) $(SRC)\libadmin\$@
- $(CD) $(SRC)\libadmin\$@
+ $(DOCD) $(SRC)\WINNT\$@
+ $(CD) $(SRC)\WINNT\$@
$(NTMAKE)
$(CD) ..\..\..
-client: vos
+client_osi: license
echo ***** $@
- $(DOCD) $(SRC)\libadmin\$@
- $(CD) $(SRC)\libadmin\$@
+ $(DOCD) $(SRC)\WINNT\$@
+ $(CD) $(SRC)\WINNT\$@
$(NTMAKE)
$(CD) ..\..\..
-kas: client
+afsd: client_osi
echo ***** $@
- $(DOCD) $(SRC)\libadmin\$@
- $(CD) $(SRC)\libadmin\$@
+ $(DOCD) $(SRC)\WINNT\$@
+ $(CD) $(SRC)\WINNT\$@
$(NTMAKE)
$(CD) ..\..\..
-pts: kas
+libadmin: afsd
echo ***** $@
- $(DOCD) $(SRC)\libadmin\$@
- $(CD) $(SRC)\libadmin\$@
+ $(DOCD) $(SRC)\$@
+ $(CD) $(SRC)\$@
$(NTMAKE)
- $(CD) ..\..\..
+ $(CD) ..\..
-bos: pts
+adminutil: libadmin
echo ***** $@
$(DOCD) $(SRC)\libadmin\$@
$(CD) $(SRC)\libadmin\$@
$(NTMAKE)
$(CD) ..\..\..
-talocale: bos
+vos: adminutil
echo ***** $@
- $(DOCD) $(SRC)\WINNT\$@
- $(CD) $(SRC)\WINNT\$@
+ $(DOCD) $(SRC)\libadmin\$@
+ $(CD) $(SRC)\libadmin\$@
$(NTMAKE)
$(CD) ..\..\..
-license: talocale
+client: vos
echo ***** $@
- $(DOCD) $(SRC)\WINNT\$@
- $(CD) $(SRC)\WINNT\$@
+ $(DOCD) $(SRC)\libadmin\$@
+ $(CD) $(SRC)\libadmin\$@
$(NTMAKE)
$(CD) ..\..\..
-client_osi: license
+kas: client
echo ***** $@
- $(DOCD) $(SRC)\WINNT\$@
- $(CD) $(SRC)\WINNT\$@
+ $(DOCD) $(SRC)\libadmin\$@
+ $(CD) $(SRC)\libadmin\$@
$(NTMAKE)
$(CD) ..\..\..
-afsd: client_osi
+pts: kas
echo ***** $@
- $(DOCD) $(SRC)\WINNT\$@
- $(CD) $(SRC)\WINNT\$@
+ $(DOCD) $(SRC)\libadmin\$@
+ $(CD) $(SRC)\libadmin\$@
$(NTMAKE)
$(CD) ..\..\..
-libadmin: afsd
+bos: pts
echo ***** $@
- $(DOCD) $(SRC)\$@
- $(CD) $(SRC)\$@
+ $(DOCD) $(SRC)\libadmin\$@
+ $(CD) $(SRC)\libadmin\$@
$(NTMAKE)
- $(CD) ..\..
+ $(CD) ..\..\..
cfg: bos
echo ***** $@
#endif /* AFS_AFSDB_ENV */
}
-/* look up the CellServDBDir's name in the Registry
- * or use the Client Dirpath value to produce a CellServDB
- * filename
+/* use cm_GetConfigDir() plus AFS_CELLSERVDB to
+ * generate the fully qualified name of the CellServDB
+ * file.
*/
long cm_GetCellServDB(char *cellNamep, afs_uint32 len)
{
void cm_GetConfigDir(char *dir, afs_uint32 len)
{
- char wdir[512];
- int tlen;
- char *afsconf_path;
- DWORD dwSize;
-
- dwSize = GetEnvironmentVariable("AFSCONF", NULL, 0);
- afsconf_path = malloc(dwSize);
- dwSize = GetEnvironmentVariable("AFSCONF", afsconf_path, dwSize);
- if (!afsconf_path) {
- DWORD code, dummyLen;
- HKEY parmKey;
-
- code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_OPENAFS_SUBKEY,
- 0, KEY_QUERY_VALUE, &parmKey);
- if (code != ERROR_SUCCESS)
- goto dirpath;
-
- dummyLen = sizeof(wdir);
- code = RegQueryValueEx(parmKey, "CellServDBDir", NULL, NULL,
- wdir, &dummyLen);
- RegCloseKey (parmKey);
-
- dirpath:
- if (code != ERROR_SUCCESS || wdir[0] == 0) {
- strncpy(wdir, AFSDIR_CLIENT_ETC_DIRPATH, sizeof(wdir));
- wdir[sizeof(wdir)-1] = '\0';
- }
- } else {
- strncpy(wdir, afsconf_path, sizeof(wdir));
- wdir[sizeof(wdir)-1] = '\0';
- free(afsconf_path);
- }
+ char * dirp = NULL;
- /* add trailing backslash, if required */
- tlen = (int)strlen(wdir);
- if (wdir[tlen-1] != '\\') {
- strncat(wdir, "\\", sizeof(wdir));
- wdir[sizeof(wdir)-1] = '\0';
+ if (!afssw_GetClientCellServDBDir(&dirp)) {
+ strncpy(dir, dirp, len);
+ dir[len-1] = '\0';
+ free(dirp);
+ } else {
+ dir[0] = '\0';
}
-
- strncpy(dir, wdir, len);
- dir[len-1] ='\0';
}
int
afssw_GetClientCellServDBDir(char **bufPP) /* [out] data buffer */
{
- return StringDataRead(AFSREG_CLT_OPENAFS_KEY,
+ char wdir[512];
+ int tlen;
+ char *path = NULL;
+ int rc;
+ DWORD cbPath;
+
+ cbPath = GetEnvironmentVariable("AFSCONF", NULL, 0);
+ if (cbPath) {
+ cbPath += 2;
+ path = malloc(cbPath);
+ }
+ if (path) {
+ GetEnvironmentVariable("AFSCONF", path, cbPath);
+ tlen = (int)strlen(path);
+ if (path[tlen-1] != '\\') {
+ strncat(path, "\\", cbPath);
+ path[cbPath-1] = '\0';
+ }
+ *bufPP = path;
+ return 0;
+ }
+
+ if (!StringDataRead(AFSREG_CLT_OPENAFS_KEY,
AFSREG_CLT_OPENAFS_CELLSERVDB_DIR_VALUE,
- bufPP);
+ &path)) {
+ tlen = (int)strlen(path);
+ if (path[tlen-1] != '\\') {
+ strncat(path, "\\", cbPath);
+ path[cbPath-1] = '\0';
+ }
+ *bufPP = path;
+ return 0;
+ }
+
+ return afssw_GetClientInstallDir(bufPP);
}
afssw_GetClientCellServDBDir(char **bufPP);
extern int
-afssw_GetClientCellDir(char **bufPP);
-
-extern int
afssw_GetClientCellName(char **bufPP);
extern int
$(DESTDIR)\lib\afs\afsvosadmin.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afsauthent.lib \
- $(DESTDIR)\lib\afs\afsreg.lib
+ $(DESTDIR)\lib\afs\afsreg.lib \
+ $(DESTDIR)\lib\libafsconf.lib
$(DLLFILE): $(DLLOBJS) $(DLLLIBS)
$(DLLCONLINK) /DEF:afscfgadmin.def
FilepathNormalize(ntServerInstallDirShort);
/* get the afs client configuration directory (/usr/vice/etc equivalent) */
- if (afssw_GetClientInstallDir(&buf)) {
+ if (afssw_GetClientCellServDBDir(&buf)) {
/* failed */
status = GetWindowsDirectory(ntClientConfigDirLong, AFSDIR_PATH_MAX);
if (status == 0 || status > AFSDIR_PATH_MAX) {