dpns_readdirxp(3) - Linux man page
Name
dpns_readdirxp - read DPNS directory opened by dpns_opendir in the name serverSynopsis
#include <sys/types.h>#include "dpns_api.h"
struct dpns_direnrep *dpns_readdirxp (dpns_DIR *dirp, char *pattern, char *se)
Description
dpns_readdirxp reads the DPNS directory opened by dpns_opendir in the name server. It does restricted pattern matching on basename. This routine returns a pointer to a structure containing the current directory entry (basename, guid and filesize) and the replica information.struct dpns_rep_info {
u_signed64 fileid;
char status;
char *host;
char *sfn;
};
struct dpns_direnrep {
u_signed64 fileid;
char guid[CA_MAXGUIDLEN+1];
mode_t filemode;
u_signed64 filesize;
int nbreplicas;
struct dpns_rep_info *rep; /* array of replica info structures */
unsigned short d_reclen; /* length of this entry */
char d_name[1]; /* basename in variable length */
};dpns_readdirxp caches a variable number of such entries, depending on the filename size, to minimize the number of requests to the name server.
- dirp
- specifies the pointer value returned by dpns_opendir.
- pattern
- allows to restrict the listing to entries having the basename starting with this pattern.
- se
- allows to restrict the replica entries to a given SE.
Return Value
As dpns_readdirxp returns a null pointer both at the end of the directory and on error, an application wishing to check for error situations should set serrno to 0, then call dpns_readdirxp, then check serrno and if it is non-zero, assume an error has occurred.
Errors
- EBADF
- File descriptor in DIR structure is invalid.
- ENOMEM
- Memory could not be allocated for unmarshalling the reply.
- EFAULT
- dirp is a NULL pointer.
- EINVAL
- The length of pattern exceeds CA_MAXNAMELEN or the length of se exceeds CA_MAXHOSTNAMELEN.
- SECOMERR
- Communication error.
- ENSNACT
- Name server is not running or is being shutdown.