X-Git-Url: http://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fauth%2Fcellconfig.c;h=d41d4d2a38af6e75a196e421824c9bc6e1a64856;hp=1fc1592b914567d429c15946924e61ae73d892f0;hb=d231134aadcaf2bd3a91f26ba6d3d451713a6fba;hpb=cd65475e95e25c8e7071e099a682bdcc03d2cce1 diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index 1fc1592..d41d4d2 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -195,12 +195,39 @@ afsconf_fgets(char *s, int n, afsconf_FILE *iop) } } } -#define fopen afsconf_fopen -#define fclose afsconf_fclose -#define fgets afsconf_fgets -#else -#define afsconf_FILE FILE -#endif /* AFS_SUN5_ENV && ! __sparcv9 */ + +#else /* AFS_SUN5_ENV && !__sparcv9 */ + +/* + * On all other platforms, we use the native stdio functions. We still go + * through our afsconf_f* wrappers here, to still do compile-time checks to + * make sure we don't mix afsconf_fopen with real stdio calls. + */ +struct afsconf_iobuffer; + +typedef struct afsconf_iobuffer afsconf_FILE; + +static afsconf_FILE * +afsconf_fopen(const char *fname, const char *fmode) +{ + return (afsconf_FILE*)fopen(fname, fmode); +} + +static int +afsconf_fclose(afsconf_FILE *iop) +{ + FILE *fh = (FILE *)iop; + return fclose(fh); +} + +static char * +afsconf_fgets(char *s, int n, afsconf_FILE *iop) +{ + FILE *fh = (FILE *)iop; + return fgets(s, n, fh); +} + +#endif /* AFS_SUN5_ENV && !__sparcv9 */ /* return port number in network byte order in the low 16 bits of a long; return -1 if not found */ afs_int32 @@ -446,12 +473,12 @@ ReadFirstLine(const char *pathname, char **aline) afsconf_FILE *fp; size_t len = 0; - fp = fopen(pathname, "r"); + fp = afsconf_fopen(pathname, "r"); if (!fp) return ENOENT; - if (fgets(buffer, sizeof(buffer), fp) != NULL) + if (afsconf_fgets(buffer, sizeof(buffer), fp) != NULL) len = strlen(buffer); - fclose(fp); + afsconf_fclose(fp); if (len == 0) return EIO; /* Trim the trailing newline, if one. */ @@ -578,12 +605,12 @@ GetCellUnix(struct afsconf_dir *adir) strcompose(tbuffer, 256, adir->name, "/", AFSDIR_THISCELL_FILE, (char *)NULL); - fp = fopen(tbuffer, "r"); + fp = afsconf_fopen(tbuffer, "r"); if (fp == 0) { return -1; } - rc = fgets(tbuffer, 256, fp); - fclose(fp); + rc = afsconf_fgets(tbuffer, 256, fp); + afsconf_fclose(fp); if (rc == NULL) return -1; @@ -745,7 +772,7 @@ LoadConfig(struct afsconf_dir *adir) adir->timeRead = 0; } - tf = fopen(adir->cellservDB, "r"); + tf = afsconf_fopen(adir->cellservDB, "r"); if (!tf) { return -1; } @@ -763,7 +790,7 @@ LoadConfig(struct afsconf_dir *adir) */ while (1) { - tp = fgets(tbuffer, sizeof(tbuffer), tf); + tp = afsconf_fgets(tbuffer, sizeof(tbuffer), tf); if (!tp) break; TrimLine(tbuffer, sizeof tbuffer); /* remove white space */ @@ -783,7 +810,7 @@ LoadConfig(struct afsconf_dir *adir) ParseCellLine(tbuffer, curEntry->cellInfo.name, linkedcell); if (code) { UnloadConfig(adir); - fclose(tf); + afsconf_fclose(tf); free(curEntry); return -1; } @@ -793,7 +820,7 @@ LoadConfig(struct afsconf_dir *adir) /* new host in the current cell */ if (!curEntry) { UnloadConfig(adir); - fclose(tf); + afsconf_fclose(tf); return -1; } i = curEntry->cellInfo.numServers; @@ -814,7 +841,7 @@ LoadConfig(struct afsconf_dir *adir) tbuffer, adir->cellservDB); } free(curEntry); - fclose(tf); + afsconf_fclose(tf); UnloadConfig(adir); return -1; } @@ -826,7 +853,7 @@ LoadConfig(struct afsconf_dir *adir) } } } - fclose(tf); /* close the file now */ + afsconf_fclose(tf); /* close the file now */ /* end the last partially-completed cell */ if (curEntry) { @@ -850,11 +877,11 @@ LoadConfig(struct afsconf_dir *adir) strcompose(tbuffer, 256, adir->name, "/", AFSDIR_CELLALIAS_FILE, (char *)NULL); - tf = fopen(tbuffer, "r"); + tf = afsconf_fopen(tbuffer, "r"); while (tf) { char *aliasPtr; - tp = fgets(tbuffer, sizeof(tbuffer), tf); + tp = afsconf_fgets(tbuffer, sizeof(tbuffer), tf); if (!tp) break; TrimLine(tbuffer, sizeof tbuffer); /* remove white space */ @@ -889,7 +916,7 @@ LoadConfig(struct afsconf_dir *adir) } if (tf != NULL) - fclose(tf); + afsconf_fclose(tf); /* now read the fs keys, if possible */ code = _afsconf_LoadKeys(adir);