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 }