Annotation of parser3/src/types/pa_vfile.C, revision 1.14
1.5 paf 1: /** @file
1.14 ! paf 2: Parser: @b file parser type.
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.14 ! paf 8: $Id: pa_vfile.C,v 1.13 2001/04/09 11:30:44 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.13 paf 17: void VFile::set(bool tainted,
18: const void *avalue_ptr, size_t avalue_size,
1.9 paf 19: const char *afile_name,
20: const String *mime_type) {
1.8 paf 21: fvalue_ptr=avalue_ptr;
22: fvalue_size=avalue_size;
23:
1.10 paf 24: ffields.clear();
1.3 paf 25: // $name
1.14 ! paf 26: char *lfile_name;
1.10 paf 27: if(afile_name) {
1.14 ! paf 28: lfile_name=(char *)malloc(strlen(afile_name)+1);
1.10 paf 29: strcpy(lfile_name, afile_name);
30: if(char *after_slash=rsplit(lfile_name, '\\'))
31: lfile_name=after_slash;
32: if(char *after_slash=rsplit(lfile_name, '/'))
33: lfile_name=after_slash;
1.14 ! paf 34:
! 35: } else
! 36: lfile_name="noname.dat";
! 37: ffields.put(*name_name, NEW VString(*NEW String(pool(), lfile_name, 0, true)));
1.3 paf 38: // $size
1.10 paf 39: ffields.put(*size_name, NEW VInt(pool(), fvalue_size));
1.3 paf 40: // $text
1.14 ! paf 41: if(fvalue_ptr) { // assigned files don't have bytes
! 42: String& text=*NEW String(pool());
! 43: char *premature_zero_pos=(char *)memchr(fvalue_ptr, 0, fvalue_size);
! 44: if(premature_zero_pos!=fvalue_ptr)
! 45: text.APPEND((char *)fvalue_ptr,
1.7 paf 46: premature_zero_pos?premature_zero_pos-(char *)fvalue_ptr:fvalue_size,
1.13 paf 47: tainted? String::UL_TAINTED : String::UL_CLEAN,
1.7 paf 48: "user <input type=file>", 0);
1.14 ! paf 49: ffields.put(*text_name, NEW VString(text));
! 50: }
1.9 paf 51: // $mime-type
52: if(mime_type)
1.10 paf 53: ffields.put(*vfile_mime_type_name, NEW VString(*mime_type));
1.3 paf 54: }
E-mail: