cvsuser     05/03/01 05:01:07

  Modified:    runtime/parrot/library/Data Escape.imc
  Log:
  fixed escaping of binary data
  
  Revision  Changes    Path
  1.5       +13 -7     parrot/runtime/parrot/library/Data/Escape.imc
  
  Index: Escape.imc
  ===================================================================
  RCS file: /cvs/public/parrot/runtime/parrot/library/Data/Escape.imc,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Escape.imc        21 Nov 2004 20:38:39 -0000      1.4
  +++ Escape.imc        1 Mar 2005 13:01:07 -0000       1.5
  @@ -35,7 +35,7 @@
   
   =over 4
   
  -=item C<string>
  +=item C<str>
   
   The string to escape.
   
  @@ -54,7 +54,7 @@
   .sub String
       .param string str
       .param string char
  -    .param string ret
  +    .local string ret
       .local int i
       .local int j
       .local int c
  @@ -69,7 +69,7 @@
       ord c, tmp
   
       if c > 40 goto gt40
  -    if c > 30 goto gt30
  +    if c > 31 goto gt31
   
       if c > 0 goto n00
       set tmp, "\\0"
  @@ -94,7 +94,15 @@
       branch DONE
   n13:
   
  -gt30: # ascii codes greater than 30 below
  +    # encode the value as an octal number
  +    tmp = "\\"
  +    $P0 = new .PerlArray
  +    push $P0, c
  +    $S0 = sprintf "%o", $P0
  +    concat tmp, $S0
  +    branch DONE
  +    
  +gt31: # ascii codes greater than 31 below
   
       # "
       ne char, '"', n34
  @@ -121,9 +129,7 @@
       inc i
       branch LOOP
   END:
  -    .pcc_begin_return
  -    .return ret
  -    .pcc_end_return
  +    .return(ret)
   .end
   
   =back
  
  
  

Reply via email to