/* bindings */
char* removeargnames(char* pszBuf)
{
    if (strstr(pszBuf, "="))
    {
        *strstr(pszBuf, "=") = 0;
        stripline(pszBuf);
    }

    if (strstr(pszBuf, "(") == NULL)
        return pszBuf;
    
    //fprintf(stderr, "%s\n", pszBuf);

    if (strstr(pszBuf, "{"))
    {
        *strstr(pszBuf, "{") = 0;
        stripline(pszBuf);
    }
    else
    {
        int i = strstr(pszBuf, ")") - pszBuf - 1;
        char* lastOK = strstr(pszBuf, ")");
        while(i>0 && pszBuf[i] == ' ')
            i --;
        while(i>0)
        {
            if (pszBuf[i] == '(')
                break;
            if (pszBuf[i] == ' ' || pszBuf[i] == ']')
            {
                if (pszBuf[i] == ' ')
                    memmove(pszBuf + i + 1, lastOK, strlen(lastOK) + 1);
                else
                    memmove(pszBuf + i, lastOK, strlen(lastOK) + 1);
                while(pszBuf[i] != ',' && pszBuf[i] != '(')
                    i --;
                if (pszBuf[i] == ',')
                    lastOK = pszBuf + i;
                else
                    break;
            }
            i --;
        }
        i = strstr(pszBuf, "(") - pszBuf;
        while(pszBuf[i])
        {
            if (pszBuf[i] == ' ')
                memmove(pszBuf + i, pszBuf + i + 1, strlen(pszBuf + i + 1) + 1);
            else
                i++;
        }
    }
    //fprintf(stderr, "after : %s\n", pszBuf);
    return pszBuf;
}
Exemple #2
0
int main () {
    char ret[MAXLEN];
    while (getnextline(ret) != -1) {
        stripline(ret);
        printf("%s\n", ret);
    }
    return 0;
}
int main(int argc, char* argv[])
{
    const char* patch_filename = argv[1];
    
    FILE* fSrc = fopen(patch_filename, "rt");
    FILE* fDst;
    JavaDocInstance* instances = (JavaDocInstance*)calloc(sizeof(JavaDocInstance), 3000);
    int nInstances = 0;
    char szLine[256];
    char szClass[256];
    char javadoc[16384];
    szClass[0] = 0;
    while(fgets(szLine, 255, fSrc))
    {
        if (strstr(szLine, "/**") == NULL) continue;
begin:
        strcpy(javadoc, szLine);
        while(fgets(szLine, 255, fSrc))
        {
            strcat(javadoc, szLine);
            if (strstr(szLine, "*/"))
                break;
        }
        while(fgets(szLine, 255, fSrc))
        {
            if (szLine[0] == 10)
                continue;
            else if (strstr(szLine, "*") == NULL)
            {
                instances[nInstances].javadoc = strdup(javadoc);
                
                char* pszLine = szLine;
                if (strncmp(pszLine, "@hide ", 6) == 0)
                {
                    instances[nInstances].bHide = 1;
                    pszLine += 6;
                }
                else
                    instances[nInstances].bHide = 0;
                
                instances[nInstances].methodName = strdup(stripline(pszLine));
                instances[nInstances].compactMethodName = strdup(removeargnames(stripline(pszLine)));
                nInstances++;
            }
            else
                break;
        }
        if (strstr(szLine, "/**") != NULL)
            goto begin;
    }
    //fprintf(stderr, "nInstances=%d\n", nInstances);
    fclose(fSrc);
    
    int i;
    for(i=3;i<argc;i++)
    {
        fSrc = fopen(argv[i], "rt");
        if (fSrc == NULL) continue;
        char szDstName[1024];
        sprintf(szDstName, "%s/%s", argv[2], argv[i]);
        fDst = fopen(szDstName, "wt");
        if (fDst == NULL) continue;
        szClass[0] = 0;
        char szPackage[256];
        szPackage[0] = 0;

        while(fgets(szLine, 255, fSrc))
        {
            char szMethodName[1024];
            char* szOriLine = strdup(szLine);
            if (strstr(szLine, "package"))
            {
                strcpy(szPackage, szLine);
            }
            else if (strstr(szLine, "public class") || strstr(szLine, "public interface"))
            {
                strcpy(szClass, stripline(szLine));
                if (strstr(szClass, "extends"))
                {
                    *strstr(szClass, "extends") = 0;
                    stripline(szClass);
                }
                if (strstr(szClass, "implements"))
                {
                    *strstr(szClass, "implements") = 0;
                    stripline(szClass);
                }
                if (strstr(szLine, "Driver"))
                {
                    if (strstr(szPackage, "org.gdal.gdal"))
                        strcpy(szLine, "public class org.gdal.gdal.Driver");
                    else
                        strcpy(szLine, "public class org.gdal.ogr.Driver");
                    strcpy(szClass, szLine);
                }
            }
            if (strstr(szLine, "synchronized "))
            {
                char* c = strstr(szLine, "synchronized ");
                *c = 0;
                strcat(szLine, c + 13);
            }
            if (strstr(szLine, "public") && !strstr(szLine, "native"))
            {
                if (strchr(szLine, '(') && !strchr(szLine,')'))
                {
                    strcpy(szMethodName, szLine);
                    do
                    {
                        fgets(szLine, 255, fSrc);
                        strcpy(szMethodName + strlen(szMethodName) - 1, szLine);
                    } while (!strchr(szMethodName,')'));
                    strcpy(szLine, szMethodName);
                    free(szOriLine);
                    szOriLine = strdup(szMethodName);
                    //fprintf(stderr, "%s\n", szOriLine);
                }
                if (strchr(szLine, '(') || strchr(szLine, '='))
                    sprintf(szMethodName, "%s:%s", szClass, removeargnames(stripline(szLine)));
                else
                    strcpy(szMethodName, szClass);
                //fprintf(stderr, "%s\n", szMethodName);
                int j;
                for(j=0;j<nInstances;j++)
                {
                    if (strcmp(instances[j].compactMethodName, szMethodName) == 0)
                    {
                        instances[j].bUsed = TRUE;

                        //fprintf(stderr, "found match for %s\n", szMethodName);
                        if (instances[j].bHide)
                        {
                            if (strstr(szLine, "final static") == NULL)
                            {
                                do
                                {
                                    fgets(szLine, 255, fSrc);
                                } while (!strchr(szLine,'}'));
                            }
                            break;
                        }
                            
                        fprintf(fDst, "%s", instances[j].javadoc);
                        if (strchr(szMethodName, '('))
                        {
                            fprintf(fDst, "%s;\n", strchr(instances[j].methodName, ':')+1);
                            int nBrackets = 0;
                            int bFoundOpen = FALSE;
                            strcpy(szLine, szOriLine);
                            do
                            {
                                int j;
                                for(j=0;szLine[j];j++)
                                {
                                    if (szLine[j] == '{')
                                    {
                                        bFoundOpen = TRUE;
                                        nBrackets ++;
                                    }
                                    else if (szLine[j] == '}')
                                    {
                                        nBrackets --;
                                    }
                                }
                                fgets(szLine, 255, fSrc);
                            } while(bFoundOpen == FALSE || nBrackets > 0);
                        }
                        else
                            fprintf(fDst, "%s", szOriLine);
                        break;
                    }
                }
                if (j == nInstances)
                {
                    if (strstr(szOriLine, "public") && (strstr(szOriLine, "getCPtr") || strstr(szOriLine, "long cPtr")))
                    {
                        char* c = strstr(szOriLine, "public");
                        *c = 0;
                        fprintf(fDst, "%s private %s", szOriLine, c + 6);
                    }
                    else
                        fprintf(fDst, "%s", szOriLine);
                }
            }
            else
                fprintf(fDst, "%s", szOriLine);
            free(szOriLine);
        }
        
        fclose(fSrc);
        fclose(fDst);
    }
    
    int j;
    for(j=0;j<nInstances;j++)
    {
        if (!instances[j].bUsed)
            fprintf(stderr, "WARNING: did not find occurence of %s\n", instances[j].methodName);
    }
    
    return 0;
}
Exemple #4
0
void
load_helpers (void)
{
	FILE *fp;
	char b[STRING_LONG], *user_host, *greetz, *numb_join, *chan, *w_level, *pass;
	long num_join = 0, i = 0, level = 0;

	if ((fp = fopen (HELPER_LIST, "r")) == NULL)
	{
		printf ("Unable to open %s! Aborting connection.\n", HELPER_LIST);
		printf ("Please run ./configure to setup your darkbot.\n");
		exit (0);
	}
#ifndef	WIN32
	printf ("Loading %s file ", HELPER_LIST);
#endif
	while (fgets (b, STRING_LONG, fp))
	{
		if (b == NULL)
			continue;
		stripline (b);
		if (*b == '/')
			continue;
		i++;
		printf (".");
		fflush (stdout);
		chan = strtok (b, " ");
		if (chan == NULL)
			continue;
		user_host = strtok (NULL, " ");
		if (user_host == NULL)
			continue;
		w_level = strtok (NULL, " ");
		if (w_level == NULL)
			continue;
		numb_join = strtok (NULL, " ");
		if (numb_join == NULL)
			continue;
		pass = strtok (NULL, " ");
		if (pass == NULL)
		{
			pass = "******";			/* duh */
		}
		greetz = strtok (NULL, "");
		if (greetz == NULL)
			greetz = "I haven't used \2SETINFO\2 yet!";
		if (w_level != NULL)
			level = atoi (w_level);
		else
			level = 1;
		if (numb_join != NULL)
			num_join = atoi (numb_join);
		else
			num_join = 0;
		if (strlen (pass) > 25)
			pass[25] = '\0';
		if (DebuG == 1)
			printf
				("loading helperlist: %s %s l:%d j:%d %s\n",
				 chan, user_host, (int) level, (int) num_join, greetz);
		add_helper (chan, user_host, level, num_join, greetz, pass, 1);
	}
	printf ("done(%d), ", (int) i);
	fclose (fp);
	save_changes ();
	if (DebuG == 1)
		db_sleep (2);
}