Make hasquota thread safe.

This commit is contained in:
Kirk McKusick 2009-02-13 19:56:59 +00:00
parent 909d0c906f
commit a88984f248
2 changed files with 9 additions and 10 deletions

View File

@ -148,7 +148,7 @@ struct quotafile *quota_create(const char *);
void quota_close(struct quotafile *);
int quota_read(struct quotafile *, struct dqblk *, int);
int quota_write(struct quotafile *, const struct dqblk *, int);
int hasquota(struct fstab *, int, char **);
int hasquota(struct fstab *, int, char *, int);
#endif
__END_DECLS

View File

@ -280,13 +280,13 @@ quota_write(struct quotafile *qf, const struct dqblk *dqb, int id)
* Check to see if a particular quota is to be enabled.
*/
int
hasquota(struct fstab *fs, int type, char **qfnamep)
hasquota(struct fstab *fs, int type, char *qfnamep, int qfbufsize)
{
char *opt;
char *cp;
struct statfs sfb;
char buf[BUFSIZ];
static char initname, usrname[100], grpname[100];
static char buf[BUFSIZ];
if (!initname) {
(void)snprintf(usrname, sizeof(usrname), "%s%s",
@ -306,13 +306,6 @@ hasquota(struct fstab *fs, int type, char **qfnamep)
}
if (!opt)
return (0);
if (cp)
*qfnamep = cp;
else {
(void)snprintf(buf, sizeof(buf), "%s/%s.%s", fs->fs_file,
QUOTAFILENAME, qfextension[type]);
*qfnamep = buf;
}
/*
* Ensure that the filesystem is mounted.
*/
@ -320,5 +313,11 @@ hasquota(struct fstab *fs, int type, char **qfnamep)
strcmp(fs->fs_file, sfb.f_mntonname)) {
return (0);
}
if (cp) {
strncpy(qfnamep, cp, qfbufsize);
} else {
(void)snprintf(qfnamep, qfbufsize, "%s/%s.%s", fs->fs_file,
QUOTAFILENAME, qfextension[type]);
}
return (1);
}