#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 |