--- researchv9/libc/gen/readdir.c 2018/04/24 17:22:00 1.1 +++ researchv9/libc/gen/readdir.c 2018/04/24 17:35:52 1.1.1.2 @@ -65,7 +65,7 @@ loop: strncpy(dir.d_name, dp->d_name, ODIRSIZ); dir.d_name[ODIRSIZ] = '\0'; /* insure null termination */ break; - case TSUN: + case TBSDSWAP: np = (struct direct *)(dirp->dd_buf + dirp->dd_loc); dirp->dd_loc += dir_rev2(np->d_reclen); if(np->d_ino == 0) @@ -81,6 +81,15 @@ loop: dir.d_ino = (ino_t) np->d_ino; strcpy(dir.d_name, np->d_name); break; + case TOLDSWAP: + dp = (struct olddirect *)(dirp->dd_buf + dirp->dd_loc); + dirp->dd_loc += sizeof(struct olddirect); + if (dp->d_ino == 0) + goto loop; + dir.d_ino = (ino_t) dir_rev2(dp->d_ino); + strncpy(dir.d_name, dp->d_name, ODIRSIZ); + dir.d_name[ODIRSIZ] = '\0'; /* insure null termination */ + break; } dir.d_namlen = strlen(dir.d_name); dir.d_reclen = DIRSIZ(&dir); @@ -88,23 +97,12 @@ loop: } dir_rev2(n) -{ union { - short x; - unsigned char b[2]; - } u; - u.b[1] = n & 0xff; - u.b[0] = (n >> 8) & 0xff; - return(u.x); +{ + return (((n & 0xff) << 8) + ((n >> 8) & 0xff)); } dir_rev4(n) -{ union { - long x; - unsigned char b[4]; - } u; - u.b[3] = n & 0xff; - u.b[2] = (n >> 8) & 0xff; - u.b[1] = (n >> 16) & 0xff; - u.b[0] = (n >> 24) & 0xff; - return(u.x); +{ + return (((n & 0xff) << 24) + ((n & 0xff00) << 8) + + ((n & 0xff0000) >> 8) + ((n >> 24) & 0xff)); }