[Pkg-shadow-commits] r3161 - in upstream/trunk: . libmisc

Nicolas FRANÇOIS nekral-guest at alioth.debian.org
Thu Mar 18 23:20:24 UTC 2010


Author: nekral-guest
Date: 2010-03-18 23:20:24 +0000 (Thu, 18 Mar 2010)
New Revision: 3161

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/libmisc/limits.c
Log:
	* libmisc/limits.c: Re-indent.
	* libmisc/limits.c: Reformat the documentation. Avoid personal
	comments.
	* man/limits.5.xml: Document the new features.

Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2010-03-18 23:20:15 UTC (rev 3160)
+++ upstream/trunk/ChangeLog	2010-03-18 23:20:24 UTC (rev 3161)
@@ -1,10 +1,15 @@
+2010-03-18  Nicolas François  <nicolas.francois at centraliens.net>
+
+	* libmisc/limits.c: Re-indent.
+	* libmisc/limits.c: Reformat the documentation. Avoid personal
+	comments.
+	* man/limits.5.xml: Document the new features.
+
 2010-03-18  Thomas Orgis  <thomas at orgis.org>
 
 	* NEWS, libmisc/limits.c: Fix parsing of limits.
-	* NEWS, libmisc/limits.c, man/limits.5.xml: Add support for
-	infinite limits.
-	* NEWS, libmisc/limits.c, man/limits.5.xml: Add support for @group
-	syntax.
+	* NEWS, libmisc/limits.c: Add support for infinite limits.
+	* NEWS, libmisc/limits.c: Add support for @group syntax.
 
 2010-03-18  Nicolas François  <nicolas.francois at centraliens.net>
 

Modified: upstream/trunk/libmisc/limits.c
===================================================================
--- upstream/trunk/libmisc/limits.c	2010-03-18 23:20:15 UTC (rev 3160)
+++ upstream/trunk/libmisc/limits.c	2010-03-18 23:20:24 UTC (rev 3161)
@@ -33,7 +33,7 @@
 /*
  * Separated from setup.c.  --marekm
  * Resource limits thanks to Cristian Gafton.
- * Enhancements of resource limit code by Thomas Orgis <thomas at orgis.org> ("thor").
+ * Enhancements of resource limit code by Thomas Orgis <thomas at orgis.org>
  */
 
 #include <config.h>
@@ -66,36 +66,40 @@
  *	value - string value to be read
  *	multiplier - value*multiplier is the actual limit
  */
