What is user gcc's purpose in requesting code possibly like this?
- by James Morris
In the question between syntax, are there any equal function the user gcc is requesting only what I can imagine to be the following code:
#include <stdio.h>
#include <string.h>
/* estimated magic values */
#define MAXFUNCS   8
#define MAXFUNCLEN 3
int the_mainp_compare_func(char** mainp)
{
    char mainp0[MAXFUNCS][MAXFUNCLEN] = { 0 };
    char mainp1[MAXFUNCS][MAXFUNCLEN] = { 0 };
    char* psrc, *pdst;
    int i = 0;
    int func = 0;
    psrc = mainp[0];
    printf("scanning mainp[0] for functions...\n");
    while(*psrc)
    {
        if (*psrc == '\0')
            break;
        else if (*psrc == ',')
            ++psrc;
        else
        {
            mainp0[func][0] = *psrc++;
            if (*psrc == ',')
            {
                mainp0[func][1] = '\0';
                psrc++;
            }
            else if (*psrc !='\0')
            {
                mainp0[func][1] = *psrc++;
                mainp0[func][2] = '\0';
            }
            printf("function: '%s'\n", mainp0[func]);
        }
        ++func;
    }
    printf("\nscanning mainp[1] for functions...\n");
    psrc = mainp[1];
    func = 0;
    while(*psrc)
    {
        if (*psrc == '\0')
            break;
        else if (*psrc == ',')
            ++psrc;
        else
        {
            mainp1[func][0] = *psrc++;
            if (*psrc == ',')
            {
                mainp1[func][1] = '\0';
                psrc++;
            }
            else if (*psrc !='\0')
            {
                mainp1[func][1] = *psrc++;
                mainp1[func][2] = '\0';
            }
            printf("function: '%s'\n", mainp1[func]);
        }
        ++func;
    }
    printf("\ncomparing functions in '%s' with those in '%s'\n",
                                    mainp[0],         mainp[1] );
    int func2;
    func = 0;
    while (*mainp0[func] != '\0')
    {
        func2 = 0;
        while(*mainp1[func2] != '\0')
        {
            printf("comparing %s with %s\n", mainp0[func], mainp1[func2]);
            if (strcmp(mainp0[func], mainp1[func2++]) == 0)
                return 1; /* not sure what to return here */
        }
        ++func;
    }
    /* no matches == failure */
    return -1; /* not sure what to return on failure */
}
int main(int argc, char** argv)
{
    char* mainp[] = { "P,-Q,Q,-R", "R,A,P,B,F" };
    if (the_mainp_compare_func(mainp) == 1)
        printf("a match was found, but I don't know what to do with it!\n");
    else
        printf("no match found, and I'm none the wiser!\n");
    return 0;
}
My question is, what is it's purpose?