Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
brotli2_decoder_mt_z.c
Go to the documentation of this file.
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
3 #2023 X March 21 19:50 PM Brasília Time
4
5* *
6* Licensa de Copia (C) <2023> <Aurora Boreal> *
7* *
8* Este programa e software livre: voce pode redistribuir isto e/ou *
9* modificar isto sobre os termos do GNU Licensa Geral Pública como 25
10* publicado pela Fundacao de Software Livre, tanto a versão 3 da *
11* Licensa, ou (dependendo da sua opcao) qualquer versao posterior. *
12* *
13* Este programa e distribuido na esperanca que isto vai ser util, *
14* mas SEM QUALQUER GARANTIA; sem ate mesmo a implicada garantia de *
15* COMERCIALIZAcaO ou CABIMENTO PARA UM FIM PARTICULAR. Veja a *
16* Licensa Geral Publica para mais detalhes. *
17* *
18* Você deve ter recebido uma cópia da LICENSA GERAL PUBLICA e a GNU *
19* Licensa Publica Menor junto com este programa *
20* Se não, veja <http://www.gnu.org/licenses/>. *
21* *
22* Suporte: sourceforge.net github.com *
23* *
24* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
25
26* Pereira: arsoftware25@gmail.com ricardo@arsoftware.net.br *
27* xcx: arsoftware10@gmail.com charli@arsoftware.net.br *
28 Yasmin: yasmin@arsoftware.net.br *
29 pereira1001@users.sourceforge.net
30 */
31
32//#define CHUNK 131072 /* to never change again */
33
35{
36 ar_data ar = {0,};
37 char signature_z [5] = "AR__";
38 char * buffer = malloc (CHUNK);
39 char * out = malloc (CHUNK);
40 int ret_arp ;
41 int ret_z ;
42 int retvalue = 0;
43 int64_t remaining_z ;
44
45 pedro_dprintf(-1, "decoder multi-thread running\n" );
46
47 assert(NULL == dest);
48
49 intcancel_7 = 0;
50 intpause_7 = 0;
51
52 signature_z[3] = '_' - 10;//brotli2 multi-thread
53
54 amanda->size_of_input_file_copy_z = amanda->size_of_input_file_copy_z + sizeof(int64_t) + sizeof(ar);
56/*
57 remaining_z = amanda->size_of_input_file_z;//why this?....
58*/
59 pedro_dprintf(-1, "seek to %lld\n", amanda->offset_z);
60
61 assert(0 <= (int)amanda->offset_z - (int) sizeof(int64_t) - (int) sizeof(ar));
62
63 if(
64 0 != _fseeki64(
65 amanda->input_file,
66 amanda->offset_z - sizeof(int64_t) - sizeof(ar),
68 )
69 )
70 {
71 amanda->retvalue = 403; //File access error
72 goto saida_13_march_2021__12_12_12;
73 }
74
75 memset (&ar, 0, sizeof (ar));
76 ret_z = fread (&ar, 1, min(sizeof (ar), amanda->size_of_input_file_copy_z), amanda->input_file);
77
78 if (ret_z != sizeof (ar))
79 {
80
81 retvalue = 5;
82 goto saida_13_march_2021__12_12_12;
83
84 }
85 amanda->size_of_input_file_copy_z -= ret_z;
86 if (0 != memcmp (ar.string, signature_z, 4))
87 {
88
89 retvalue = 199;
90 goto saida_13_march_2021__12_12_12;
91
92 }
93
94 ret_z = fread (&remaining_z, 1, (int)min((uint64_t)sizeof (remaining_z), (uint64_t)amanda->size_of_input_file_copy_z), amanda->input_file);
95
96 if (sizeof (remaining_z) != ret_z)
97 {
98 retvalue = 5;
99 goto saida_13_march_2021__12_12_12;
100 }
101
103 ret_z;
104
105 if(0 > remaining_z)
106 {
107 retvalue = 500;
108 goto saida_13_march_2021__12_12_12;
109 }
110
111 if(amanda->size_of_input_file_copy_z != remaining_z)
112 {
113 retvalue = 500;
114 goto saida_13_march_2021__12_12_12;
115 }
116
117 amanda->size_of_input_file_copy_z = remaining_z;
118 //aqui...
119
120 ret_arp = decompress_file_18(source, dest, amanda);
121
122 if(119 == amanda-> internal_error_arp)
123 {
124 retvalue = 119;
125 }
126 else if(6 == amanda-> internal_error_arp)
127 {
128 retvalue = amanda-> internal_error_arp;
129 }
130 else
131 {
132 if(ret_arp)
133 {
134 pedro_dprintf(-1, "error 2 7 \n");
135 retvalue = 7; // Decompression error
136 }
137 }
138
139saida_13_march_2021__12_12_12:;
140
141 if (*(amanda->intcancel_7))
142 {
143 retvalue = 119;
144 }
145 *(amanda->bytes_read_z) = totalbytes_z_7;
146 free(buffer);
147 free(out);
148
149 pedro_dprintf(-1, "erro que deu interno %d\n", retvalue);
150
151 return retvalue;
152}
int decompress_file_18(FILE *f_in, FILE *f_out, my_thread_struct_z *amanda)
Definition brotli.c:1609
void pedro_dprintf(int amanda_level, char *format,...)
Definition pedro.c:43
#define CHUNK
Definition brotli2.c:163
int intpause_7
Definition brotli2dll.c:123
int64_t totalbytes_z_7
Definition brotli2.c:286
int intcancel_7
Definition brotli2dll.c:124
int zuncompress_sha512_k_mt_decoding_multi_thread_z_7(FILE *source, FILE *dest, my_thread_struct_z *amanda)
Definition brotli2_decoder_mt_z.c:34
#define assert(condition)
Definition lz4.c:273
const char * source
Definition lz4.h:808
char * dest
Definition lz4.h:806
#define min(a, b)
Definition compress42.c:304
Definition stdio_v3.h:12
char string[4]
Definition stdio_v3.h:13
Definition stdio_v3.h:23
int64_t offset_z
Definition stdio_v3.h:44
int64_t size_of_input_file_copy_z
Definition stdio_v3.h:46
int retvalue
Definition stdio_v3.h:39
int64_t * bytes_read_z
Definition stdio_v3.h:43
int * intcancel_7
Definition stdio_v3.h:41
FILE * input_file
Definition stdio_v3.h:35
int64_t size_of_input_file_z
Definition stdio_v3.h:47
#define SEEK_SET
Definition zconf.h:498
const lzma_allocator const uint8_t size_t uint8_t * out
Definition block.h:528
#define NULL
Definition getopt1.c:37
signature_z[3]
Definition zlib_interface.c:37