[Libsysio-commit] LLNL_HPSS: libsysio/src getdirentries.c readdir.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2005-09-09 14:58:35
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9447/src Modified Files: Tag: LLNL_HPSS getdirentries.c readdir.c Log Message: Deal with directory record variants that include or don't d_off, d_offset, d_reclen, and d_namlen. Index: getdirentries.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/getdirentries.c,v retrieving revision 1.20.2.1 retrieving revision 1.20.2.2 diff -u -w -b -B -p -r1.20.2.1 -r1.20.2.2 --- getdirentries.c 26 Aug 2005 17:07:27 -0000 1.20.2.1 +++ getdirentries.c 9 Sep 2005 14:58:20 -0000 1.20.2.2 @@ -201,11 +201,17 @@ SYSIO_INTERFACE_NAME(getdirentries)(int n = _namlen(d64p); reclen = _dreclen(n); d64.d_ino = d64p->d_ino; +#ifdef _DIRENT_HAVE_D_OFF d64.d_off = d64p->d_off; +#else + d64.d_offset = d64p->d_offset; +#endif #ifdef _DIRENT_HAVE_D_TYPE d64.d_type = d64p->d_type; #endif +#ifdef _DIRENT_HAVE_D_RECLEN d64.d_reclen = d64p->d_reclen; +#endif /* * Copy name first. */ @@ -214,9 +220,18 @@ SYSIO_INTERFACE_NAME(getdirentries)(int * Then, the rest. */ dp->d_ino = d64.d_ino; +#ifdef _DIRENT_HAVE_D_OFF dp->d_off = d64.d_off; - if (dp->d_ino != d64.d_ino || - dp->d_off != d64.d_off) { +#else + dp->d_offset = d64.d_offset; +#endif + if (dp->d_ino != d64.d_ino +#ifdef _DIRENT_HAVE_D_OFF + || dp->d_off != d64.d_off +#else + || dp->d_offset != d64.d_offset +#endif + ) { /* * If conversion failure then we are done. */ @@ -229,15 +244,22 @@ SYSIO_INTERFACE_NAME(getdirentries)(int } break; } - fil->f_pos = dp->d_off; + fil->f_pos = +#ifdef _DIRENT_HAVE_D_OFF + dp->d_off; +#else + dp->d_offset; +#endif #ifdef _DIRENT_HAVE_D_TYPE dp->d_type = d64.d_type; #endif +#ifdef _DIRENT_HAVE_D_RECLEN dp->d_reclen = reclen; +#endif /* * Fill the remainder with zeros. */ - p = (char *)dp + dp->d_reclen; + p = (char *)dp + reclen; #ifdef HAVE_D_NAMLEN dp->d_namlen = n; #endif @@ -249,8 +271,8 @@ SYSIO_INTERFACE_NAME(getdirentries)(int * Advance. */ dp = p; - cc -= d64.d_reclen; - d64p = (struct dirent64 *)((char *)d64p + d64.d_reclen); + cc -= reclen; + d64p = (struct dirent64 *)((char *)d64p + reclen); } if (cc < 0) Index: readdir.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/readdir.c,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -w -b -B -p -r1.2 -r1.2.2.1 --- readdir.c 25 Jan 2005 00:37:14 -0000 1.2 +++ readdir.c 9 Sep 2005 14:58:20 -0000 1.2.2.1 @@ -92,6 +92,8 @@ _READDIR(DIR *dir) #endif #ifdef _DIRENT_HAVE_D_OFF dir->filepos = dp->d_off; +#elif defined(_DIRENT_HAVE_D_OFFSET) + dir->filepos = dp->d_offset; #else dir->filepos = dir->cur; #endif |