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

1.3     ! paf         1: /**
        !             2:        Parser: file class.
        !             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.3     ! paf         8:        $Id: pa_vfile.C,v 1.9 2001/03/19 20:07:39 paf Exp $
1.1       paf         9: */
                     10: 
                     11: #include <string.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.3     ! paf        17: VFile::VFile(Pool& apool, 
        !            18:                         const char *avalue_ptr, size_t avalue_size,
        !            19:                         const char *afile_name) : VStateless_class(apool, file_base_class),
        !            20:                         
        !            21:                         fvalue_ptr(avalue_ptr),
        !            22:                         fvalue_size(avalue_size),
        !            23:                         fields(apool) {
        !            24:        // $name
        !            25:        char *lfile_name=(char *)malloc(strlen(afile_name)+1);
        !            26:        strcpy(lfile_name, afile_name);
        !            27:        if(char *after_slash=rsplit(lfile_name, '\\'))
        !            28:                lfile_name=after_slash;
        !            29:        if(char *after_slash=rsplit(lfile_name, '/'))
        !            30:                lfile_name=after_slash;
        !            31:        fields.put(*name_name, NEW VString(*NEW String(pool(), lfile_name, true)));
        !            32:        // $size
        !            33:        fields.put(*size_name, NEW VInt(pool(), fvalue_size));
        !            34:        // $text
        !            35:        String& text=*NEW String(pool());
        !            36:        char *premature_zero_pos=(char *)memchr(fvalue_ptr, 0, fvalue_size);
        !            37:        if(premature_zero_pos!=fvalue_ptr)
        !            38:                text.APPEND(fvalue_ptr, 
        !            39:                        premature_zero_pos?premature_zero_pos-fvalue_ptr:fvalue_size, 
        !            40:                        "<input type=file>", 0);
        !            41:        fields.put(*text_name, NEW VString(text));
        !            42: }

E-mail: