The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

attr_list (3)
  • >> attr_list (3) ( Linux man: Библиотечные вызовы )
  •  

    NAME

    attr_list, attr_listf - list the names of the user attributes of a filesystem object
     
    

    C SYNOPSIS

    #include <sys/attributes.h>
    
    int attr_list (const char *path, char *buffer, 
                   const int buffersize, int flags,
                   attrlist_cursor_t *cursor);
    
    int attr_listf (int fd, char *buffer, 
                    const int buffersize, int flags,
                    attrlist_cursor_t *cursor);
    [
     

    DESCRIPTION

    ] The attr_list and attr_listf functions provide a way to list the existing attributes of a filesystem object. Path points to a path name for a filesystem object, and fd refers to the file descriptor associated with a file. The buffer will be filled with a structure describing at least a portion of the attributes associated with the given filesystem object. Buffer will be overwritten with an attrlist_t structure containing a list of the attributes associated with that filesystem object, up to a maximum of buffersize bytes. The buffer must be sufficiently large to hold the appropriate data structures plus at least one maximally sized attribute name, but cannot be more than ATTR_MAX_VALUELEN (currently 64KB) bytes in length.

    [c p a] The contents of an attrlist_t structure include the following members:

    
    __int32_t al_count; /* number of entries in attrlist */
    __int32_t al_more; /* T/F: more attrs (do syscall again) */
    __int32_t al_offset[1]; /* byte offsets of attrs [var-sized] */
    

    The al_count field shows the number of attributes represented in this buffer, which is also the number of elements in the al_offset array. The al_more field will be non-zero if another attr_list call would result in more attributes. The al_offset array contains the byte offset within the buffer of the structure describing each of the attributes, an attrlist_ent_t structure. The ATTR_ENTRY(buffer, index) macro will help with decoding the list. It takes a pointer to the buffer and an index into the al_offset array and returns a pointer to the corresponding attrlist_ent_t structure.

    The contents of an attrlist_ent_t structure include the following members:

    
    u_int32_t a_valuelen; /* number bytes in value of attr */
    char a_name[]; /* attr name (NULL terminated) */
    
    [
    ]

    The a_valuelen field shows the size in bytes of the value associated with the attribute whose name is stored in the a_name field. The name is a NULL terminated string.

    Note that the value of the attribute cannot be obtained through this interface, the attr_get call should be used to get the value. The attr_list interface tells the calling process how large of a buffer it must have in order to get the attribute's value.

    The flags argument can contain the following symbols bitwise OR'ed together:

    ATTR_ROOT
    List the attributes that are in the root address space, not in the user address space. (limited to use by super-user only)
    ATTR_DONTFOLLOW
    Do not follow symbolic links when resolving a path on an attr_list function call. The default is to follow symbolic links.

    The cursor argument is a pointer to an opaque data structure that the kernel uses to track the calling process's position in the attribute list. The only valid operations on a cursor are to pass it into an attr_list function call or to zero it out. It should be zero'ed out before the first attr_list call. Note that multi-threaded applications may keep more than one cursor in order to serve multiple contexts, ie: the attr_list call is "thread-safe".

    attr_list will fail if one or more of the following are true:

    [ENOENT]
    The named file does not exist.
    [EPERM]
    The effective user ID does not match the owner of the file and the effective user ID is not super-user.
    [ENOTDIR]
    A component of the path prefix is not a directory.
    [EACCES]
    Search permission is denied on a component of the path prefix.
    [EINVAL]
    A bit was set in the flag argument that is not defined for this system call, or the buffer was too small or too large.
    [EFAULT]
    Either Path or buffer points outside the allocated address space of the process, or buffer or bufsize are not 32bit aligned.
    [ELOOP]
    A path name lookup involved too many symbolic links.
    [ENAMETOOLONG]
    The length of path exceeds {MAXPATHLEN}, or a pathname component is longer than {MAXNAMELEN}.
    [ENOATTR]
    attribute does not exist for this file.

    attr_listf will fail if:

    [EINVAL]
    A bit was set in the flag argument that is not defined for this system call, or fd refers to a socket, not a file, or the buffer was too small or too large.
    [EFAULT]
    Either Path or buffer points outside the allocated address space of the process, or buffer or bufsize are not 32bit aligned.
    [EBADF]
    Fd does not refer to a valid descriptor.
     

    DIAGNOSTICS

    Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.  

    SEE ALSO

    attr(1), attr_multi(3), attr_remove(3), and attr_set(3).


     

    Index

    NAME
    C SYNOPSIS
    DESCRIPTION
    DIAGNOSTICS
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру