Sponsored Content
Top Forums Programming unable to send a char parameter from main to a function Post 302564323 by bluetxxth on Thursday 13th of October 2011 10:39:36 AM
Old 10-13-2011
Hi Jim thank you for your reply!
I actually thought that what I had done was the problem but I think it is actually getopt() I will try to explain:
this first code takes care of a var that is set to either d,f or l (dir, file, or slink) the desired option in getopt().

Code:
char getFileMode(char charSetter) {
    char fileType = 0; /*var to hold the value to be returned*/ 
    charSetter=0;
    fileType = charSetter;    
    return fileType; /*end function */
}

Then I have a function where I do all the tests to see if I can open a dir do lstat and then test for S_ISDIR, S_ISREG and S_ISLNK.

All seems to work fine in it.

This is the prototype of the funcion.

Code:
void dirTreeWalker(char fileType, char *dirName, char charSetter);

This is what it does
Code:
1.1 open dir
   1.2  if dp == NULL print ERROR
 2.1 else while dp != NULL 
    2.2 if  not ".." and  not "."  lstat
    2.3 if  lstat(path, &info) < 0) print error
    2.4 if ((S_ISDIR(info.st_mode))&&(fileType == 'd')) print path
         else if ((S_ISREG(info.st_mode))&&( fileType == 'f')) print path
         else if ((S_ISLNK(info.st_mode))&&(fileType == 'l')) print path
    2.5 else print all thre options
    2.6 closedir

So long for that function, I have tested it on its own and it works.

However, and here is the problem I think...

When I use getopt like I do as follows I don't get to see the directories nor the files. It is as if charSetter does not get assigned any value.

Code:
    /*this set of vars for getopt*/
    int c;
    char *options = "t::dfl";
    extern char *optarg;
    extern int optind, optopt, opterr;
    char dir = 'd', 
        file = 'f', 
        slink = 'l', 
        charSetter = 0;

    /*this set of vars for the traversal and the test*/
    char fileType = 0;
    char *dirName = argv[argc-1];
    /* char *fileName =  */

while ((c = getopt(argc, argv, options)) != -1) {
    switch (c) {
        case 't':
            optarg = options;
            printf("Type is set: %c\n", charSetter);
            printf("option: %c\n",c);
            break;
            
        case 'd':
            printf("d is set\n");
            charSetter = dir;
            break;

        case 'f':
            printf("f is set\n");
            charSetter = file;
            printf("\ntype of file is f %c\n", fileType); /*test to be removed*/
            break;

        case 'l':
            printf("l is set\n");
            charSetter = slink;
            printf("\ntype of file is l %c\n", fileType); /*test to be removed*/
            break;

        case ':':
            printf("-%c without type\n", optopt);
            break;

        case '?':
            printf("unknown arg %c\n", optopt);
            fprintf(stderr, "Unrecognized option: -%c\n", optopt);
    }

}
    int i;
    for(i=1;i<argc;i++){
    printf("argv: %s\n",argv[i]);
    }

    for (; optind < argc; optind++) {
     fileType = getFileMode(charSetter);
     dirTreeWalker(fileType, dirName, charSetter);
    }


Last edited by bluetxxth; 10-13-2011 at 11:50 AM.. Reason: error
 

10 More Discussions You Might Find Interesting

1. Programming

c++ calling main() function

i just finished a project for a c++ class that i wrote at home on my computer, compiled with gcc. when i brought the code into school it would not compile, it would complain that cannot call main() function. at school we use ancient borland c++ from 1995. anyway my program has 20 different... (3 Replies)
Discussion started by: norsk hedensk
3 Replies

2. Programming

main function

Is it possible to execute any function before main() function in C or C++. (6 Replies)
Discussion started by: arun.viswanath
6 Replies

3. Programming

signal handling while in a function other than main

Hi, I have a main loop which calls a sub loop, which finally returns to the main loop itself. The main loop runs when a flag is set. Now, I have a signal handler for SIGINT, which resets the flag and thus stops the main loop. Suppose I send SIGINT while the program is in subloop, I get an error... (1 Reply)
Discussion started by: Theju
1 Replies

4. Shell Programming and Scripting

Help in separating variables declared in the main function

Hi! I've a C program as shown below.. The line numbers and the statements of the program are separated by a space.. 1 #include<stdio.h> 2 char a,b,c; 3 float x,y,z; 4 int main() 5 { 6 int d,e,f; 7 // further declarations 8 // further declarations 9 /* body*/ 10 } 11 void fun1() 12... (1 Reply)
Discussion started by: abk07
1 Replies

5. Programming

How to access argv[x] from another function other than main???

Hi friends, when I am passing arguments to main, I want another function to be able to have access to that function, the problem is that I am creating athread, which has a function like void *xyz(void *), how can pass the refernce of argv to this function, if you see my program, you will better... (2 Replies)
Discussion started by: gabam
2 Replies

6. Programming

Function main returning int?

H friends, As we know, a function returns a value and that value is saved somwhere. like int Sum( int x, int y ) { return x + y; } Total = Sum( 10, 20 ); The value 30 is saved in variable Total. Now the question is, what int value does the function main return, and where is it... (5 Replies)
Discussion started by: gabam
5 Replies

7. AIX

Calling functions from main program from dlopened library function

Hello All, I am trying to call a function from the calling main program from a dlopened library function, below is the entire code, when I execute it it crashes with sigill. Can you guys help me out I guess I am missing out on the linker flag or something here. besides I am new to AIX and... (1 Reply)
Discussion started by: syedtoah
1 Replies

8. UNIX for Dummies Questions & Answers

[ksh93+] Array fed by function is empty when used in main.

I feel that i am missing something obvious but i can't find what is wrong. I have a script that is launching some functions with "&" and each call is feeding the array with a value. When all calls are finished I just want to retrieve the values of that array. It is looking like that : ... (5 Replies)
Discussion started by: bibou25
5 Replies

9. Programming

A single statement without main function in c

A sample.c file is written with only one single statement. main; Segmentation fault occurred when executed that file. Any statement other than main; is written, for example unix; then it won't compile. why is this behaviour ! (2 Replies)
Discussion started by: techmonk
2 Replies

10. UNIX for Beginners Questions & Answers

A function that refuses to run anywhere else but main()

Hi. I have some code, that for some reason, I could not post it here in this post. Here's the address for it: #if 0 shc Version 4.0.1, Generic Shell Script Compiler GNU GPL Version 3 Md - Pastebin.com First off, I used "shc" to convert the code from shell script to C. And The... (6 Replies)
Discussion started by: ignatius
6 Replies
All times are GMT -4. The time now is 02:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy