Index Index for
Section 3
Index Alphabetical
listing for A
Bottom of page Bottom of
page

add_proplist_entry(3)

NAME

add_proplist_entry - adds an Extended File Attribute to the Extended File Attribute buffer

SYNOPSIS

#include <sys/proplist.h> int add_proplist_entry( char *name, int flags, int value_size, char *value, char **bufptr );

PARAMETERS

*name Points to the Extended File Attribute name, a null-terminated ASCII string. flags Specifies system-wide attributes for Extended File Attribute entries. These system-wide attributes are defined in sys/proplist.h. value_size Specifies the size in bytes of the Extended File Attribute value. *value Points to the value of the Extended File Attribute. **bufptr Points to the Extended File Attribute buffer.

DESCRIPTION

The add_proplist_entry() function initializes an Extended File Attribute buffer, pointed to by **bufptr, with the Extended File Attribute specified by the *name and *value parameters. The function can be called repeatedly because it advances the Extended File Attribute buffer pointer **bufptr to the end of the current entry. An Extended File Attribute is a name and value pair that is contained in a variable-sized structure called a Property List. A Property List is part of a file's metadata and can contain abstract name and value pairs (Extended File Attributes) that can be set either by the operating system (for example, ACLs and privileges) or by a user-level application (for example, PC File Attributes). Although not a requirement, it is recommended that you use the sizeof_proplist_entry(3) and add_proplist_entry(3) functions to initialize the Extended File Attribute buffer passed to setproplist(3) and fsetproplist(3).

RETURN VALUES

If successful, the function returns the number of bytes copied into the Extended File Attribute buffer.

EXAMPLES

#include <sys/proplist.h> main() { char *ptr, *buf, *name, *value; int *value_len, *options, buffer_size, min_buffer_size, ret, nbytes; struct proplistname_args; static char *names[] = { "primary_name", "secondary_name", "" }; /* * How big a buffer do I need to store my name and value * pair in a property list ? */ buffer_size = sizeof_proplist_entry("primary_name", 18); buffer_size += sizeof_proplist_entry("secondary_name", 13); /* * Malloc the buffer */ buf = ptr = (char *)malloc(buffer_size); /* * Call add_proplist_entry to initialize the buffer with * the first name and value pair. */ ret = add_proplist_entry("primary_name", 0, 18, "Primary Name Value", &ptr); /* * Call add_proplist_entry to initialize the buffer with * the second name and value pair. */ ret += add_proplist_entry("secondary_name", 0, 13, "Another Value", &ptr); if (ret != buffer_size) { printf("ret %d != buffer_size %d0", ret, buffer_size); free(buf, buffer_size); exit(1); } /* * Buffer now contains both name and value pairs. Call setproplist * system call to actually associate name and value pairs to * file. */ nbytes = setproplist("/tmp/foo", 1, buffer_size, buf); if (nbytes < 0 || nbytes != buffer_size) { perror("setproplist"); free(buf); exit(1); }

SEE ALSO

Functions: delproplist(3), fdelproplist(3), fgetproplist(3), fsetproplist(3), get_proplist_entry(3), getproplist(3), setproplist(3), sizeof_proplist_entry(3) Files: proplist(4)

Index Index for
Section 3
Index Alphabetical
listing for A
Top of page Top of
page