creation of unwanted directory


 
Thread Tools Search this Thread
Top Forums Programming creation of unwanted directory
# 1  
Old 10-04-2005
creation of unwanted directory

hi all

i have a file with server id's and I need to create a directory corresponding to each server id listed in the text file.
eg:
id directory name
1 node_1
2 node_2
... ..... and so on.

There is no id with value 0 in the said text file.

the program is creating the directories but also creating an extra directory node_0 when executing in one machine and does not create directory node_0 (as required) when executing in another machine.
Can anybody tell me the reason for this.

plz. help

thanx
# 2  
Old 10-04-2005
Quote:
Originally Posted by mridula
the program is creating the directories but also creating an extra directory node_0 when executing in one machine and does not create directory node_0 (as required) when executing in another machine.
Can anybody tell me the reason for this.
There is a bug in the program. Different behavior on different systems is a common result of a bug in a C program.
# 3  
Old 10-04-2005
Post the code that creates a directory and we can probably help you.
# 4  
Old 10-05-2005
re:

///////// here is the code that i am using to create the directory//////////////
Code:
#include<stdio.h>
#include<stdlib.h>
#include<sys/dir.h> 
#include<malloc.h>
#include<string.h>

struct sconfig *head;
struct sconfig *tail;
struct sconfig
{
	int type,id;
	char username[20], IP[15];
	struct sconfig *next;
};

int dircreate(int id,int type)  //code to create the directory
{
	char *dname;
	int stat;
	dname=(char *)malloc(sizeof(int));
	sprintf(dname,"node_%d",id);
	stat=mkdir(dname,"rwx");
	if(stat!=0)
	{
		printf("\nnode dir cud not b created");
	}
	return 0;
}

int loadlist(int chcount)//code to read s_config.txt	
{
	FILE *fsdt;
	struct sconfig *temp;
	if((fsdt=fopen("/root/sample_read/s_config.txt","r")) == NULL)
	{
		fprintf(stderr, "cannot open s_config.txt\n");
		return 1;
	}
	while(feof(fsdt) == 0)
	{
		temp=(struct sconfig *)malloc(sizeof(struct sconfig));
		fscanf(fsdt,"%d %s %s %d",&temp->id, temp->username, temp->IP, &temp->type);
		dircreate(temp->id,temp->type);
		temp->next='\0';
		if (head==NULL)
		{	   head=temp;   		}
		else
                {         tail->next=temp;		}
		tail=temp;
	}
	fclose(fsdt);
	return 0;
}

int main()
{
	FILE *fsdt;
	int chcount=0;
	char ch;
	fsdt=fopen("/root/sample_read/s_config.txt","r");
	if (fsdt!=NULL)
	{
		while(1)
		{
			ch=fgetc(fsdt);
			if(ch==EOF)
				break;
			else
				chcount=chcount+1;
		}
		fclose(fsdt);
		if(chcount>0)
		{ 		loadlist(chcount);		}
	}
	else
	{
		fprintf(stderr, "cannot open s_config.txt\n");
		return 1;
	}
	return 0;
}

/////////////////////contents of s_config.txt file ////////////////////////

1 bhakti 123.123.123.123 1
2 mridu 255.254.255.254 2
3 ash 11.11.11.11 1
4 ashish 45.23.12.56 2

hope anyone can find the bug

thankx

Last edited by Perderabo; 10-05-2005 at 12:15 PM.. Reason: Add code tags for readability
# 5  
Old 10-05-2005
dname=(char *)malloc(sizeof(int));
sprintf(dname,"node_%d",id);


this'll allocate 4 bytes on my machine for instance, and string "node_%d" requires at least 6 bytes.
# 6  
Old 10-05-2005
re:

hi

thanx for your suggestion, but allocation of large size to dname is not of any help as its not making any difference.


I tried putting a printf() statement with in the while loop that reads the file.
Even when the ptr finishes reading the last line of the file its not showing eof. and is executing the loop for 1 extra time.

any suggestion will b of great help.


thanx
# 7  
Old 10-05-2005
A lot of bugs there! Smilie

Well, the one you are asking about is your while loop. feof() will not return EOF until fscanf goes too far. Check the return code from fscanf. Do not do the rest of the loop if fscanf fails. Or rewrite the loop to loop while fscanf succeeds.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reason for no directory creation date

i read here that linux provides no way to determine when a directory was created. https://www.unix.com/shell-programming-and-scripting/157874-creation-date-directory.htmlI have a directory /home/andy/scripts that had a README file in it. That file says I put the script in that directory and... (3 Replies)
Discussion started by: drew77
3 Replies

2. Shell Programming and Scripting

Bash directory loop and order by creation date?

Hello, how in bash i can get directory loop and order by creation date? THX! :) #!/bin/bash for folder in /home/test/* do if ; then echo $folder; fi (12 Replies)
Discussion started by: ZerO13
12 Replies

3. UNIX for Beginners Questions & Answers

UNIX directory creation issues

Hi All, I am facing a strange scenario. I upgraded my server version to new version of linux. After the when I create a directory it is created with . in the the permission . What is the reason and how to fix . $ mkdir test $ ls -l total 0 drwxr-xr-x. 2 uk01 users 6 Dec 7 03:49 test ... (1 Reply)
Discussion started by: arunkumar_mca
1 Replies

4. Shell Programming and Scripting

Creation date of a directory

what's the command to find the creation date of a certain dirctory? (1 Reply)
Discussion started by: miss_dodi
1 Replies

5. Shell Programming and Scripting

Changing file permission upon creation in a directory

I want to change the permission of a file when it gets created in a particular directory. For instance, I have directory MyDir. Everytime a file gets created in that directory, I would like to change the permission to 777. The context is that I have a 3rd party appication running as root. Only... (2 Replies)
Discussion started by: laiko
2 Replies

6. Shell Programming and Scripting

Directory Creation problem

Hiiii, here is my script-- BackupLocation="$OPTARG" if ]; then echo "Either option l or L should be given to $Programname" echo "$Usage" echo "$Programname is terminated" ... (1 Reply)
Discussion started by: namishtiwari
1 Replies

7. AIX

Filesystem creation over existing Directory

Is it possible to create a Filesystem with the mount point over an existing Directory, without loosing the data in the Directory? eg:- /u01 -> /pmmpd/u01 (Directory with soft link) /pmmpd/u01 (Need to create this filesystem, without loosing data) Thanks TheDoc (0 Replies)
Discussion started by: TheDoc
0 Replies

8. UNIX for Dummies Questions & Answers

Mass directory creation?

I have a couple thousand data files that all have to have there own directory named exactly the same as the file name. Then the file needs to be moved to that directory. For example files test1.mat, test2.mat, test3.mat in directory X need to have directories test1, test2, test3 created... (6 Replies)
Discussion started by: AeroEngy
6 Replies

9. UNIX for Advanced & Expert Users

directory creation

Hi Friends, I am trying to move some files from one directory to another. but if the destination directory doesnt exist then i have to create one and then move files to that. For this i have to write a script. please help. thanks in advance Veera (4 Replies)
Discussion started by: sveera
4 Replies

10. UNIX for Advanced & Expert Users

Remote directory creation

Is there a way to create a directory in some remote location from a local location? I understand that we can use 'rcp' to copy a local file to a remote location. I am looking for a command in similar lines which lets us create directories in remote locations. Could someone help? (5 Replies)
Discussion started by: srinivay
5 Replies
Login or Register to Ask a Question