-static int
-setrlimit_value (unsigned int resource, const char *value,
-		 unsigned int multiplier)
+static int setrlimit_value (unsigned int resource,
+                            const char *value,
+                            unsigned int multiplier)
 {
 	struct rlimit rlim;
 	rlim_t limit;
 
 	/* The "-" is special, not belonging to a strange negative limit.
-	   It is infinity, in a controlled way. --thor */
-	if(value[0] == '-') {
+	 * It is infinity, in a controlled way.
+	 */
+	if ('-' == value[0]) {
 		limit = RLIM_INFINITY;
 	}
 	else {
 		/* We cannot use getlong here because it fails when there
-		   is more to the value than just this number!
-		   Also, we are limited to base 10 here (hex numbers will not
-		   work with the limit string parser as is anyway) --thor */
+		 * is more to the value than just this number!
+		 * Also, we are limited to base 10 here (hex numbers will not
+		 * work with the limit string parser as is anyway)
+		 */
 		char *endptr;
-		long longlimit = strtol(value, &endptr, 10);
+		long longlimit = strtol (value, &endptr, 10);
 		if ((0 == longlimit) && (value == endptr)) {
 			/* No argument at all. No-op.
-			   We could instead throw an error, though. --thor */
+			 * FIXME: We could instead throw an error, though.
+			 */
 			return 0;
 		}
 		longlimit *= multiplier;
 		limit = (rlim_t)longlimit;
-		if(longlimit != limit)
+		if (longlimit != limit)
 		{
-			/* Again, silent error handling... I left it that way.
-			   Wouldn't screaming make more sense? --thor */
+			/* FIXME: Again, silent error handling...
+			 * Wouldn't screaming make more sense?
+			 */
 			return 0;
 		}
 	}
@@ -221,8 +225,8 @@
  * [Ii]: i = RLIMIT_NICE    max nice value (0..39 translates to 20..-19)
  * [Oo]: o = RLIMIT_RTPRIO  max real time priority (linux/sched.h 0..MAX_RT_PRIO)
  *
- * Remember to extend the "no-limits" string below when adding a new limit...
- *   --thor
+ * NOTE: Remember to extend the "no-limits" string below when adding a new
+ * limit...
  *
  * Return value:
  *		0 = okay, of course
@@ -239,17 +243,22 @@
 	bool reported = false;
 
 	pp = buf;
-	/* Skip leading whitespace. --thor */
-	while(*pp == ' ' || *pp == '\t') ++pp;
+	/* Skip leading whitespace. */
+	while ((' ' == *pp) || ('\t' == *pp)) {
+		pp++;
+	}
 
-	/* The special limit string "-" results in no limit for all known limits.
-	   We achieve that by parsing a full limit string, parts of it being ignored
-	   if a limit type is not known to the system.
-	   Though, there will be complaining for unknown limit types. --thor */
-	if(strcmp(pp, "-") == 0) {
+	/* The special limit string "-" results in no limit for all known
+	 * limits.
+	 * We achieve that by parsing a full limit string, parts of it
+	 * being ignored if a limit type is not known to the system.
+	 * Though, there will be complaining for unknown limit types.
+	 */
+	if (strcmp (pp, "-") == 0) {
 		/* Remember to extend this, too, when adding new limits!
-		   Oh... but "unlimited" does not make sense for umask, or does it?
-		   --thor */
+		 * Oh... but "unlimited" does not make sense for umask,
+		 * or does it?
+		 */
 		pp = "A- C- D- F- M- N- R- S- T- P- I- O-";
 	}
 
@@ -354,10 +363,12 @@
 			break;
 		default:
 			/* Only report invalid strings once */
-			/* Note: A string can be invalid just because a specific (theoretically
-			   valid) setting is not supported by this build.
-			   It is just a warning in syslog anyway. The line is still processed
-			   --thor */
+			/* Note: A string can be invalid just because a
+			 * specific (theoretically valid) setting is not
+			 * supported by this build.
+			 * It is just a warning in syslog anyway. The line
+			 * is still processed
+			 */
 			if (!reported) {
 				SYSLOG ((LOG_WARN,
 				         "Invalid limit string: '%s'",
@@ -366,13 +377,18 @@
 				retval |= LOGIN_ERROR_RLIMIT;
 			}
 		}
-		/* After parsing one limit setting (or just complaining about it),
-		   one still needs to skip its argument to prevent a bogus warning on
-		   trying to parse that as limit specification.
-		   So, let's skip all digits, "-" and our limited set of whitespace.
-		   --thor */
-		while(isdigit(*pp) || *pp == '-' || *pp == ' ' || *pp == '\t') {
-			++pp;
+		/* After parsing one limit setting (or just complaining
+		 * about it), one still needs to skip its argument to
+		 * prevent a bogus warning on trying to parse that as
+		 * limit specification.
+		 * So, let's skip all digits, "-" and our limited set of
+		 * whitespace.
+		 */
+		while (   isdigit (*pp)
+		       || ('-'  == *pp)
+		       || (' '  == *pp)
+		       || ('\t' ==*pp)) {
+			pp++;
 		}
 	}
 	return retval;
@@ -381,32 +397,28 @@
 /* Check if user uname is in the group gname.
  * Can I be sure that gr_mem contains no UID as string?
  * Returns true when user is in the group, false when not.
- * Any error is treated as false. --thor
+ * Any error is treated as false.
  */
 static bool user_in_group (const char *uname, const char *gname)
 {
 	struct group *groupdata;
 	char **member;
-	if(uname == NULL || gname == NULL){ 
+
+	if (uname == NULL || gname == NULL){ 
 		return false;
 	}
+
 	/* We are not claiming to be re-entrant!
 	 * In case of paranoia or a multithreaded login program,
 	 * one needs to add some mess for getgrnam_r. */
-	groupdata = getgrnam(gname);
-	if(groupdata == NULL) {
-		SYSLOG ((LOG_WARN, "Nonexisting group `%s' in limits file.", gname));
+	groupdata = getgrnam (gname);
+	if (NULL == groupdata) {
+		SYSLOG ((LOG_WARN, "Nonexisting group `%s' in limits file.",
+		         gname));
 		return false;
 	}
-	/* Now look for our user in the list of members. */
-	member = groupdata->gr_mem;
-	while(*member != NULL) {
-		if(strcmp(*member, uname) == 0) {
-			return true;
-		}
-		++member;
-	}
-	return false;
+
+	return is_on_list (groupdata->gr_mem, uname);
 }
 
 static int setup_user_limits (const char *uname)
@@ -432,8 +444,10 @@
 	}
 	/* The limits file have the following format:
 	 * - '#' (comment) chars only as first chars on a line;
-	 * - username must start on first column (or *, or @group --thor)
-	 * A better (smarter) checking should be done --cristiang */
+	 * - username must start on first column (or *, or @group)
+	 *
+	 * FIXME: A better (smarter) checking should be done
+	 */
 	while (fgets (buf, 1024, fil) != NULL) {
 		if (('#' == buf[0]) || ('\n' == buf[0])) {
 			continue;
@@ -445,26 +459,33 @@
 		 * username    L2  D2048  R4096
 		 * where spaces={' ',\t}. Also, we reject invalid limits.
 		 * Imposing a limit should be done with care, so a wrong
-		 * entry means no care anyway :-). A '-' as a limits
-		 * strings means no limits --cristiang */
-		/* In addition to the handling of * as name which was alrady present,
-		   I added handling of the @group syntax.
-		   To clarify: The first entry with matching user name rules,
-		   everything after it is ignored. If there is no user entry,
-		   the last encountered entry for a matching group rules.
-		   If there is no matching group entry, the default limits rule.
-		      --thor. */
+		 * entry means no care anyway :-).
+		 *
+		 * A '-' as a limits strings means no limits
+		 *
+		 * The username can also be:
+		 *  '*': the default limits (only the last is taken into
+		 *       account)
+		 *  @group: the limit applies to the members of the group
+		 *
+		 * To clarify: The first entry with matching user name rules,
+		 * everything after it is ignored. If there is no user entry,
+		 * the last encountered entry for a matching group rules.
+		 * If there is no matching group entry, the default limits rule.
+		 */
 		if (sscanf (buf, "%s%[ACDFMNRSTULPIOacdfmnrstulpio0-9 \t-]",
-			    name, tempbuf) == 2) {
+		            name, tempbuf) == 2) {
 			if (strcmp (name, uname) == 0) {
 				strcpy (limits, tempbuf);
 				break;
 			} else if (strcmp (name, "*") == 0) {
 				strcpy (deflimits, tempbuf);
 			} else if (name[0] == '@') {
-				/* If the user is in the group, the group limits apply unless
-				   later a line for the specific user is found. --thor */
-				if(user_in_group(uname, name+1)) {
+				/* If the user is in the group, the group
+				 * limits apply unless later a line for
+				 * the specific user is found.
+				 */
+				if (user_in_group (uname, name+1)) {
 					strcpy (limits, tempbuf);
 				}
 			}




More information about the Pkg-shadow-commits mailing list