Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F131899608
D9206.id24098.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D9206.id24098.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D9206: ufs/extattr.h: Fix documentation of ea_name termination
Attached
Detach File
Event Timeline
Log In to Comment