Annotation of embedaddon/miniupnpd/miniupnpc/src/testupnpreplyparse.c, revision 1.1

1.1     ! misho       1: /* $Id: testupnpreplyparse.c,v 1.4 2014/01/27 11:45:19 nanard Exp $ */
        !             2: /* MiniUPnP project
        !             3:  * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
        !             4:  * (c) 2006-2017 Thomas Bernard
        !             5:  * This software is subject to the conditions detailed
        !             6:  * in the LICENCE file provided within the distribution */
        !             7: #include <stdio.h>
        !             8: #include <string.h>
        !             9: #include <stdlib.h>
        !            10: #include "upnpreplyparse.h"
        !            11: 
        !            12: int
        !            13: test_parsing(const char * buf, int len, FILE * f)
        !            14: {
        !            15:        char line[1024];
        !            16:        struct NameValueParserData pdata;
        !            17:        int ok = 1;
        !            18:        ParseNameValue(buf, len, &pdata);
        !            19:        /* check result */
        !            20:        if(f != NULL)
        !            21:        {
        !            22:                while(fgets(line, sizeof(line), f))
        !            23:                {
        !            24:                        char * value;
        !            25:                        char * equal;
        !            26:                        char * parsedvalue;
        !            27:                        int l;
        !            28:                        l = strlen(line);
        !            29:                        while((l > 0) && ((line[l-1] == '\r') || (line[l-1] == '\n')))
        !            30:                                line[--l] = '\0';
        !            31:                        /* skip empty lines */
        !            32:                        if(l == 0)
        !            33:                                continue;
        !            34:                        equal = strchr(line, '=');
        !            35:                        if(equal == NULL)
        !            36:                        {
        !            37:                                fprintf(stderr, "Warning, line does not contain '=' : %s\n", line);
        !            38:                                continue;
        !            39:                        }
        !            40:                        *equal = '\0';
        !            41:                        value = equal + 1;
        !            42:                        parsedvalue = GetValueFromNameValueList(&pdata, line);
        !            43:                        if((parsedvalue == NULL) || (strcmp(parsedvalue, value) != 0))
        !            44:                        {
        !            45:                                fprintf(stderr, "Element <%s> : expecting value '%s', got '%s'\n",
        !            46:                                        line, value, parsedvalue ? parsedvalue : "<null string>");
        !            47:                                ok = 0;
        !            48:                        }
        !            49:                }
        !            50:        }
        !            51:        ClearNameValueList(&pdata);
        !            52:        return ok;
        !            53: }
        !            54: 
        !            55: int main(int argc, char * * argv)
        !            56: {
        !            57:        FILE * f;
        !            58:        char * buffer;
        !            59:        long l;
        !            60:        int ok;
        !            61: 
        !            62:        if(argc<2)
        !            63:        {
        !            64:                fprintf(stderr, "Usage: %s file.xml [file.namevalues]\n", argv[0]);
        !            65:                return 1;
        !            66:        }
        !            67:        f = fopen(argv[1], "r");
        !            68:        if(!f)
        !            69:        {
        !            70:                fprintf(stderr, "Error : can not open file %s\n", argv[1]);
        !            71:                return 2;
        !            72:        }
        !            73:        if(fseek(f, 0, SEEK_END) < 0) {
        !            74:                perror("fseek");
        !            75:                return 1;
        !            76:        }
        !            77:        l = (int)ftell(f);
        !            78:        if(l < 0) {
        !            79:                perror("ftell");
        !            80:                return 1;
        !            81:        }
        !            82:        if(fseek(f, 0, SEEK_SET) < 0) {
        !            83:                perror("fseek");
        !            84:                return 1;
        !            85:        }
        !            86:        buffer = malloc(l + 1);
        !            87:        if(buffer == NULL) {
        !            88:                fprintf(stderr, "Error: failed to allocate %ld bytes\n", l+1);
        !            89:                return 1;
        !            90:        }
        !            91:        l = fread(buffer, 1, l, f);
        !            92:        fclose(f);
        !            93:        f = NULL;
        !            94:        buffer[l] = '\0';
        !            95:        if(argc > 2)
        !            96:        {
        !            97:                f = fopen(argv[2], "r");
        !            98:                if(!f)
        !            99:                {
        !           100:                        fprintf(stderr, "Error : can not open file %s\n", argv[2]);
        !           101:                        return 2;
        !           102:                }
        !           103:        }
        !           104: #ifdef DEBUG
        !           105:        DisplayNameValueList(buffer, l);
        !           106: #endif
        !           107:        ok = test_parsing(buffer, l, f);
        !           108:        if(f)
        !           109:        {
        !           110:                fclose(f);
        !           111:        }
        !           112:        free(buffer);
        !           113:        return ok ? 0 : 3;
        !           114: }
        !           115: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>