windows-more-cellservdb-consolidation-20080201
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 2 Feb 2008 02:46:16 +0000 (02:46 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 2 Feb 2008 02:46:16 +0000 (02:46 +0000)
LICENSE MIT

Merge cellconfig.c and the afsreg library.
Redefine the location of the client cellservdb directory in dirpath
in terms of the cellservdb direction and not the install directory.
(although they point at the same thing now by default.)

Future changes to the location of the cellservdb directory should
be made in afsreg.

src/NTMakefile
src/WINNT/afsd/cm_config.c
src/WINNT/afsreg/afssw.c
src/WINNT/afsreg/afssw.h
src/libadmin/cfg/NTMakefile
src/util/dirpath.c

index ac0acb5..0531958 100644 (file)
@@ -402,82 +402,82 @@ tbutc:  tviced
      $(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 ***** $@
index de7de24..ddf2219 100644 (file)
@@ -318,9 +318,9 @@ long cm_SearchCellByDNS(char *cellNamep, char *newCellNamep, int *ttl,
 #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)
 {
@@ -541,46 +541,13 @@ long cm_CloseCellFile(cm_configFile_t *filep)
 
 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';
 }
index c6aa2fe..9c23ba3 100644 (file)
@@ -77,9 +77,41 @@ afssw_GetClientInstallDir(char **bufPP)   /* [out] data buffer */
 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);
 }
 
 
index 5eaecbe..4d8326e 100644 (file)
@@ -23,9 +23,6 @@ extern int
 afssw_GetClientCellServDBDir(char **bufPP);
 
 extern int
-afssw_GetClientCellDir(char **bufPP);
-
-extern int
 afssw_GetClientCellName(char **bufPP);
 
 extern int
index 3f11f0c..b8c3c76 100644 (file)
@@ -55,7 +55,8 @@ DLLLIBS =\
        $(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
index ee245cf..2648fd1 100644 (file)
@@ -135,7 +135,7 @@ initDirPathArray(void)
     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) {