Annotation of parser3/src/types/pa_vfile.C, revision 1.8

1.5       paf         1: /** @file
                      2:        Parser: file object.
1.3       paf         3: 
1.1       paf         4:        Copyright(c) 2001 ArtLebedev Group(http://www.artlebedev.com)
1.3       paf         5: 
1.1       paf         6:        Author: Alexander Petrosyan <paf@design.ru>(http://design.ru/paf)
                      7: 
1.8     ! paf         8:        $Id: pa_vfile.C,v 1.7 2001/03/28 09:38:09 paf Exp $
1.1       paf         9: */
                     10: 
1.6       paf        11: #include "pa_config_includes.h"
1.3       paf        12: #include <memory.h>
1.1       paf        13: #include "pa_vfile.h"
                     14: #include "pa_vstring.h"
1.3       paf        15: #include "pa_vint.h"
1.1       paf        16: 
1.8     ! paf        17: void VFile::set(const void *avalue_ptr, size_t avalue_size,
        !            18:                                const char *afile_name) {
        !            19:        fvalue_ptr=avalue_ptr;
        !            20:        fvalue_size=avalue_size;
        !            21: 
        !            22:        fields.clear();
1.3       paf        23:        // $name
                     24:        char *lfile_name=(char *)malloc(strlen(afile_name)+1);
                     25:        strcpy(lfile_name, afile_name);
                     26:        if(char *after_slash=rsplit(lfile_name, '\\'))
                     27:                lfile_name=after_slash;
                     28:        if(char *after_slash=rsplit(lfile_name, '/'))
                     29:                lfile_name=after_slash;
                     30:        fields.put(*name_name, NEW VString(*NEW String(pool(), lfile_name, true)));
                     31:        // $size
                     32:        fields.put(*size_name, NEW VInt(pool(), fvalue_size));
                     33:        // $text
                     34:        String& text=*NEW String(pool());
                     35:        char *premature_zero_pos=(char *)memchr(fvalue_ptr, 0, fvalue_size);
                     36:        if(premature_zero_pos!=fvalue_ptr)
1.8     ! paf        37:                text.APPEND_TAINTED((char *)fvalue_ptr, 
1.7       paf        38:                        premature_zero_pos?premature_zero_pos-(char *)fvalue_ptr:fvalue_size, 
                     39:                        "user <input type=file>", 0);
1.3       paf        40:        fields.put(*text_name, NEW VString(text));
                     41: }
1.8     ! paf        42: 

E-mail: