opendir() + customly created directories


 
Thread Tools Search this Thread
Top Forums Programming opendir() + customly created directories
# 1  
Old 03-26-2008
opendir() + customly created directories

Gday all

In a program I am designing, I am using opendir() to test whether entries under a certain directory are sub-directories or not. This method works fine for the directory itself (.) and the parent directory (..), however it does not work for any sub-directories I manually create.

i.e. it does not work for current_directory/my_sub_directory

I am performing the test in the following manner

Code:
if( (sub_dir = opendir(sub_dir_name)) != NULL)
{
       /* Do whatever*/

}

Is there anything I am failing to understand or am I missing out on anything ?

regards
James
# 2  
Old 03-26-2008
One trap I always keep falling into is forgetting to glue back the entry from a readdir to the directory I read it from, i.e. using a relative file name in the wrong (e.g. grandparent) directory.
# 3  
Old 03-26-2008
Quote:
Originally Posted by era
One trap I always keep falling into is forgetting to glue back the entry from a readdir to the directory I read it from, i.e. using a relative file name in the wrong (e.g. grandparent) directory.
I tried this and unfortunately had no luck Smilie
# 4  
Old 03-26-2008
Doubly linked lists..yay.
# 5  
Old 03-26-2008
hey all

Ive discovered a better way to test for the presence of sub-directories within folders, however it does not involve the use of opendir()

What I did instead was the following

Code:
/*Check if it is current or parent directory*/

if( (strcmp(subfolder_name,".") != 0) &&  (strcmp(subfolder_name,"..") != 0)
{
        /*Check to see if it is a directory by using strrchr()*/

        ptr = strrchr(subfolder_name,'.');

        /*If  strrchr() returns NULL, the current entry
           is indeed a sub-folder*/
  
        if(ptr == NULL)
        {
             /*Do necessary stuff here*/
        }  

}

# 6  
Old 03-27-2008
opendir() returns a pointer to a dir stream. readdir() is invoked in a loop afterwards to read the contents of the opened dir stream. Each dir entry is passed from readdir() to stat() which stores information in a stat structure. The S_ISDIR() macro can be used to test whether the stat structure is a dir or not. Look at the manpages of opendir() readdir() and stat().
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to check current date file is created and with >0 kb or not for multiple directories

Hi All, I am new in scripting and working in a project where we have RSyslog servers over CentOS v7 and more than 200 network devices are sending logs to each RSyslog servers. For each network devices individual folders create on the name of the each network devices IP addresses.The main... (7 Replies)
Discussion started by: Pinaki
7 Replies

2. Solaris

Giving read write permission to user for specific directories and sub directories.

I have searched this quite a long time but couldn't find the right method for me to use. I need to assign read write permission to the user for specific directories and it's sub directories and files. I do not want to use ACL. This is for Solaris. Please help. (1 Reply)
Discussion started by: blinkingdan
1 Replies

3. Homework & Coursework Questions

Opendir

code: #include<iostream> #include <dirent.h> using namespace std; int main() { DIR*dir; dir = opendir("/"); if (dir !=NULL) { struct dirent * abcd; while ((abcd=readdir (dir))!=NULL) { cout << abcd -> d_name; } }} output : this gives the output of Directory "/" ques : (1 Reply)
Discussion started by: console
1 Replies

4. Programming

Opendir

code: #include<iostream> #include <dirent.h> using namespace std; int main() { DIR*dir; dir = opendir("/"); if (dir !=NULL) { struct dirent * abcd; while ((abcd=readdir (dir))!=NULL) { cout << abcd -> d_name; } }} output : this gives the output of Directory "/" ques : (1 Reply)
Discussion started by: console
1 Replies

5. Shell Programming and Scripting

Help in writing the scirpt for grepping on patterns in the directories created previous day

Hi, I have a challenging requiremant to be done in one day:( there is directory in which a new directory gets created per hour i.e 24 directories per a day like below. Dec 01 00:04 2011.12.12-23 Dec 01 01:11 2011.12.10-07 Dec 01 01:11 2011.12.10-08 Dec 01 01:11 2011.12.10-09 Dec 01... (2 Replies)
Discussion started by: mahesh Madpathi
2 Replies

6. Shell Programming and Scripting

Find directories only and delete them created 3 days before

Hello I have some directories and files created under /export/local/user I would like to delete directories only under /export/local/user, created before 3 days Can someone help me with command to do this task? Thanks (4 Replies)
Discussion started by: needyourhelp10
4 Replies

7. UNIX for Dummies Questions & Answers

home directories not being created by useradd

greetings. I'm using debian lenny, bash shell environment. It is my understanding that by default, the useradd command should create subdirectories under the /home directory, with the same name as the user being created, but this is not happening. I checked useradd -D and it showed, among... (2 Replies)
Discussion started by: fguy
2 Replies

8. Shell Programming and Scripting

Script for parsing directories one level and finding directories older than n days

Hello all, Here's the deal...I have one directory with many subdirs and files. What I want to find out is who is keeping old files and directories...say files and dirs that they didn't use since a number of n days, only one level under the initial dir. Output to a file. A script for... (5 Replies)
Discussion started by: ejianu
5 Replies

9. Shell Programming and Scripting

PHP 5 solaris opendir failure

Hello! I've moved a web from my RHEL5 Apache/2.2.3 machine to a Sun Solaris 5.9 Apache/2.2.6 (Unix) PHP/5.2.5 mod_ssl/2.2.6 machine. The web worked just fine on the rhel5 machine and most of the php pages works fine on the solaris machine to but not the one where I read a directory and prints... (1 Reply)
Discussion started by: Esaia
1 Replies
Login or Register to Ask a Question