From e29bd1f8d1734c45d244df45202a4b8eb47208c1 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Wed, 19 May 2010 15:04:45 -0500 Subject: [PATCH] libuafs: Add uafs_Init compat function Recent libuafs changes changed the libuafs initialization API. Add a uafs_Init wrapper for compatibility in case someone is using the old way. Change-Id: I30611479e0c281526dc52ac6a1969ae526886537 Reviewed-on: http://gerrit.openafs.org/2047 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afs/UKERNEL/afs_usrops.c | 106 +++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/src/afs/UKERNEL/afs_usrops.c b/src/afs/UKERNEL/afs_usrops.c index 8bb3381a2..bd1d6ab28 100644 --- a/src/afs/UKERNEL/afs_usrops.c +++ b/src/afs/UKERNEL/afs_usrops.c @@ -1107,6 +1107,112 @@ uafs_SetRxPort(int port) usr_rx_port = port; } +/* + * uafs_Init is for backwards compatibility only! Do not use it; use + * uafs_Setup, uafs_ParseArgs, and uafs_Run instead. + */ +void +uafs_Init(char *rn, char *mountDirParam, char *confDirParam, + char *cacheBaseDirParam, int cacheBlocksParam, int cacheFilesParam, + int cacheStatEntriesParam, int dCacheSizeParam, int vCacheSizeParam, + int chunkSizeParam, int closeSynchParam, int debugParam, + int nDaemonsParam, int cacheFlagsParam, char *logFile) +{ + int code; + int argc = 0; + char *argv[32]; + int freeargc = 0; + void *freeargv[32]; + char buf[1024]; + int i; + + code = uafs_Setup(mountDirParam); + usr_assert(code == 0); + + argv[argc++] = rn; + if (mountDirParam) { + argv[argc++] = "-mountdir"; + argv[argc++] = mountDirParam; + } + if (confDirParam) { + argv[argc++] = "-confdir"; + argv[argc++] = confDirParam; + } + if (cacheBaseDirParam) { + argv[argc++] = "-cachedir"; + argv[argc++] = cacheBaseDirParam; + } + if (cacheBlocksParam) { + snprintf(buf, sizeof(buf), "%d", cacheBlocksParam); + + argv[argc++] = "-blocks"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (cacheFilesParam) { + snprintf(buf, sizeof(buf), "%d", cacheFilesParam); + + argv[argc++] = "-files"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (cacheStatEntriesParam) { + snprintf(buf, sizeof(buf), "%d", cacheStatEntriesParam); + + argv[argc++] = "-stat"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (dCacheSizeParam) { + snprintf(buf, sizeof(buf), "%d", dCacheSizeParam); + + argv[argc++] = "-dcache"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (vCacheSizeParam) { + snprintf(buf, sizeof(buf), "%d", vCacheSizeParam); + + argv[argc++] = "-volumes"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (chunkSizeParam) { + snprintf(buf, sizeof(buf), "%d", chunkSizeParam); + + argv[argc++] = "-chunksize"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (closeSynchParam) { + argv[argc++] = "-waitclose"; + } + if (debugParam) { + argv[argc++] = "-debug"; + } + if (nDaemonsParam) { + snprintf(buf, sizeof(buf), "%d", nDaemonsParam); + + argv[argc++] = "-daemons"; + argv[argc++] = freeargv[freeargc++] = strdup(buf); + } + if (cacheFlagsParam) { + if (cacheFlagsParam & AFSCALL_INIT_MEMCACHE) { + argv[argc++] = "-memcache"; + } + } + if (logFile) { + argv[argc++] = "-logfile"; + argv[argc++] = logFile; + } + + argv[argc] = NULL; + + code = uafs_ParseArgs(argc, argv); + usr_assert(code == 0); + + for (i = 0; i < freeargc; i++) { + free(freeargv[i]); + } + + code = uafs_Run(); + usr_assert(code == 0); +} + void uafs_mount(void) { int rc; -- 2.39.5