svn commit: r188598 - projects/quota64/lib/libutil

Kirk McKusick mckusick at FreeBSD.org
Fri Feb 13 11:57:00 PST 2009


Author: mckusick
Date: Fri Feb 13 19:56:59 2009
New Revision: 188598
URL: http://svn.freebsd.org/changeset/base/188598

Log:
  Make hasquota thread safe.

Modified:
  projects/quota64/lib/libutil/libutil.h
  projects/quota64/lib/libutil/quotafile.c

Modified: projects/quota64/lib/libutil/libutil.h
==============================================================================
--- projects/quota64/lib/libutil/libutil.h	Fri Feb 13 19:49:51 2009	(r188597)
+++ projects/quota64/lib/libutil/libutil.h	Fri Feb 13 19:56:59 2009	(r188598)
@@ -148,7 +148,7 @@ struct quotafile *quota_create(const cha
 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

Modified: projects/quota64/lib/libutil/quotafile.c
==============================================================================
--- projects/quota64/lib/libutil/quotafile.c	Fri Feb 13 19:49:51 2009	(r188597)
+++ projects/quota64/lib/libutil/quotafile.c	Fri Feb 13 19:56:59 2009	(r188598)
@@ -280,13 +280,13 @@ quota_write(struct quotafile *qf, const 
  * 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, cha
 	}
 	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, cha
 	    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);
 }


More information about the svn-src-projects mailing list