From: Simon Wilkinson Date: Tue, 26 Feb 2013 22:31:49 +0000 (+0000) Subject: auth: Refactor afsconf_Open failure handler X-Git-Tag: upstream/1.8.0_pre1^2~1398 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=a5324a6bb6ff127997c48b54f8ad0e98189f3f1e;p=packages%2Fo%2Fopenafs.git auth: Refactor afsconf_Open failure handler Refactor the code which returns a failure from afsconf_Open into a single section, rather than having multiple copies through out the routine. Change-Id: I70b3fec98321bf89e6d59055545d5d4193026d28 Reviewed-on: http://gerrit.openafs.org/9293 Tested-by: BuildBot Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman --- diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index 08cc6bedb..cffac984f 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -453,22 +453,17 @@ afsconf_Open(const char *adir) if (!(home_dir = getenv("HOME"))) { /* Our last chance is the "/.AFSCONF" file */ fp = fopen("/.AFSCONF", "r"); - if (fp == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (fp == 0) + goto fail; + fgets(afs_confdir, 128, fp); fclose(fp); } else { char *pathname = NULL; asprintf(&pathname, "%s/%s", home_dir, ".AFSCONF"); - if (pathname == NULL) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *) 0; - } + if (pathname == NULL) + goto fail; fp = fopen(pathname, "r"); free(pathname); @@ -476,21 +471,16 @@ afsconf_Open(const char *adir) if (fp == 0) { /* Our last chance is the "/.AFSCONF" file */ fp = fopen("/.AFSCONF", "r"); - if (fp == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (fp == 0) + goto fail; } fgets(afs_confdir, 128, fp); fclose(fp); } len = strlen(afs_confdir); - if (len == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (len == 0) + goto fail; + if (afs_confdir[len - 1] == '\n') { afs_confdir[len - 1] = 0; } @@ -500,13 +490,16 @@ afsconf_Open(const char *adir) code = afsconf_OpenInternal(tdir, 0, 0); if (code) { free(tdir->name); - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; + goto fail; } } UNLOCK_GLOBAL_MUTEX; return tdir; + +fail: + free(tdir); + UNLOCK_GLOBAL_MUTEX; + return NULL; } static int