SYNOPSIS

#include <sys/types.h>

#include "dpns_api.h"

int dpns_lstat (const char *path, struct dpns_filestat *statbuf)

int dpns_stat (const char *path, struct dpns_filestat *statbuf)

int dpns_statx (const char *path, struct dpns_fileid *file_uniqueid, struct dpns_filestat *statbuf)

DESCRIPTION

dpns_stat gets information about a DPNS file or directory in the name server.

dpns_lstat is identical to dpns_stat except for symbolic links. dpns_lstat retrieves information about the link itself, while dpns_stat gets information about the file/directory referenced by the symbolic link.

dpns_statx returns the same information plus the file unique id (name server hostname and file id). The file can be specified by path name or by file_uniqueid. If both are given, file_uniqueid is used.

path

specifies the logical pathname relative to the current DPNS directory or the full DPNS pathname.

The structure pointed to by statbuf contains the following members:

u_signed64 fileid; /* entry unique identifier */

mode_t filemode; /* see below */

int nlink; /* number of files in a directory */

uid_t uid;

gid_t gid;

u_signed64 filesize;

time_t atime; /* last access to file */

time_t mtime; /* last file modification */

time_t ctime; /* last metadata modification */

short fileclass; /* 1--> experiment, 2 --> user */

char status; /* '-' --> online, 'm' --> migrated */

filemode is constructed by OR'ing the bits defined in <sys/stat.h> under Unix or "statbits.h" under Windows/NT:

S_IFLNK 0xA000 symbolic link

S_IFREG 0x8000 regular file

S_IFDIR 0x4000 directory

S_ISUID 0004000 set user ID on execution

S_ISGID 0002000 set group ID on execution

S_ISVTX 0001000 sticky bit

S_IRUSR 0000400 read by owner

S_IWUSR 0000200 write by owner

S_IXUSR 0000100 execute/search by owner

S_IRGRP 0000040 read by group

S_IWGRP 0000020 write by group

S_IXGRP 0000010 execute/search by group

S_IROTH 0000004 read by others

S_IWOTH 0000002 write by others

S_IXOTH 0000001 execute/search by others

RETURN VALUE

This routine returns 0 if the operation was successful or -1 if the operation failed. In the latter case, serrno is set appropriately.

ERRORS

ENOENT

The named file/directory does not exist or is a null pathname.

EACCES

Search permission is denied on a component of the path prefix.

EFAULT

path or statbuf is a NULL pointer.

ENOTDIR

A component of path prefix is not a directory.

ENAMETOOLONG

The length of path exceeds CA_MAXPATHLEN or the length of a path component exceeds CA_MAXNAMELEN.

SENOSHOST

Host unknown.

SENOSSERV

Service unknown.

SECOMERR

Communication error.

ENSNACT

Name server is not running or is being shutdown.

RELATED TO dpns_lstat…

AUTHOR

LCG Grid Deployment Team