~ubuntu-branches/ubuntu/hardy/libapache2-mod-python/hardy

« back to all changes in this revision

Viewing changes to src/filterobject.c

  • Committer: Bazaar Package Importer
  • Author(s): Piotr Ożarowski
  • Date: 2007-04-12 20:52:05 UTC
  • mfrom: (1.2.4 upstream) (1.1.2 etch)
  • Revision ID: james.westby@ubuntu.com-20070412205205-j4qlsw3o4tl615iq
Tags: 3.3.1-1
* New upstream release
* Remove configure and mod_python.h files in clean rule to make the diff.gz
  file smaller
* Current Python version in libapache2-mod-pythonX.Y package name (Provides:
  field) filled in automatically.
* Added XS-Vcs-Browser field

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *
19
19
 * filterobject.c 
20
20
 *
21
 
 * $Id: filterobject.c 383365 2006-03-05 18:40:22Z jgallacher $
 
21
 * $Id: filterobject.c 466105 2006-10-20 13:28:02Z jgallacher $
22
22
 *
23
23
 * See accompanying documentation and source code comments 
24
24
 * for details.
75
75
 
76
76
PyObject *MpFilter_FromFilter(ap_filter_t *f, apr_bucket_brigade *bb, int is_input,
77
77
                              ap_input_mode_t mode, apr_size_t readbytes,
78
 
                              char * handler, char *dir)
 
78
                              char *handler, PyObject *callable, char *dir,
 
79
                              hl_entry *parent)
79
80
{
80
81
    filterobject *result;
81
82
 
105
106
    result->softspace = 0;
106
107
 
107
108
    result->handler = handler;
 
109
    result->callable = callable;
108
110
    result->dir = dir;
 
111
    result->parent = parent;
109
112
 
110
113
    result->request_obj = NULL; 
111
114
 
202
205
    }
203
206
 
204
207
    bufsize = len < 0 ? HUGE_STRING_LEN : len;
 
208
    /* PYTHON 2.5: 'PyString_FromStringAndSize' uses Py_ssize_t for input parameters */ 
205
209
    result = PyString_FromStringAndSize(NULL, bufsize);
206
210
 
207
211
    /* possibly no more memory */
257
261
        /* time to grow destination string? */
258
262
        if (newline == 0 && len < 0 && bytes_read == bufsize) {
259
263
 
 
264
            /* PYTHON 2.5: '_PyString_Resize' uses Py_ssize_t for input parameters */
260
265
            _PyString_Resize(&result, bufsize + HUGE_STRING_LEN);
261
266
            buffer = PyString_AS_STRING((PyStringObject *) result);
262
267
            buffer += bytes_read;
296
301
 
297
302
    /* resize if necessary */
298
303
    if (bytes_read < len || len < 0) 
 
304
        /* PYTHON 2.5: '_PyString_Resize' uses Py_ssize_t for input parameters */
299
305
        if(_PyString_Resize(&result, bytes_read))
300
306
            return NULL;
301
307
 
352
358
        PyErr_SetString(PyExc_ValueError, "I/O operation on closed filter");
353
359
        return NULL;
354
360
    }
355
 
 
 
361
    
 
362
    /* PYTHON 2.5:  'PyString_Size' uses Py_ssize_t for return values (may need overflow check) */
356
363
    len = PyString_Size(s);
357
364
 
358
365
    if (len) {
492
499
    {"name",               T_OBJECT,    0,                       RO},
493
500
    {"req",                T_OBJECT,    OFF(request_obj),          },
494
501
    {"is_input",           T_INT,       OFF(is_input),           RO},
495
 
    {"handler",            T_STRING,    OFF(handler),            RO},
496
502
    {"dir",                T_STRING,    OFF(dir),                RO},
497
503
    {NULL}  /* Sentinel */
498
504
};
548
554
            return (PyObject *)self->request_obj;
549
555
        }
550
556
    }
 
557
    else if (strcmp(name, "handler") == 0) {
 
558
        if (self->callable) {
 
559
            Py_INCREF(self->callable);
 
560
            return self->callable;
 
561
        } else if (self->handler) {
 
562
            return PyString_FromString(self->handler);
 
563
        }
 
564
        else {
 
565
            Py_INCREF(Py_None);
 
566
            return Py_None;
 
567
        }
 
568
    }
 
569
    else if (strcmp(name, "parent") == 0) {
 
570
        if (self->parent) {
 
571
            return MpHList_FromHLEntry(self->parent);
 
572
        }
 
573
        else {
 
574
            Py_INCREF(Py_None);
 
575
            return Py_None;
 
576
        }
 
577
    }
551
578
    else
552
579
        return PyMember_Get((char *)self, filter_memberlist, name);
553
580
}