Mercurial > hg > nginx
comparison src/core/ngx_hunk.c @ 8:708f8bb772ec
nginx-0.0.1-2002-09-02-18:48:24 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 02 Sep 2002 14:48:24 +0000 |
parents | 669801705ab1 |
children | 6ce4755737b4 |
comparison
equal
deleted
inserted
replaced
7:b5481d6fbbd4 | 8:708f8bb772ec |
---|---|
1 | 1 |
2 #include <ngx_file.h> | |
3 #include <ngx_hunk.h> | 2 #include <ngx_hunk.h> |
4 | 3 |
5 | 4 |
6 ngx_hunk_t *ngx_get_hunk(ngx_pool_t *pool, int size, int before, int after) | 5 ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, int size, |
6 int before, int after) | |
7 { | 7 { |
8 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | 8 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); |
9 | 9 |
10 #ifndef OFF_EQUAL_PTR | 10 #if !(HAVE_OFFSET_EQUAL_PTR) |
11 h->pos.file = h->last.file = 0; | 11 h->pos.file = h->last.file = 0; |
12 #endif | 12 #endif |
13 | 13 |
14 h->pre_start = ngx_palloc(pool, size + before + after); | 14 h->pre_start = ngx_palloc(pool, size + before + after); |
15 h->start = h->pos.mem = h->last.mem = h->pre_start + before; | 15 h->start = h->pos.mem = h->last.mem = h->pre_start + before; |
16 h->end = h->last.mem + size; | 16 h->end = h->last.mem + size; |
17 h->post_end = h->end + after; | 17 h->post_end = h->end + after; |
18 | 18 |
19 h->type = NGX_HUNK_TEMP; | 19 h->type = NGX_HUNK_TEMP; |
20 h->tag = 0; | 20 h->tag = 0; |
21 h->fd = (ngx_fd_t) -1; | 21 h->file = NULL; |
22 | 22 |
23 return h; | 23 return h; |
24 } | 24 } |
25 | 25 |
26 ngx_hunk_t *ngx_get_hunk_before(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) | 26 ngx_hunk_t *ngx_create_hunk_before(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) |
27 { | 27 { |
28 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | 28 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); |
29 | 29 |
30 #ifndef OFF_EQUAL_PTR | 30 #if !(HAVE_OFFSET_EQUAL_PTR) |
31 h->pos.file = h->last.file = 0; | 31 h->pos.file = h->last.file = 0; |
32 #endif | 32 #endif |
33 | 33 |
34 if (hunk->type & NGX_HUNK_TEMP && hunk->pos.mem - hunk->pre_start >= size) { | 34 if (hunk->type & NGX_HUNK_TEMP && hunk->pos.mem - hunk->pre_start >= size) { |
35 /* keep hunk->start unchanged - used in restore */ | 35 /* keep hunk->start unchanged - used in restore */ |
37 h->end = h->post_end = hunk->pre_start = hunk->pos.mem; | 37 h->end = h->post_end = hunk->pre_start = hunk->pos.mem; |
38 h->start = h->pos.mem = h->last.mem = h->end - size; | 38 h->start = h->pos.mem = h->last.mem = h->end - size; |
39 | 39 |
40 h->type = NGX_HUNK_TEMP; | 40 h->type = NGX_HUNK_TEMP; |
41 h->tag = 0; | 41 h->tag = 0; |
42 h->fd = (ngx_fd_t) -1; | 42 h->file = NULL; |
43 | 43 |
44 } else { | 44 } else { |
45 h->pre_start = h->start = h->pos.mem = h->last.mem | 45 h->pre_start = h->start = h->pos.mem = h->last.mem |
46 = ngx_palloc(pool, size); | 46 = ngx_palloc(pool, size); |
47 h->end = h->post_end = h->start + size; | 47 h->end = h->post_end = h->start + size; |
48 | 48 |
49 h->type = NGX_HUNK_TEMP; | 49 h->type = NGX_HUNK_TEMP; |
50 h->tag = 0; | 50 h->tag = 0; |
51 h->fd = (ngx_fd_t) -1; | 51 h->file = NULL; |
52 } | 52 } |
53 | 53 |
54 return h; | 54 return h; |
55 } | 55 } |
56 | 56 |
57 ngx_hunk_t *ngx_get_hunk_after(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) | 57 ngx_hunk_t *ngx_create_hunk_after(ngx_pool_t *pool, ngx_hunk_t *hunk, int size) |
58 { | 58 { |
59 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); | 59 ngx_hunk_t *h = ngx_palloc(pool, sizeof(ngx_hunk_t)); |
60 | 60 |
61 #ifndef OFF_EQUAL_PTR | 61 #if !(HAVE_OFFSET_EQUAL_PTR) |
62 h->pos.file = h->last.file = 0; | 62 h->pos.file = h->last.file = 0; |
63 #endif | 63 #endif |
64 | 64 |
65 if (hunk->type & NGX_HUNK_TEMP | 65 if (hunk->type & NGX_HUNK_TEMP |
66 && hunk->last.mem == hunk->end | 66 && hunk->last.mem == hunk->end |
69 h->post_end = hunk->post_end; | 69 h->post_end = hunk->post_end; |
70 h->pre_start = h->start = h->pos.mem = h->last.mem = hunk->post_end = | 70 h->pre_start = h->start = h->pos.mem = h->last.mem = hunk->post_end = |
71 hunk->last.mem; | 71 hunk->last.mem; |
72 h->type = NGX_HUNK_TEMP; | 72 h->type = NGX_HUNK_TEMP; |
73 h->tag = 0; | 73 h->tag = 0; |
74 h->fd = (ngx_fd_t) -1; | 74 h->file = NULL; |
75 | 75 |
76 } else { | 76 } else { |
77 h->pre_start = h->start = h->pos.mem = h->last.mem = | 77 h->pre_start = h->start = h->pos.mem = h->last.mem = |
78 ngx_palloc(pool, size); | 78 ngx_palloc(pool, size); |
79 h->end = h->post_end = h->start + size; | 79 h->end = h->post_end = h->start + size; |
80 | 80 |
81 h->type = NGX_HUNK_TEMP; | 81 h->type = NGX_HUNK_TEMP; |
82 h->tag = 0; | 82 h->tag = 0; |
83 h->fd = (ngx_fd_t) -1; | 83 h->file = NULL; |
84 } | 84 } |
85 | 85 |
86 return h; | 86 return h; |
87 } | 87 } |