/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 | 48.4M | { |
37 | 48.4M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) |
38 | 29.7k | { |
39 | 29.7k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) |
40 | 28.8k | return(EOF); |
41 | 881 | buffer->offset=0; |
42 | 881 | buffer->count=0; |
43 | 881 | } |
44 | 48.4M | if ((buffer->offset == 0) && (buffer->count == 0)) |
45 | 28.0k | { |
46 | 28.0k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, |
47 | 28.0k | buffer->data); |
48 | 28.0k | if (buffer->count < 1) |
49 | 3.54k | return(EOF); |
50 | 28.0k | } |
51 | 48.4M | return((int) buffer->data[buffer->offset]); |
52 | 48.4M | } pdf.c:PeekMagickByteBuffer Line | Count | Source | 36 | 3.26M | { | 37 | 3.26M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) | 38 | 4.44k | { | 39 | 4.44k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) | 40 | 4.44k | return(EOF); | 41 | 0 | buffer->offset=0; | 42 | 0 | buffer->count=0; | 43 | 0 | } | 44 | 3.26M | if ((buffer->offset == 0) && (buffer->count == 0)) | 45 | 7.05k | { | 46 | 7.05k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, | 47 | 7.05k | buffer->data); | 48 | 7.05k | if (buffer->count < 1) | 49 | 2.97k | return(EOF); | 50 | 7.05k | } | 51 | 3.26M | return((int) buffer->data[buffer->offset]); | 52 | 3.26M | } |
ps.c:PeekMagickByteBuffer Line | Count | Source | 36 | 45.1M | { | 37 | 45.1M | if ((buffer->offset == buffer->count) && (buffer->offset > 0)) | 38 | 25.2k | { | 39 | 25.2k | if (buffer->count != (ssize_t) sizeof(buffer->data)-1) | 40 | 24.4k | return(EOF); | 41 | 881 | buffer->offset=0; | 42 | 881 | buffer->count=0; | 43 | 881 | } | 44 | 45.1M | if ((buffer->offset == 0) && (buffer->count == 0)) | 45 | 21.0k | { | 46 | 21.0k | buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1, | 47 | 21.0k | buffer->data); | 48 | 21.0k | if (buffer->count < 1) | 49 | 562 | return(EOF); | 50 | 21.0k | } | 51 | 45.1M | return((int) buffer->data[buffer->offset]); | 52 | 45.1M | } |
Unexecuted instantiation: xps.c:PeekMagickByteBuffer |
53 | | |
54 | | static inline int ReadMagickByteBuffer(MagickByteBuffer *buffer) |
55 | 44.1M | { |
56 | 44.1M | int |
57 | 44.1M | result; |
58 | | |
59 | 44.1M | result=PeekMagickByteBuffer(buffer); |
60 | 44.1M | if (result != EOF) |
61 | 44.1M | buffer->offset++; |
62 | 44.1M | return(result); |
63 | 44.1M | } pdf.c:ReadMagickByteBuffer Line | Count | Source | 55 | 3.26M | { | 56 | 3.26M | int | 57 | 3.26M | result; | 58 | | | 59 | 3.26M | result=PeekMagickByteBuffer(buffer); | 60 | 3.26M | if (result != EOF) | 61 | 3.26M | buffer->offset++; | 62 | 3.26M | return(result); | 63 | 3.26M | } |
ps.c:ReadMagickByteBuffer Line | Count | Source | 55 | 40.9M | { | 56 | 40.9M | int | 57 | 40.9M | result; | 58 | | | 59 | 40.9M | result=PeekMagickByteBuffer(buffer); | 60 | 40.9M | if (result != EOF) | 61 | 40.8M | buffer->offset++; | 62 | 40.9M | return(result); | 63 | 40.9M | } |
Unexecuted instantiation: xps.c:ReadMagickByteBuffer |
64 | | |
65 | | static inline char *GetMagickByteBufferDatum(MagickByteBuffer *buffer) |
66 | 51.3k | { |
67 | 51.3k | ssize_t |
68 | 51.3k | count, |
69 | 51.3k | i; |
70 | | |
71 | 51.3k | if (buffer->offset != 0) |
72 | 51.2k | { |
73 | 51.2k | i=0; |
74 | 77.1M | while (buffer->offset < buffer->count) |
75 | 77.1M | buffer->data[i++]=buffer->data[buffer->offset++]; |
76 | 51.2k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- |
77 | 51.2k | i),buffer->data+i); |
78 | 51.2k | buffer->count=i; |
79 | 51.2k | if (count > 0) |
80 | 544 | buffer->count+=count; |
81 | 51.2k | buffer->offset=0; |
82 | 51.2k | } |
83 | 51.3k | return((char *) buffer->data); |
84 | 51.3k | } pdf.c:GetMagickByteBufferDatum Line | Count | Source | 66 | 11.5k | { | 67 | 11.5k | ssize_t | 68 | 11.5k | count, | 69 | 11.5k | i; | 70 | | | 71 | 11.5k | if (buffer->offset != 0) | 72 | 11.5k | { | 73 | 11.5k | i=0; | 74 | 17.5M | while (buffer->offset < buffer->count) | 75 | 17.5M | buffer->data[i++]=buffer->data[buffer->offset++]; | 76 | 11.5k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- | 77 | 11.5k | i),buffer->data+i); | 78 | 11.5k | buffer->count=i; | 79 | 11.5k | if (count > 0) | 80 | 0 | buffer->count+=count; | 81 | 11.5k | buffer->offset=0; | 82 | 11.5k | } | 83 | 11.5k | return((char *) buffer->data); | 84 | 11.5k | } |
ps.c:GetMagickByteBufferDatum Line | Count | Source | 66 | 39.8k | { | 67 | 39.8k | ssize_t | 68 | 39.8k | count, | 69 | 39.8k | i; | 70 | | | 71 | 39.8k | if (buffer->offset != 0) | 72 | 39.7k | { | 73 | 39.7k | i=0; | 74 | 59.5M | while (buffer->offset < buffer->count) | 75 | 59.5M | buffer->data[i++]=buffer->data[buffer->offset++]; | 76 | 39.7k | count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1- | 77 | 39.7k | i),buffer->data+i); | 78 | 39.7k | buffer->count=i; | 79 | 39.7k | if (count > 0) | 80 | 544 | buffer->count+=count; | 81 | 39.7k | buffer->offset=0; | 82 | 39.7k | } | 83 | 39.8k | return((char *) buffer->data); | 84 | 39.8k | } |
Unexecuted instantiation: xps.c:GetMagickByteBufferDatum |
85 | | |
86 | | static inline void CheckMagickByteBuffer(MagickByteBuffer *buffer, |
87 | | const size_t length) |
88 | 7.60M | { |
89 | 7.60M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) |
90 | 292 | (void) GetMagickByteBufferDatum(buffer); |
91 | 7.60M | } pdf.c:CheckMagickByteBuffer Line | Count | Source | 88 | 1.80M | { | 89 | 1.80M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) | 90 | 0 | (void) GetMagickByteBufferDatum(buffer); | 91 | 1.80M | } |
ps.c:CheckMagickByteBuffer Line | Count | Source | 88 | 5.80M | { | 89 | 5.80M | if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data)) | 90 | 292 | (void) GetMagickByteBufferDatum(buffer); | 91 | 5.80M | } |
Unexecuted instantiation: xps.c:CheckMagickByteBuffer |
92 | | |
93 | | static inline MagickBooleanType CompareMagickByteBuffer(MagickByteBuffer *buffer, |
94 | | const char *p,const size_t length) |
95 | 7.34M | { |
96 | 7.34M | const char |
97 | 7.34M | *q; |
98 | | |
99 | 7.34M | CheckMagickByteBuffer(buffer,length); |
100 | 7.34M | q=(const char *) buffer->data+buffer->offset; |
101 | 7.34M | if (LocaleNCompare(p,q,length) != 0) |
102 | 6.97M | return(MagickFalse); |
103 | 371k | return(MagickTrue); |
104 | 7.34M | } pdf.c:CompareMagickByteBuffer Line | Count | Source | 95 | 1.71M | { | 96 | 1.71M | const char | 97 | 1.71M | *q; | 98 | | | 99 | 1.71M | CheckMagickByteBuffer(buffer,length); | 100 | 1.71M | q=(const char *) buffer->data+buffer->offset; | 101 | 1.71M | if (LocaleNCompare(p,q,length) != 0) | 102 | 1.59M | return(MagickFalse); | 103 | 120k | return(MagickTrue); | 104 | 1.71M | } |
ps.c:CompareMagickByteBuffer Line | Count | Source | 95 | 5.63M | { | 96 | 5.63M | const char | 97 | 5.63M | *q; | 98 | | | 99 | 5.63M | CheckMagickByteBuffer(buffer,length); | 100 | 5.63M | q=(const char *) buffer->data+buffer->offset; | 101 | 5.63M | if (LocaleNCompare(p,q,length) != 0) | 102 | 5.37M | return(MagickFalse); | 103 | 251k | return(MagickTrue); | 104 | 5.63M | } |
Unexecuted instantiation: xps.c:CompareMagickByteBuffer |
105 | | |
106 | | static inline void SkipMagickByteBuffer(MagickByteBuffer *buffer, |
107 | | const size_t length) |
108 | 262k | { |
109 | 262k | CheckMagickByteBuffer(buffer,length); |
110 | 262k | if ((buffer->offset+(ssize_t) length) < buffer->count) |
111 | 261k | buffer->offset+=(ssize_t) length; |
112 | 262k | } pdf.c:SkipMagickByteBuffer Line | Count | Source | 108 | 92.2k | { | 109 | 92.2k | CheckMagickByteBuffer(buffer,length); | 110 | 92.2k | if ((buffer->offset+(ssize_t) length) < buffer->count) | 111 | 91.8k | buffer->offset+=(ssize_t) length; | 112 | 92.2k | } |
ps.c:SkipMagickByteBuffer Line | Count | Source | 108 | 169k | { | 109 | 169k | CheckMagickByteBuffer(buffer,length); | 110 | 169k | if ((buffer->offset+(ssize_t) length) < buffer->count) | 111 | 169k | buffer->offset+=(ssize_t) length; | 112 | 169k | } |
Unexecuted instantiation: xps.c:SkipMagickByteBuffer |
113 | | |
114 | | static inline MagickBooleanType SkipMagickByteBufferUntilNewline( |
115 | | MagickByteBuffer *buffer) |
116 | 5.04k | { |
117 | 5.04k | int |
118 | 5.04k | c; |
119 | | |
120 | 5.04k | c=ReadMagickByteBuffer(buffer); |
121 | 1.57M | while ((c != '\n') && (c != '\r')) |
122 | 1.56M | { |
123 | 1.56M | c=ReadMagickByteBuffer(buffer); |
124 | 1.56M | if (c == EOF) |
125 | 215 | return(MagickFalse); |
126 | 1.56M | } |
127 | 4.82k | return(MagickTrue); |
128 | 5.04k | } Unexecuted instantiation: pdf.c:SkipMagickByteBufferUntilNewline ps.c:SkipMagickByteBufferUntilNewline Line | Count | Source | 116 | 5.04k | { | 117 | 5.04k | int | 118 | 5.04k | c; | 119 | | | 120 | 5.04k | c=ReadMagickByteBuffer(buffer); | 121 | 1.57M | while ((c != '\n') && (c != '\r')) | 122 | 1.56M | { | 123 | 1.56M | c=ReadMagickByteBuffer(buffer); | 124 | 1.56M | if (c == EOF) | 125 | 215 | return(MagickFalse); | 126 | 1.56M | } | 127 | 4.82k | return(MagickTrue); | 128 | 5.04k | } |
Unexecuted instantiation: xps.c:SkipMagickByteBufferUntilNewline |
129 | | |
130 | | #endif |