/src/imagemagick/coders/bytebuffer-private.h
Line | Count | Source |
1 | | /* |
2 | | Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization |
3 | | dedicated to making software imaging solutions freely available. |
4 | | |
5 | | You may not use this file except in compliance with the License. You may |
6 | | obtain a copy of the License at |
7 | | |
8 | | https://imagemagick.org/license/ |
9 | | |
10 | | Unless required by applicable law or agreed to in writing, software |
11 | | distributed under the License is distributed on an "AS IS" BASIS, |
12 | | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | | See the License for the specific language governing permissions and |
14 | | limitations under the License. |
15 | | */ |
16 | | #ifndef MAGICK_BYTE_BUFFER_PRIVATE_H |
17 | | #define MAGICK_BYTE_BUFFER_PRIVATE_H |
18 | | |
19 | | #include "MagickCore/blob.h" |
20 | | #include "MagickCore/blob-private.h" |
21 | | |
22 | | typedef struct _MagickByteBuffer |
23 | | { |
24 | | Image |
25 | | *image; |
26 | | |
27 | | ssize_t |
28 | | offset, |
29 | | count; |
30 | | |
31 | | unsigned char |
32 | | data[MagickMinBufferExtent]; |
33 | | } MagickByteBuffer; |
34 | | |
35 | | static inline int PeekMagickByteBuffer(MagickByteBuffer *buffer) |
36 | 80.4M | { |
37 | 80.4M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) |
38 | 39.3k | { |
39 | 39.3k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) |
40 | 37.3k | return(EOF); |
41 | 1.98k | buffer->offset=0; |
42 | 1.98k | buffer->count=0; |
43 | 1.98k | } |
44 | 80.4M | if ((buffer->offset == 0) && (buffer->count == 0)) |
45 | 32.7k | { |
46 | 32.7k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, |
47 | 32.7k | buffer->data); |
48 | 32.7k | if (buffer->count < 1) |
49 | 514 | return(EOF); |
50 | 32.7k | } |
51 | 80.4M | return((int) buffer->data[buffer->offset]); |
52 | 80.4M | } Unexecuted instantiation: annotate.c:PeekMagickByteBuffer pdf.c:PeekMagickByteBuffer Line | Count | Source | 36 | 9.96M | { | 37 | 9.96M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) | 38 | 5.69k | { | 39 | 5.69k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) | 40 | 5.42k | return(EOF); | 41 | 266 | buffer->offset=0; | 42 | 266 | buffer->count=0; | 43 | 266 | } | 44 | 9.96M | if ((buffer->offset == 0) && (buffer->count == 0)) | 45 | 5.37k | { | 46 | 5.37k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, | 47 | 5.37k | buffer->data); | 48 | 5.37k | if (buffer->count < 1) | 49 | 170 | return(EOF); | 50 | 5.37k | } | 51 | 9.96M | return((int) buffer->data[buffer->offset]); | 52 | 9.96M | } |
Unexecuted instantiation: ps2.c:PeekMagickByteBuffer Unexecuted instantiation: ps3.c:PeekMagickByteBuffer ps.c:PeekMagickByteBuffer Line | Count | Source | 36 | 70.4M | { | 37 | 70.4M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) | 38 | 33.6k | { | 39 | 33.6k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) | 40 | 31.9k | return(EOF); | 41 | 1.72k | buffer->offset=0; | 42 | 1.72k | buffer->count=0; | 43 | 1.72k | } | 44 | 70.4M | if ((buffer->offset == 0) && (buffer->count == 0)) | 45 | 27.4k | { | 46 | 27.4k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, | 47 | 27.4k | buffer->data); | 48 | 27.4k | if (buffer->count < 1) | 49 | 344 | return(EOF); | 50 | 27.4k | } | 51 | 70.4M | return((int) buffer->data[buffer->offset]); | 52 | 70.4M | } |
Unexecuted instantiation: xps.c:PeekMagickByteBuffer |
53 | | |
54 | | static inline int ReadMagickByteBuffer(MagickByteBuffer *buffer) |
55 | 74.9M | { |
56 | 74.9M | int |
57 | 74.9M | result; |
58 | | |
59 | 74.9M | result=PeekMagickByteBuffer(buffer); |
60 | 74.9M | if (result != EOF) |
61 | 74.9M | buffer->offset++; |
62 | 74.9M | return(result); |
63 | 74.9M | } Unexecuted instantiation: annotate.c:ReadMagickByteBuffer pdf.c:ReadMagickByteBuffer Line | Count | Source | 55 | 9.96M | { | 56 | 9.96M | int | 57 | 9.96M | result; | 58 | | | 59 | 9.96M | result=PeekMagickByteBuffer(buffer); | 60 | 9.96M | if (result != EOF) | 61 | 9.96M | buffer->offset++; | 62 | 9.96M | return(result); | 63 | 9.96M | } |
Unexecuted instantiation: ps2.c:ReadMagickByteBuffer Unexecuted instantiation: ps3.c:ReadMagickByteBuffer ps.c:ReadMagickByteBuffer Line | Count | Source | 55 | 65.0M | { | 56 | 65.0M | int | 57 | 65.0M | result; | 58 | | | 59 | 65.0M | result=PeekMagickByteBuffer(buffer); | 60 | 65.0M | if (result != EOF) | 61 | 64.9M | buffer->offset++; | 62 | 65.0M | return(result); | 63 | 65.0M | } |
Unexecuted instantiation: xps.c:ReadMagickByteBuffer |
64 | | |
65 | | static inline char *GetMagickByteBufferDatum(MagickByteBuffer *buffer) |
66 | 50.3k | { |
67 | 50.3k | ssize_t |
68 | 50.3k | count, |
69 | 50.3k | i; |
70 | | |
71 | 50.3k | if (buffer->offset != 0) |
72 | 50.3k | { |
73 | 50.3k | i=0; |
74 | 63.6M | while (buffer->offset < buffer->count) |
75 | 63.5M | buffer->data[i++]=buffer->data[buffer->offset++]; |
76 | 50.3k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- |
77 | 50.3k | i),buffer->data+i); |
78 | 50.3k | buffer->count=i; |
79 | 50.3k | if (count > 0) |
80 | 1.03k | buffer->count+=count; |
81 | 50.3k | buffer->offset=0; |
82 | 50.3k | } |
83 | 50.3k | return((char *) buffer->data); |
84 | 50.3k | } Unexecuted instantiation: annotate.c:GetMagickByteBufferDatum pdf.c:GetMagickByteBufferDatum Line | Count | Source | 66 | 12.6k | { | 67 | 12.6k | ssize_t | 68 | 12.6k | count, | 69 | 12.6k | i; | 70 | | | 71 | 12.6k | if (buffer->offset != 0) | 72 | 12.6k | { | 73 | 12.6k | i=0; | 74 | 13.8M | while (buffer->offset < buffer->count) | 75 | 13.8M | buffer->data[i++]=buffer->data[buffer->offset++]; | 76 | 12.6k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- | 77 | 12.6k | i),buffer->data+i); | 78 | 12.6k | buffer->count=i; | 79 | 12.6k | if (count > 0) | 80 | 154 | buffer->count+=count; | 81 | 12.6k | buffer->offset=0; | 82 | 12.6k | } | 83 | 12.6k | return((char *) buffer->data); | 84 | 12.6k | } |
Unexecuted instantiation: ps2.c:GetMagickByteBufferDatum Unexecuted instantiation: ps3.c:GetMagickByteBufferDatum ps.c:GetMagickByteBufferDatum Line | Count | Source | 66 | 37.7k | { | 67 | 37.7k | ssize_t | 68 | 37.7k | count, | 69 | 37.7k | i; | 70 | | | 71 | 37.7k | if (buffer->offset != 0) | 72 | 37.6k | { | 73 | 37.6k | i=0; | 74 | 49.8M | while (buffer->offset < buffer->count) | 75 | 49.7M | buffer->data[i++]=buffer->data[buffer->offset++]; | 76 | 37.6k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- | 77 | 37.6k | i),buffer->data+i); | 78 | 37.6k | buffer->count=i; | 79 | 37.6k | if (count > 0) | 80 | 876 | buffer->count+=count; | 81 | 37.6k | buffer->offset=0; | 82 | 37.6k | } | 83 | 37.7k | return((char *) buffer->data); | 84 | 37.7k | } |
Unexecuted instantiation: xps.c:GetMagickByteBufferDatum |
85 | | |
86 | | static inline void CheckMagickByteBuffer(MagickByteBuffer *buffer, |
87 | | const size_t length) |
88 | 15.3M | { |
89 | 15.3M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) |
90 | 398 | (void) GetMagickByteBufferDatum(buffer); |
91 | 15.3M | } Unexecuted instantiation: annotate.c:CheckMagickByteBuffer pdf.c:CheckMagickByteBuffer Line | Count | Source | 88 | 4.87M | { | 89 | 4.87M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) | 90 | 134 | (void) GetMagickByteBufferDatum(buffer); | 91 | 4.87M | } |
Unexecuted instantiation: ps2.c:CheckMagickByteBuffer Unexecuted instantiation: ps3.c:CheckMagickByteBuffer ps.c:CheckMagickByteBuffer Line | Count | Source | 88 | 10.5M | { | 89 | 10.5M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) | 90 | 264 | (void) GetMagickByteBufferDatum(buffer); | 91 | 10.5M | } |
Unexecuted instantiation: xps.c:CheckMagickByteBuffer |
92 | | |
93 | | static inline MagickBooleanType CompareMagickByteBuffer(MagickByteBuffer *buffer, |
94 | | const char *p,const size_t length) |
95 | 14.7M | { |
96 | 14.7M | const char |
97 | 14.7M | *q; |
98 | | |
99 | 14.7M | CheckMagickByteBuffer(buffer,length); |
100 | 14.7M | q=(const char *) buffer->data+buffer->offset; |
101 | 14.7M | if (LocaleNCompare(p,q,length) != 0) |
102 | 14.0M | return(MagickFalse); |
103 | 752k | return(MagickTrue); |
104 | 14.7M | } Unexecuted instantiation: annotate.c:CompareMagickByteBuffer pdf.c:CompareMagickByteBuffer Line | Count | Source | 95 | 4.71M | { | 96 | 4.71M | const char | 97 | 4.71M | *q; | 98 | | | 99 | 4.71M | CheckMagickByteBuffer(buffer,length); | 100 | 4.71M | q=(const char *) buffer->data+buffer->offset; | 101 | 4.71M | if (LocaleNCompare(p,q,length) != 0) | 102 | 4.50M | return(MagickFalse); | 103 | 214k | return(MagickTrue); | 104 | 4.71M | } |
Unexecuted instantiation: ps2.c:CompareMagickByteBuffer Unexecuted instantiation: ps3.c:CompareMagickByteBuffer ps.c:CompareMagickByteBuffer Line | Count | Source | 95 | 10.0M | { | 96 | 10.0M | const char | 97 | 10.0M | *q; | 98 | | | 99 | 10.0M | CheckMagickByteBuffer(buffer,length); | 100 | 10.0M | q=(const char *) buffer->data+buffer->offset; | 101 | 10.0M | if (LocaleNCompare(p,q,length) != 0) | 102 | 9.54M | return(MagickFalse); | 103 | 538k | return(MagickTrue); | 104 | 10.0M | } |
Unexecuted instantiation: xps.c:CompareMagickByteBuffer |
105 | | |
106 | | static inline void SkipMagickByteBuffer(MagickByteBuffer *buffer, |
107 | | const size_t length) |
108 | 586k | { |
109 | 586k | CheckMagickByteBuffer(buffer,length); |
110 | 586k | if ((buffer->offset+(ssize_t) length) < buffer->count) |
111 | 584k | buffer->offset+=(ssize_t) length; |
112 | 586k | } Unexecuted instantiation: annotate.c:SkipMagickByteBuffer pdf.c:SkipMagickByteBuffer Line | Count | Source | 108 | 162k | { | 109 | 162k | CheckMagickByteBuffer(buffer,length); | 110 | 162k | if ((buffer->offset+(ssize_t) length) < buffer->count) | 111 | 162k | buffer->offset+=(ssize_t) length; | 112 | 162k | } |
Unexecuted instantiation: ps2.c:SkipMagickByteBuffer Unexecuted instantiation: ps3.c:SkipMagickByteBuffer ps.c:SkipMagickByteBuffer Line | Count | Source | 108 | 423k | { | 109 | 423k | CheckMagickByteBuffer(buffer,length); | 110 | 423k | if ((buffer->offset+(ssize_t) length) < buffer->count) | 111 | 422k | buffer->offset+=(ssize_t) length; | 112 | 423k | } |
Unexecuted instantiation: xps.c:SkipMagickByteBuffer |
113 | | |
114 | | static inline MagickBooleanType SkipMagickByteBufferUntilNewline( |
115 | | MagickByteBuffer *buffer) |
116 | 7.95k | { |
117 | 7.95k | int |
118 | 7.95k | c; |
119 | | |
120 | 7.95k | c=ReadMagickByteBuffer(buffer); |
121 | 2.98M | while ((c != '\n') && (c != '\r')) |
122 | 2.97M | { |
123 | 2.97M | c=ReadMagickByteBuffer(buffer); |
124 | 2.97M | if (c == EOF) |
125 | 286 | return(MagickFalse); |
126 | 2.97M | } |
127 | 7.66k | return(MagickTrue); |
128 | 7.95k | } Unexecuted instantiation: annotate.c:SkipMagickByteBufferUntilNewline Unexecuted instantiation: pdf.c:SkipMagickByteBufferUntilNewline Unexecuted instantiation: ps2.c:SkipMagickByteBufferUntilNewline Unexecuted instantiation: ps3.c:SkipMagickByteBufferUntilNewline ps.c:SkipMagickByteBufferUntilNewline Line | Count | Source | 116 | 7.95k | { | 117 | 7.95k | int | 118 | 7.95k | c; | 119 | | | 120 | 7.95k | c=ReadMagickByteBuffer(buffer); | 121 | 2.98M | while ((c != '\n') && (c != '\r')) | 122 | 2.97M | { | 123 | 2.97M | c=ReadMagickByteBuffer(buffer); | 124 | 2.97M | if (c == EOF) | 125 | 286 | return(MagickFalse); | 126 | 2.97M | } | 127 | 7.66k | return(MagickTrue); | 128 | 7.95k | } |
Unexecuted instantiation: xps.c:SkipMagickByteBufferUntilNewline |
129 | | |
130 | | #endif |