Patch title: Release 95 bulk changes
Abstract:
File: /pliant/protocol/http/cookie.pli
Key:
    Removed line
    Added line
   
# Code written by Boris Reitman in 2005
# Copyright  Elbokar Consulting Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/default.style"
module "/pliant/language/stream.pli"
module "/pliant/language/unsafe.pli"

method p replace_http_header replace with -> status
  arg_rw HtmlPage p ; arg Str replace with ; arg Status status
  var Pointer:Stream stream :> p:http_request stream
  var Address start := stream stream_write_buf
  var Address cur := stream stream_write_cur
  var Address stop := stream stream_write_stop
  if (cast stop Int).-.(cast cur Int) >= with:len-replace:len
    var Address a := memory_search start (cast cur Int).-.(cast start Int) replace:characters replace:len
    if a<>null
      memory_move (a translate Byte replace:len) (a translate Byte with:len) (cast cur Int).-.(cast a Int)-replace:len
      memory_copy with:characters a with:len
      stream stream_write_cur := cur translate Byte with:len-replace:len
      return success
  status := failure

method page set_cookie cookie_name cookie_value path expires_date
  arg_rw HtmlPage page ; arg Str cookie_name cookie_value path expires_date
  implicit page 
    replace_http_header "[lf]Server: Pliant" "[lf]Set-Cookie: " + cookie_name + "=" + cookie_value + "; expires=" + expires_date + "; path=" + path + "[lf]Server: Pliant"

export '. set_cookie'