On Tue, Sep 09, 2008 at 10:10:42PM +0200, Ruediger Pluem wrote:
>
>
> On 09/03/2008 01:01 AM, [EMAIL PROTECTED] wrote:
>> Added: httpd/httpd/trunk/modules/filters/sed1.c
>> URL: 
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/sed1.c?rev=691418&view=auto
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/filters/sed1.c (added)
>> +++ httpd/httpd/trunk/modules/filters/sed1.c Tue Sep  2 16:01:47 2008
>> @@ -0,0 +1,957 @@
>> +/*
>> + * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
>> + * Use is subject to license terms.
>> + *
>> + *  Copyright (c) 1984 AT&T
>> + *    All Rights Reserved   
>> + *
>> + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + *  http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless 
>> required by applicable law or agreed to in writing, software + * 
>> distributed under the License is distributed on an "AS IS" BASIS, + * 
>> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or 
>> implied. + * See the License for the specific language governing 
>> permissions and
>> + * limitations under the License. + */
>> +
>> +#include "apr.h"
>> +#include "apr_lib.h"
>> +#include "libsed.h"
>> +#include "sed.h"
>> +#include "apr_strings.h"
>> +#include "regexp.h"
>> +
>> +char    *trans[040]  = {
>> +    "\\01",
>> +    "\\02",
>> +    "\\03",
>> +    "\\04",
>> +    "\\05",
>> +    "\\06",
>> +    "\\07",
>> +    "-<",
>> +    "->",
>
> What are the above constants supposed to be. Opening the file in vi shows 
> that they are special
> characters or better control characters. Looking with a hex editor these () 
> seem to be \\08.
> Is this correct?

Sed has a "l" command. From the sed man page :
     (2)l            List the pattern space on the standard  out-
                     put  in  an  unambiguous  form. Non-printing
                     characters are spelled in  two  digit  ASCII
                     and long lines are folded.

>From the code :
                   p3 = trans[(unsigned char)*p1-1];
                    while ((*p2++ = *p3++) != 0)
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            wline(eval, eval->genbuf, strlen(eval->genbuf));
                            p2 = eval->genbuf;
                        }


It looks to me that it is trying to print character from value 0 to 31 as
printable characters.

>> +    "-<",
>> +    "->",
It seems to me that it should be \\08 and \\09.

I will dig deeper to see if these can be simplified. It looks little weird that
there are binary characters in source file.

Regards,
Basant.

Reply via email to