Diff for /parser3/src/classes/file.C between versions 1.27 and 1.30

version 1.27, 2001/04/17 19:00:27 version 1.30, 2001/04/19 16:40:05
Line 102  static void append_env_pair(const Hash:: Line 102  static void append_env_pair(const Hash::
         Hash& hash=*static_cast<Hash *>(info);          Hash& hash=*static_cast<Hash *>(info);
         hash.put(key, &static_cast<Value *>(value)->as_string());          hash.put(key, &static_cast<Value *>(value)->as_string());
 }  }
 /// ^exec[file-name]  
 /// ^exec[file-name;env hash]  static void pass_cgi_header_attribute(Array::Item *value, void *info) {
 /// ^exec[file-name;env hash;cmd;line;arg;s]          String& string=*static_cast<String *>(value);
 /// @test header to $fields. waits for header '\' tricks          Hash& hash=*static_cast<Hash *>(info);
           int colon_pos=string.pos(":", 1);
           if(colon_pos>0)
                   hash.put(string.mid(0, colon_pos), 
                   new(string.pool()) VString(string.mid(colon_pos+1, string.size())));
   }
   /**
           ^exec[file-name]
           ^exec[file-name;env hash]
           ^exec[file-name;env hash;cmd;line;arg;s]
           @todo fix `` in perl - they produced flipping consoles and no output to perl
   */
 static void _cgi(Request& r, const String& method_name, MethodParams *params) {  static void _cgi(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
   
Line 177  static void _cgi(Request& r, const Strin Line 188  static void _cgi(Request& r, const Strin
         const String in(pool, r.post_data, r.post_size);          const String in(pool, r.post_data, r.post_size);
         String out(pool);          String out(pool);
         String& err=*new(pool) String(pool);          String& err=*new(pool) String(pool);
         int exit_code=pa_exec(script_name, &env, argv,  //      out.APPEND_CONST("content-type:text/plain\nheader:test-header\n\ntest-body");
                 in, out, err);          int exit_code=pa_exec(script_name, &env, argv, in, out, err);
   
         VFile& self=*static_cast<VFile *>(r.self);          VFile& self=*static_cast<VFile *>(r.self);
         // construct with 'out' body and header          // construct with 'out' body and header
         int delim_size;          int delim_size;
         int pos=out.pos("\n\n", delim_size=2);          const char *eol_marker="\r\n"; size_t eol_marker_size=2;
         if(pos<0)          int pos=out.pos("\r\n\r\n", delim_size=4);
                 pos=out.pos("\r\n\r\n", delim_size=4);          if(pos<0) {
                   eol_marker="\n"; eol_marker_size=1;
                   pos=out.pos("\n\n", delim_size=2);
           }
         if(pos<0) {          if(pos<0) {
                 delim_size=0; // calm down, compiler                  delim_size=0; // calm down, compiler
                 PTHROW(0, 0,                  PTHROW(0, 0,
Line 200  static void _cgi(Request& r, const Strin Line 214  static void _cgi(Request& r, const Strin
         // body          // body
         self.set(false/*not tainted*/, body.cstr(String::UL_AS_IS), body.size());          self.set(false/*not tainted*/, body.cstr(String::UL_AS_IS), body.size());
   
         // todo header to $fields. waits for header '\' tricks          // header to $fields
           {
                   Array rows(pool);
                   header.split(rows, 0, eol_marker, eol_marker_size, String::UL_CLEAN);
                   rows.for_each(pass_cgi_header_attribute, &self.fields());
           }
   
         // $exit-code          // $exit-code
         self.fields().put(          self.fields().put(

Removed from v.1.27  
changed lines
  Added in v.1.30


E-mail: