Mercurial > hg > nginx
comparison src/core/ngx_hunk.c @ 0:4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
The first code that uses "ngx_" prefix, the previous one used "gx_" prefix.
At that point the code is not yet usable. The first draft ideas are dated
back to 23.10.2001.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 Aug 2002 16:39:45 +0000 |
parents | |
children | d220029ac7f3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4eff17414a43 |
---|---|
1 | |
2 #include <ngx_types.h> | |
3 #include <ngx_hunk.h> | |
4 | |
5 | |
6 ngx_hunk_t *ngx_get_hunk(ngx_pool_t *pool, int size, int before, int after) | |
7 { | |
8 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | |
9 | |
10 #ifndef OFF_EQUAL_PTR | |
11 h->pos.f = h->last.f = 0; | |
12 #endif | |
13 | |
14 h->pre_start = ngx_palloc(pool, size + before + after); | |
15 h->start = h->pos.p = h->last.p = h->pre_start + before; | |
16 h->end = h->last.p + size; | |
17 h->post_end = h->end + after; | |
18 | |
19 h->type = NGX_HUNK_TEMP; | |
20 h->tag = 0; | |
21 h->fd = (ngx_file_t) -1; | |
22 | |
23 return h; | |
24 } | |
25 | |
26 ngx_hunk_t *ngx_get_hunk_before(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) | |
27 { | |
28 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | |
29 | |
30 #ifndef OFF_EQUAL_PTR | |
31 h->pos.f = h->last.f = 0; | |
32 #endif | |
33 | |
34 if (hunk->type & NGX_HUNK_TEMP && hunk->pos.p - hunk->pre_start >= size) { | |
35 /* keep hunk->start unchanged - used in restore */ | |
36 h->pre_start = hunk->pre_start; | |
37 h->end = h->post_end = hunk->pre_start = hunk->pos.p; | |
38 h->start = h->pos.p = h->last.p = h->end - size; | |
39 | |
40 h->type = NGX_HUNK_TEMP; | |
41 h->tag = 0; | |
42 h->fd = (ngx_file_t) -1; | |
43 | |
44 } else { | |
45 h->pre_start = h->start = h->pos.p = h->last.p = ngx_palloc(pool, size); | |
46 h->end = h->post_end = h->start + size; | |
47 | |
48 h->type = NGX_HUNK_TEMP; | |
49 h->tag = 0; | |
50 h->fd = (ngx_file_t) -1; | |
51 } | |
52 | |
53 return h; | |
54 } | |
55 | |
56 ngx_hunk_t *ngx_get_hunk_after(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) | |
57 { | |
58 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | |
59 | |
60 #ifndef OFF_EQUAL_PTR | |
61 h->pos.f = h->last.f = 0; | |
62 #endif | |
63 | |
64 if (hunk->type & NGX_HUNK_TEMP | |
65 && hunk->last.p == hunk->end | |
66 && hunk->post_end - hunk->end >= size) | |
67 { | |
68 h->post_end = hunk->post_end; | |
69 h->pre_start = h->start = h->pos.p = h->last.p = hunk->post_end = | |
70 hunk->last.p; | |
71 h->type = NGX_HUNK_TEMP; | |
72 h->tag = 0; | |
73 h->fd = (ngx_file_t) -1; | |
74 | |
75 } else { | |
76 h->pre_start = h->start = h->pos.p = h->last.p = ngx_palloc(pool, size); | |
77 h->end = h->post_end = h->start + size; | |
78 | |
79 h->type = NGX_HUNK_TEMP; | |
80 h->tag = 0; | |
81 h->fd = (ngx_file_t) -1; | |
82 } | |
83 | |
84 return h; | |
85 } |