예제 #1
0
int
getData(FILE *inFile,char **inString) {
    int len = 0;
    int space = MAX_STRING;
    int oneequal = false;
    int c;
    char *string = (char *) malloc(space);

    string[len++]='M';

    while ((c = getc(inFile)) != EOF) {
        if (len >= space) {
            char *newString;

            space *= 2;
            newString = (char *)realloc(string,space);
            if (newString == NULL) {
                ungetc(c,inFile);
                break;
            }
            string = newString;
        }
        string[len++] = c;
        if (!isatobchar(c)) {
            if (c == '=') {
                if (oneequal) {
                    break;
                }
                oneequal = true;
                continue;
            } else {
                ungetc(c,inFile);
                len--;
                break;
            }
        }
        if (oneequal) {
            ungetc(c,inFile);
            len--;
            break;
        }
    }
    if (len >= space) {
        space += 2;
        string = (char *)realloc(string,space);
    }
    string[len++] = 0;
    *inString = string;
    return true;
}
예제 #2
0
int
isBase64(char *inString) 
{
    unsigned int i;
    unsigned char c;

    for (i = 0; (c = inString[i]) != 0 && isatobchar(c); ++i) 
	;
    if (c == '=') {
	while ((c = inString[++i]) == '=')
	    ; /* skip trailing '=' characters */
    }
    if (c && c != '\n' && c != '\r')
	return false;
    if (i == 0 || i % 4)
    	return false;
    return true;
}