# # Unix Programs: dird, dumps OSR5 directories
APLawrence.com -  Resources for Unix and Linux Systems, Bloggers and the self-employed

dird

I've removed advertising from most of this site and will eventually clean up the few pages where it remains.

While not terribly expensive to maintain, this does cost me something. If I don't get enough donations to cover that expense, I will be shutting the site down in early 2020.

If you found something useful today, please consider a small donation.



Some material is very old and may be incorrect today

© January 1997 Tony Lawrence

On older SCO, you could print the contents of a directory file in hexadecimal format by the command "hd ." (current directory).

With SCO OpenServer you get only 0000.

That's not good :-)

Typically, the reason for doing this was to either to see the order of the files in the directory (so you could tell how far along a backup or restore was that you were watching on another screen) or to look for "holes" (so that you could rearrange the order of entries by judicious copying and deleting). Why would you want to do that? If you have to ask, you'll probably never want to, but in some situations involving large directories and ultra critical performance, it's worth moving frequently accessed files to the "top", (assuming the namei cache can't help you, perhaps because you need that boost on the *first* access).

Yet another reason was to spot garbage characters in file names.

If all you need is the order of file names in the slots, ls -f will do it. Otherwise, you can get some of the remaining functionality by a simple C program like this:

#include <dirent.h>
#include <stdio.h>
main()
{
DIR *dirp;
char *c;
long offset=0L;
struct dirent *dp;
dirp = opendir( "." );
while ( (dp = readdir( dirp )) != NULL )
{
        printf("Inode: %8lu Offset %4ld Length %4hd ", dp->d_ino,offset,dp->d_reclen);
        printf("%s ",dp->d_name);
        offset = dp->d_off;
        c=dp->d_name;
        while (*c)
        {
        printf("%x ",*c++);
        }
        printf("\n");

        
}
closedir( dirp );
}
 

You can add to this to display other information, of course, but while it does show the order, it doesn't show holes. You can infer holes from the directory size and offsets, and you can create holes where you want them by removing or copying files, but it's certainly true that an hd on a directory was useful now and then.


If you found something useful today, please consider a small donation.



Got something to add? Send me email.





(OLDER)    <- More Stuff -> (NEWER)    (NEWEST)   

Printer Friendly Version

->
-> Unix Programs: dird, dumps OSR5 directories


Inexpensive and informative Apple related e-books:

Take Control of IOS 11

Take Control of iCloud, Fifth Edition

Take Control of Parallels Desktop 12

Take Control of Preview

Take Control of High Sierra





More Articles by © Tony Lawrence





Printer Friendly Version

Have you tried Searching this site?

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us


Printer Friendly Version





Try not to become a man of success, but rather try to become a man of value. (Albert Einstein)




Linux posts

Troubleshooting posts


This post tagged:

Code

Programming

SCO_OSR5



Unix/Linux Consultants

Skills Tests

Unix/Linux Book Reviews

My Unix/Linux Troubleshooting Book

This site runs on Linode