Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Štvrtok, 28. marec 2024

Súbor: [Platon] / cpdf / parse.c (stiahnutie)

Revízia 1.3, Fri Sep 13 20:39:36 2002 UTC (21 years, 6 months ago) by lynx

Zmeny od 1.2: +18 -13 [lines]

Added interpreter to /name objects.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* function compute number of locations of char c from buffer to character e 
 */
int strlenc(char *buffer, char c, char e)
{
    register int i = 0;
    register char *p = buffer;
    while (*p && *p != e) {
        if (*p == c)
            i++;
        p++;
    }
    return i;
}

/* interpreting special characters in name string */
char *name(char *buffer)
{
    register char *ret;
    char num[4] = "0x";
    if (*ret != '/')
        return NULL;
    ret = (char *) malloc(255);
    while (*buffer != ' ') {
        if (*buffer == '#') {
            num[2] = *(buffer + 1);
            num[3] = *(buffer + 2);
            *ret = (char) strtoul(&num,NULL,16);    
            buffer += 2;
        }
        *ret = *buffer;
        ret++;
        buffer++;
    }
    return ret;
}

/* parse arrays */
char **array(char *buffer)
{
    register char **ret;
    register int end, a, index;
    if (*buffer != '[')
        return NULL;
    ret = (char **) malloc(strlenc(buffer,' ',']') * sizeof(char));
    end = a = index = 0;
    while (end > 0) {
        switch (*buffer) {
        case '[':
            end++;
            if(*(buffer + 1) == ' ')
                buffer++;
            break;
        case ']':
            end--;
            break;
        case ' ':
            if (*(buffer + 1) == ']')
                break;
            ret[index] = buffer - a;
            *buffer = '\0';
            a = 0;
            index++;
            break;
        default:
            a++;
        }
        buffer++;
    }
    return ret;
}

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok