Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • streebog
  • gost28147
  • master-updates
  • ed448
  • shake256
  • curve448
  • ecc-sqrt
  • gosthash94cp
  • cmac64
  • block16-refactor
  • siv-mode
  • cmac-layout
  • delete-des-compat
  • delete-rsa_blind
  • aes-struct-layout
  • release-3.4-fixes
  • struct-layout
  • attribute-deprecated
  • rename-data-symbols
  • nettle_3.5.1_release_20190627
  • nettle_3.5_release_20190626
  • nettle_3.5rc1
  • nettle_3.4.1_release_20181204
  • nettle_3.4.1rc1
  • nettle_3.4_release_20171119
  • nettle_3.4rc2
  • nettle_3.4rc1
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1.1_release_20150424
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
  • nettle_2.7.1_release_20130528
  • nettle_2.7_release_20130424
  • nettle_2.6_release_20130116
  • nettle_2.5_release_20120707
40 results

README

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    module.pmod 2.09 KiB
    // FIXME! doc bad
    
    //! module Protocols
    //! submodule HTTP
    //! class HeaderParser
    //!	Fast HTTP header parser. 
    
    //! module Protocols
    //! submodule HTTP
    //! method string http_decode_string(string what)
    
    constant HeaderParser=_Roxen.HeaderParser;
    constant http_decode_string=_Roxen.http_decode_string;
    
    //! method mapping(string:string|array(string)) http_decode_urlencoded_query(string query,void|mapping dest)
    //!	Decodes an URL-encoded query into a mapping.
    
    mapping(string:string|array(string))
       http_decode_urlencoded_query(string query,
    				void|mapping dest)
    {
       if (!dest) dest=([]);
    
       foreach (query/"&",string s)
       {
          string i,v;
          if (sscanf(s,"%s=%s",i,v)<2) v=i=http_decode_string(s);
          else i=http_decode_string(i),v=http_decode_string(v);
          if (dest[i]) 
    	 if (arrayp(dest[i])) dest[i]+=({v});
    	 else dest[i]=({dest[i],v});
          else dest[i]=v;
       }
       
       return dest;
    }
    
    
    //! method string filename_to_type(string filename)
    //! method string extension_to_type(string extension)
    //!	Looks up the file extension in a table to return
    //!	a suitable MIME type. The table is located in the
    //!	[...]pike/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/extensions.txt
    //!	file.
    
    mapping extensions=0;
    
    string extension_to_type(string extension)
    {
       if (!extensions)
       {
          Stdio.File f=Stdio.FILE(
    	 combine_path(__FILE__,"..","extensions.txt"),"r");
    
          mapping res=([]);
    
          while (array a=f->ngets(1000))
    	 foreach (a,string l)
    	    if (sscanf(l,"%*[ \t]%[^ \t]%*[ \t]%[^ \t]",
    		       string ext,string type)==4 &&
    		ext!="" && ext[0]!='#')
    	       res[ext]=type;
    
          extensions=res;
       }
    
       return extensions[extension] || "application/octet-stream";
    }
    
    string filename_to_type(string filename)