#include <sys/types.h> #include <dirent.h> struct dirent_lg *QlgReaddir(DIR *dirp);Service Program Name: QP0LLIB1
The QlgReaddir() function, like the readdir() function, returns a pointer to a structure describing the next directory entry in the directory stream associated with dirp. The difference is that the QlgReaddir() function takes a pointer to a dirent_lg structure, while readdir() takes a pointer to a dirent structure.
Limited information on the dirp parameter is provided here. For more information on the dirp parameter and for a discussion of authorities required, return values, and related information, see readdir()--Read Directory Entry.
A dirent_lg structure has the following contents:
| char | d_reserved1[16] | Reserved. |
| unsigned int | d_fileno_gen_id | The generation ID associated with the file ID. |
| ino_t | d_fileno | The file ID of the file. This number uniquely identifies the object within a file system. |
| unsigned int | d_reclen | The length of the directory entry in bytes. |
| int | d_reserved3 | Reserved. |
| char | d_reserved4[6] | Reserved. |
| char | d_reserved5[2] | Reserved. |
| Qlg_Path_Name_T | d_lg_name | A Qlg_Path_Name_T that gives the name of a file in the directory. The path name is not null-terminated within the structure. The structure also provides National Language Support information, which includes ccsid, country_id, and language_id. This structure has a maximum length of {_QP0L_DIR_NAME_LG} bytes. For more information on the Qlg_Path_Name_T structure, see Path name format. |
See Code disclaimer information for information pertaining to code examples.
The following example reads the contents of a root directory:
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
main() {
typedef struct my_dirent_lg
{
struct dirent_lg *entry;
char d_lg_name[1];
};
struct my_dirent_lg lg_struct;
struct dirent_lg *entry;
#define mypath "/"
const char US_const[3]= "US";
const char Language_const[4]="ENU";
typedef struct pnstruct
{
Qlg_Path_Name_T qlg_struct;
char pn[100]; /* This array size must be >= */
/* the length of the path name */
/* or this must be a pointer */
/* to the path name. */
};
struct pnstruct path;
DIR *dir;
/***************************************************************/
/* Initialize Qlg_Path_Name_T parameters */
/***************************************************************/
memset((void*)&path, 0x00, sizeof(struct pnstruct));
path.qlg_struct.CCSID = 37;
memcpy(path.qlg_struct.Country_ID,US_const,2);
memcpy(path.qlg_struct.Language_ID,Language_const,3);
path.qlg_struct.Path_Type = QLG_CHAR_SINGLE;
path.qlg_struct.Path_Length = sizeof(mypath)-1;
path.qlg_struct.Path_Name_Delimiter[0] = '/';
memcpy(path.pn,mypath,sizeof(mypath)-1);
if ((dir = QlgOpendir((Qlg_Path_Name_T *)&path)) == NULL)
perror("QlgOpendir() error");
else {
puts("contents of root:");
while ((entry = QlgReaddir(dir)) != NULL)
printf(" %s\n", entry->d_lg_name);
closedir(dir);
}
}
Output:
contents of root: . .. QSYS.LIB QDLS QOpenSys QOPT home
| Top | UNIX-Type APIs | APIs by category |