Loading...
gen/FreeBSD/setmode.c.patch Libc-583 /dev/null
--- Libc/Libc-583/gen/FreeBSD/setmode.c.patch
+++ /dev/null
@@ -1,103 +0,0 @@
---- setmode.c.orig	2008-02-08 00:45:35.000000000 -0800
-+++ setmode.c	2008-02-17 19:36:02.000000000 -0800
-@@ -70,12 +70,15 @@ typedef struct bitcmd {
- #define	CMD2_OBITS	0x08
- #define	CMD2_UBITS	0x10
- 
-+#define	compress_mode	_sm_compress_mode
-+
- static BITCMD	*addcmd(BITCMD *, int, int, int, u_int);
--static void	 compress_mode(BITCMD *);
-+__private_extern__ void		compress_mode(BITCMD *);
- #ifdef SETMODE_DEBUG
- static void	 dumpmode(BITCMD *);
- #endif
- 
-+#ifndef BUILDING_VARIANT
- /*
-  * Given the old mode and an array of bitcmd structures, apply the operations
-  * described in the bitcmd structures to the old mode, and return the new mode.
-@@ -151,6 +154,7 @@ common:			if (set->cmd2 & CMD2_CLR) {
- 			return (newmode);
- 		}
- }
-+#endif /* BUILDING_VARIANT */
- 
- #define	ADDCMD(a, b, c, d)						\
- 	if (set >= endset) {						\
-@@ -169,7 +173,11 @@ common:			if (set->cmd2 & CMD2_CLR) {
- 	}								\
- 	set = addcmd(set, (a), (b), (c), (d))
- 
-+#ifndef VARIANT_LEGACY
-+#define	STANDARD_BITS	(S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO|S_ISTXT)
-+#else /* VARIANT_LEGACY */
- #define	STANDARD_BITS	(S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
-+#endif /* !VARIANT_LEGACY */
- 
- void *
- setmode(p)
-@@ -211,12 +219,21 @@ setmode(p)
- 	 */
- 	if (isdigit((unsigned char)*p)) {
- 		perml = strtol(p, &ep, 8);
--		if (*ep || perml < 0 || perml & ~(STANDARD_BITS|S_ISTXT)) {
-+#ifndef VARIANT_LEGACY
-+		if (*ep || perml < 0 || perml & ~STANDARD_BITS)
-+#else /* VARIANT_LEGACY */
-+		if (*ep || perml < 0 || perml & ~(STANDARD_BITS|S_ISTXT))
-+#endif /* !VARIANT_LEGACY */
-+		{
- 			free(saveset);
- 			return (NULL);
- 		}
- 		perm = (mode_t)perml;
-+#ifndef VARIANT_LEGACY
-+		ADDCMD('=', STANDARD_BITS, perm, mask);
-+#else /* VARIANT_LEGACY */
- 		ADDCMD('=', (STANDARD_BITS|S_ISTXT), perm, mask);
-+#endif /* !VARIANT_LEGACY */
- 		set->cmd = 0;
- 		return (saveset);
- 	}
-@@ -253,7 +270,9 @@ getop:		if ((op = *p++) != '+' && op != 
- 		if (op == '=')
- 			equalopdone = 0;
- 
-+#ifdef VARIANT_LEGACY
- 		who &= ~S_ISTXT;
-+#endif /* VARIANT_LEGACY */
- 		for (perm = 0, permXbits = 0;; ++p) {
- 			switch (*p) {
- 			case 'r':
-@@ -267,7 +286,9 @@ getop:		if ((op = *p++) != '+' && op != 
- 			case 't':
- 				/* If only "other" bits ignore sticky. */
- 				if (!who || who & ~S_IRWXO) {
-+#ifdef VARIANT_LEGACY
- 					who |= S_ISTXT;
-+#endif /* VARIANT_LEGACY */
- 					perm |= S_ISTXT;
- 				}
- 				break;
-@@ -402,13 +423,14 @@ dumpmode(set)
- }
- #endif
- 
-+#ifndef BUILDING_VARIANT
- /*
-  * Given an array of bitcmd structures, compress by compacting consecutive
-  * '+', '-' and 'X' commands into at most 3 commands, one of each.  The 'u',
-  * 'g' and 'o' commands continue to be separate.  They could probably be
-  * compacted, but it's not worth the effort.
-  */
--static void
-+__private_extern__ void
- compress_mode(set)
- 	BITCMD *set;
- {
-@@ -457,3 +479,4 @@ compress_mode(set)
- 		}
- 	}
- }
-+#endif /* BUILDING_VARIANT */