Page MenuHomeFreeBSD

D9206.id24098.diff
No OneTemporary

D9206.id24098.diff

Index: share/man/man5/fs.5
===================================================================
--- share/man/man5/fs.5
+++ share/man/man5/fs.5
@@ -28,7 +28,7 @@
.\" @(#)fs.5 8.2 (Berkeley) 4/19/94
.\" $FreeBSD$
.\"
-.Dd April 23, 2016
+.Dd January 16, 2017
.Dt FS 5
.Os
.Sh NAME
@@ -392,14 +392,14 @@
int8_t ea_namespace; /* name space of this attribute */
int8_t ea_contentpadlen; /* padding at end of attribute */
int8_t ea_namelength; /* length of attribute name */
- char ea_name[1]; /* null-terminated attribute name */
+ char ea_name[1]; /* attribute name (NOT nul-terminated) */
/* extended attribute content follows */
};
.Ed
.Pp
Several macros are defined to manipulate these structures.
Each macro takes a pointer to an extattr structure.
-.Bl -tag -width ".Dv EXTATTR_SET_LENGTHS(eap, size)"
+.Bl -tag -width ".Dv EXTATTR_CONTENT_SIZE(eap)"
.It Dv EXTATTR_NEXT(eap)
Returns a pointer to the next extended attribute following
.Fa eap .
@@ -409,35 +409,19 @@
.It Dv EXTATTR_CONTENT_SIZE(eap)
Returns the size of the extended attribute content referenced by
.Fa eap .
-.It Dv EXTATTR_SET_LENGTHS(eap, size)
-Called with the size of the attribute content after initializing
-the attribute name to calculate and set the
-.Fa ea_length ,
-.Fa ea_namelength ,
-and
-.Fa ea_contentpadlen
-fields of the extended attribute structure.
.El
.Pp
The following code identifies an ACL:
.Bd -literal
if (eap->ea_namespace == EXTATTR_NAMESPACE_SYSTEM &&
- !strcmp(eap->ea_name, POSIX1E_ACL_ACCESS_EXTATTR_NAME) {
+ eap->ea_namelength == strlen(POSIX1E_ACL_ACCESS_EXTATTR_NAME) &&
+ strncmp(eap->ea_name, POSIX1E_ACL_ACCESS_EXTATTR_NAME,
+ strlen(POSIX1E_ACL_ACCESS_EXTATTR_NAME)) == 0) {
aclp = EXTATTR_CONTENT(eap);
acllen = EXTATTR_CONTENT_SIZE(eap);
...
}
.Ed
-.Pp
-The following code creates an extended attribute
-containing a copy of a structure
-.Fa mygif :
-.Bd -literal
- eap->ea_namespace = EXTATTR_NAMESPACE_USER;
- strcpy(eap->ea_name, "filepic.gif");
- EXTATTR_SET_LENGTHS(eap, sizeof(struct mygif));
- memcpy(EXTATTR_CONTENT(eap), &mygif, sizeof(struct mygif));
-.Ed
.Sh HISTORY
A super-block structure named filsys appeared in
.At v6 .
Index: sys/ufs/ufs/extattr.h
===================================================================
--- sys/ufs/ufs/extattr.h
+++ sys/ufs/ufs/extattr.h
@@ -77,7 +77,7 @@
int8_t ea_namespace; /* name space of this attribute */
int8_t ea_contentpadlen; /* bytes of padding at end of attribute */
int8_t ea_namelength; /* length of attribute name */
- char ea_name[1]; /* null-terminated attribute name */
+ char ea_name[1]; /* attribute name (NOT nul-terminated) */
/* extended attribute content follows */
};
@@ -90,9 +90,6 @@
* content referenced by eap.
* EXTATTR_CONTENT_SIZE(eap) returns the size of the extended attribute
* content referenced by eap.
- * EXTATTR_SET_LENGTHS(eap, contentsize) called after initializing the
- * attribute name to calculate and set the ea_length, ea_namelength,
- * and ea_contentpadlen fields of the extended attribute structure.
*/
#define EXTATTR_NEXT(eap) \
((struct extattr *)(((void *)(eap)) + (eap)->ea_length))
@@ -101,15 +98,6 @@
((eap)->ea_length - EXTATTR_BASE_LENGTH(eap) - (eap)->ea_contentpadlen)
#define EXTATTR_BASE_LENGTH(eap) \
((sizeof(struct extattr) + (eap)->ea_namelength + 7) & ~7)
-#define EXTATTR_SET_LENGTHS(eap, contentsize) do { \
- KASSERT(((eap)->ea_name[0] != 0), \
- ("Must initialize name before setting lengths")); \
- (eap)->ea_namelength = strlen((eap)->ea_name); \
- (eap)->ea_contentpadlen = ((contentsize) % 8) ? \
- 8 - ((contentsize) % 8) : 0; \
- (eap)->ea_length = EXTATTR_BASE_LENGTH(eap) + \
- (contentsize) + (eap)->ea_contentpadlen; \
-} while (0)
#ifdef _KERNEL
@@ -149,13 +137,6 @@
int ufs_setextattr(struct vop_setextattr_args *ap);
void ufs_extattr_vnode_inactive(struct vnode *vp, struct thread *td);
-#else
-
-/* User-level definition of KASSERT for macros above */
-#define KASSERT(cond, str) do { \
- if (!(cond)) { printf("panic: "); printf(str); printf("\n"); exit(1); }\
-} while (0)
-
#endif /* !_KERNEL */
#endif /* !_UFS_UFS_EXTATTR_H_ */

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 13, 2:00 AM (14 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23651221
Default Alt Text
D9206.id24098.diff (4 KB)

Event Timeline