@@ -51,7 +51,7 @@ int ca_load_fd(int fd, ReallocBuffer *buffer) {
5151}
5252
5353int ca_load_and_decompress_fd (int fd , ReallocBuffer * buffer ) {
54- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
54+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
5555 int compression_type = _CA_COMPRESSION_TYPE_INVALID ;
5656 uint8_t fd_buffer [BUFFER_SIZE ];
5757 bool got_decoder_eof = false;
@@ -91,29 +91,25 @@ int ca_load_and_decompress_fd(int fd, ReallocBuffer *buffer) {
9191 for (;;) {
9292 r = compressor_input (& context , fd_buffer , l );
9393 if (r < 0 )
94- goto finish ;
94+ return 0 ;
9595
9696 for (;;) {
9797 size_t done ;
9898 void * p ;
9999
100100 p = realloc_buffer_extend (buffer , BUFFER_SIZE );
101- if (!p ) {
102- r = - ENOMEM ;
103- goto finish ;
104- }
101+ if (!p )
102+ return - ENOMEM ;
105103
106104 r = compressor_decode (& context , p , BUFFER_SIZE , & done );
107105 if (r < 0 )
108- goto finish ;
106+ return r ;
109107
110108 realloc_buffer_shorten (buffer , BUFFER_SIZE - done );
111109 dcount += done ;
112110
113- if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
114- r = - EBADMSG ;
115- goto finish ;
116- }
111+ if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX )
112+ return - EBADMSG ;
117113
118114 got_decoder_eof = r == COMPRESSOR_EOF ;
119115
@@ -122,46 +118,31 @@ int ca_load_and_decompress_fd(int fd, ReallocBuffer *buffer) {
122118 };
123119
124120 l = read (fd , fd_buffer , sizeof (fd_buffer ));
125- if (l < 0 ) {
126- r = - errno ;
127- goto finish ;
128- }
121+ if (l < 0 )
122+ return - errno ;
129123 if (l == 0 ) {
130- if (!got_decoder_eof ) { /* Premature end of file */
131- r = - EPIPE ;
132- goto finish ;
133- }
134-
124+ if (!got_decoder_eof ) /* Premature end of file */
125+ return - EPIPE ;
135126 break ;
136127 }
137128
138- if (got_decoder_eof ) { /* Trailing noise */
139- r = - EBADMSG ;
140- goto finish ;
141- }
129+ if (got_decoder_eof ) /* Trailing noise */
130+ return - EBADMSG ;
142131
143132 ccount += l ;
144133
145- if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
146- r = - EBADMSG ;
147- goto finish ;
148- }
149- }
150-
151- if (ccount < CA_CHUNK_SIZE_LIMIT_MIN || dcount < CA_CHUNK_SIZE_LIMIT_MIN ) {
152- r = - EBADMSG ;
153- goto finish ;
134+ if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX )
135+ return - EBADMSG ;
154136 }
155137
156- r = 0 ;
138+ if (ccount < CA_CHUNK_SIZE_LIMIT_MIN || dcount < CA_CHUNK_SIZE_LIMIT_MIN )
139+ return - EBADMSG ;
157140
158- finish :
159- compressor_finish (& context );
160- return r ;
141+ return 0 ;
161142}
162143
163144int ca_load_and_compress_fd (int fd , CaCompressionType compression_type , ReallocBuffer * buffer ) {
164- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
145+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
165146 uint64_t ccount = 0 , dcount = 0 ;
166147 int r ;
167148
@@ -184,44 +165,36 @@ int ca_load_and_compress_fd(int fd, CaCompressionType compression_type, ReallocB
184165 bool eof , got_encoder_eof = false;
185166
186167 l = read (fd , fd_buffer , sizeof (fd_buffer ));
187- if (l < 0 ) {
188- r = - errno ;
189- goto finish ;
190- }
168+ if (l < 0 )
169+ return - errno ;
191170
192171 eof = (size_t ) l < sizeof (fd_buffer );
193172 dcount += l ;
194173
195- if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
196- r = - EBADMSG ;
197- goto finish ;
198- }
174+ if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX )
175+ return - EBADMSG ;
199176
200177 r = compressor_input (& context , fd_buffer , l );
201178 if (r < 0 )
202- goto finish ;
179+ return r ;
203180
204181 for (;;) {
205182 uint8_t * p ;
206183 size_t done ;
207184
208185 p = realloc_buffer_extend (buffer , BUFFER_SIZE );
209- if (!p ) {
210- r = - ENOMEM ;
211- goto finish ;
212- }
186+ if (!p )
187+ return - ENOMEM ;
213188
214189 r = compressor_encode (& context , eof , p , BUFFER_SIZE , & done );
215190 if (r < 0 )
216- goto finish ;
191+ return r ;
217192
218193 realloc_buffer_shorten (buffer , BUFFER_SIZE - done );
219194 ccount += done ;
220195
221- if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
222- r = - EBADMSG ;
223- goto finish ;
224- }
196+ if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX )
197+ return - EBADMSG ;
225198
226199 got_encoder_eof = r == COMPRESSOR_EOF ;
227200
@@ -233,16 +206,10 @@ int ca_load_and_compress_fd(int fd, CaCompressionType compression_type, ReallocB
233206 break ;
234207 }
235208
236- if (ccount < CA_CHUNK_SIZE_LIMIT_MIN || dcount < CA_CHUNK_SIZE_LIMIT_MIN ) {
237- r = - EBADMSG ;
238- goto finish ;
239- }
240-
241- r = 0 ;
209+ if (ccount < CA_CHUNK_SIZE_LIMIT_MIN || dcount < CA_CHUNK_SIZE_LIMIT_MIN )
210+ return - EBADMSG ;
242211
243- finish :
244- compressor_finish (& context );
245- return r ;
212+ return 0 ;
246213}
247214
248215int ca_save_fd (int fd , const void * data , size_t size ) {
@@ -259,7 +226,7 @@ int ca_save_fd(int fd, const void *data, size_t size) {
259226}
260227
261228int ca_save_and_compress_fd (int fd , CaCompressionType compression_type , const void * data , size_t size ) {
262- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
229+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
263230 uint64_t ccount = 0 ;
264231 int r ;
265232
@@ -291,39 +258,29 @@ int ca_save_and_compress_fd(int fd, CaCompressionType compression_type, const vo
291258
292259 r = compressor_encode (& context , true, buffer , sizeof (buffer ), & done );
293260 if (r < 0 )
294- goto finish ;
261+ return r ;
295262
296263 k = loop_write (fd , buffer , done );
297- if (k < 0 ) {
298- r = k ;
299- goto finish ;
300- }
264+ if (k < 0 )
265+ return k ;
301266
302267 ccount += done ;
303268
304- if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
305- r = - EINVAL ;
306- goto finish ;
307- }
269+ if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX )
270+ return - EINVAL ;
308271
309272 if (r == COMPRESSOR_EOF )
310273 break ;
311274 }
312275
313- if (ccount < CA_CHUNK_SIZE_LIMIT_MIN ) {
314- r = - EINVAL ;
315- goto finish ;
316- }
317-
318- r = 0 ;
276+ if (ccount < CA_CHUNK_SIZE_LIMIT_MIN )
277+ return - EINVAL ;
319278
320- finish :
321- compressor_finish (& context );
322- return r ;
279+ return 0 ;
323280}
324281
325282int ca_save_and_decompress_fd (int fd , const void * data , size_t size ) {
326- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
283+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
327284 int compression_type ;
328285 uint64_t dcount = 0 ;
329286 int r ;
@@ -349,7 +306,7 @@ int ca_save_and_decompress_fd(int fd, const void *data, size_t size) {
349306
350307 r = compressor_input (& context , data , size );
351308 if (r < 0 )
352- goto finish ;
309+ return r ;
353310
354311 for (;;) {
355312 uint8_t buffer [BUFFER_SIZE ];
@@ -358,39 +315,29 @@ int ca_save_and_decompress_fd(int fd, const void *data, size_t size) {
358315
359316 r = compressor_decode (& context , buffer , sizeof (buffer ), & done );
360317 if (r < 0 )
361- goto finish ;
318+ return r ;
362319
363320 k = loop_write (fd , buffer , done );
364- if (k < 0 ) {
365- r = k ;
366- goto finish ;
367- }
321+ if (k < 0 )
322+ return k ;
368323
369324 dcount += done ;
370325
371- if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
372- r = - EINVAL ;
373- goto finish ;
374- }
326+ if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX )
327+ return - EINVAL ;
375328
376329 if (r == COMPRESSOR_EOF )
377330 break ;
378331 }
379332
380- if (dcount < CA_CHUNK_SIZE_LIMIT_MIN ) {
381- r = - EINVAL ;
382- goto finish ;
383- }
384-
385- r = 0 ;
333+ if (dcount < CA_CHUNK_SIZE_LIMIT_MIN )
334+ return - EINVAL ;
386335
387- finish :
388- compressor_finish (& context );
389- return r ;
336+ return 0 ;
390337}
391338
392339int ca_compress (CaCompressionType compression_type , const void * data , size_t size , ReallocBuffer * buffer ) {
393- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
340+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
394341 uint64_t ccount = 0 ;
395342 int r ;
396343
@@ -416,41 +363,31 @@ int ca_compress(CaCompressionType compression_type, const void *data, size_t siz
416363 uint8_t * p ;
417364
418365 p = realloc_buffer_extend (buffer , BUFFER_SIZE );
419- if (!p ) {
420- r = - ENOMEM ;
421- goto finish ;
422- }
366+ if (!p )
367+ return - ENOMEM ;
423368
424369 r = compressor_encode (& context , true, p , BUFFER_SIZE , & done );
425370 if (r < 0 )
426- goto finish ;
371+ return r ;
427372
428373 realloc_buffer_shorten (buffer , BUFFER_SIZE - done );
429374 ccount += done ;
430375
431- if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
432- r = - EINVAL ;
433- goto finish ;
434- }
376+ if (ccount >= CA_CHUNK_SIZE_LIMIT_MAX )
377+ return - EINVAL ;
435378
436379 if (r == COMPRESSOR_EOF )
437380 break ;
438381 }
439382
440- if (ccount < CA_CHUNK_SIZE_LIMIT_MIN ) {
441- r = - EINVAL ;
442- goto finish ;
443- }
444-
445- r = 0 ;
383+ if (ccount < CA_CHUNK_SIZE_LIMIT_MIN )
384+ return - EINVAL ;
446385
447- finish :
448- compressor_finish (& context );
449- return r ;
386+ return 0 ;
450387}
451388
452389int ca_decompress (const void * data , size_t size , ReallocBuffer * buffer ) {
453- CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
390+ _cleanup_ ( compressor_finish ) CompressorContext context = COMPRESSOR_CONTEXT_INIT ;
454391 uint64_t dcount = 0 ;
455392 int compression_type ;
456393 int r ;
@@ -483,37 +420,27 @@ int ca_decompress(const void *data, size_t size, ReallocBuffer *buffer) {
483420 size_t done ;
484421
485422 p = realloc_buffer_extend (buffer , BUFFER_SIZE );
486- if (!p ) {
487- r = - ENOMEM ;
488- goto finish ;
489- }
423+ if (!p )
424+ return - ENOMEM ;
490425
491426 r = compressor_decode (& context , p , BUFFER_SIZE , & done );
492427 if (r < 0 )
493- goto finish ;
428+ return r ;
494429
495430 realloc_buffer_shorten (buffer , BUFFER_SIZE - done );
496431 dcount += done ;
497432
498- if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX ) {
499- r = - EINVAL ;
500- goto finish ;
501- }
433+ if (dcount >= CA_CHUNK_SIZE_LIMIT_MAX )
434+ return - EINVAL ;
502435
503436 if (r == COMPRESSOR_EOF )
504437 break ;
505438 }
506439
507- if (dcount < CA_CHUNK_SIZE_LIMIT_MIN ) {
508- r = - EINVAL ;
509- goto finish ;
510- }
511-
512- r = 0 ;
440+ if (dcount < CA_CHUNK_SIZE_LIMIT_MIN )
441+ return - EINVAL ;
513442
514- finish :
515- compressor_finish (& context );
516- return r ;
443+ return 0 ;
517444}
518445
519446int ca_chunk_file_open (int chunk_fd , const char * prefix , const CaChunkID * chunkid , const char * suffix , int flags ) {
0 commit comments