Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
main_cr.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) <2024> <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#include <windows.h>
33#include <stdint.h>
34#include <stdio.h>
35#include <stdlib.h>
36#include <string.h>
37#include <time.h>
38#include <errno.h>
39#include <fcntl.h>
40#include <ctype.h>
41#include <math.h>
42#include <wctype.h>
43#include <wchar.h>
44#include <stdarg.h>
45#include <stddef.h>
46#include <setjmp.h>
47#include <locale.h>
48#include <signal.h>
49#include <limits.h>
50#include <float.h>
51#include <iso646.h>
52
53#undef NDEBUG
54#include <assert.h>
55
56#include <stdbool.h>
57
58#include <process.h>
59
60#ifndef uchar
61#define uchar unsigned char
62#endif
63
64#ifndef uint
65#define uint unsigned int
66#endif
67
68#ifndef ushort
69#define ushort unsigned short
70#endif
71
83#ifndef __GNUC__
84#define __attribute__(unused_ric_since_2004) /* yes... */
85#endif
92void convert_dl_ansi_to_wide(char *ansi_dl, WCHAR *wide_dl)
93{
94 int i_dl;
95 int p_dl;
96 p_dl = strlen(ansi_dl);
97 for (i_dl = 0; i_dl < p_dl; i_dl++)
98 {
99 wide_dl[i_dl] = (WCHAR)ansi_dl[i_dl];
100 }
101 wide_dl[i_dl] = 0;
102
103 return;
104}
105
106char *__stdcall widetochar_dl(
107 WCHAR *pUSC2)
108{
109 static char dua_gone[(300 * 6) + 2];
110 int i;
111 int ret_dl;
112
113 ret_dl = wcslen(pUSC2);
114
115 for (i = 0; i < ret_dl; i++)
116 {
117 dua_gone[i] = (char)pUSC2[i];
118 }
119 dua_gone[i] = 0;
120 return dua_gone;
121}
122char *__stdcall widetoutf8_dl(
123 WCHAR *pUSC2)
124{
125 static int position = 0;
126#define THESIZE (300 * 6)
127 if (0 == position)
128 {
129 static char pUTF8[THESIZE];
130 position = 1;
131 WideCharToMultiByte(CP_UTF8, 0, pUSC2, -1, (LPSTR)pUTF8, THESIZE, 0,
132 0);
133 return pUTF8;
134 }
135 else
136 {
137 static char pUTF8[THESIZE];
138 position = 0;
139 WideCharToMultiByte(CP_UTF8, 0, pUSC2, -1, (LPSTR)pUTF8, THESIZE, 0,
140 0);
141 return pUTF8;
142 }
143 return NULL;
144}
145
146void usage1()
147{
148 /*
149
150
151
152 */
153
154 printf("Uso:\n\nPara criar um arquivo: val.exe -<opcoes> <caminho>\\sampleArchive.val <caminho>\\home\\sampleArchive '<wildcard>'");
155 printf("\n\nPara extrair um arquivo: val.exe -<opcoes> <caminho>\\sampleArchive.val -C <caminho>\\samplePath\n\n");
156 printf(
157
158 " Opcoes\n\n"
159 " c - criar arquivo \n"
160 " v - verbose \n"
161 " f - modo arquivo (sempre requerido no momento) \n"
162 " z - usar gzip para compressao \n"
163 " L - usar LZMA para compressao \n"
164 " e - usar lz5 para compressao, lz5 é uma extensao da rapida compressao lz4 com suporte a multi-thread \n"
165 " h - usar brotli2 para compressao, brotli2 é uma extensao de brotli com suporte a multi-thread \n"
166 " j - usar gzip2 para compressao, gzip2 é uma extensao de gzip com suporte a multi-thread \n"
167 " i - usar bzip3 para compressao, bzip3 é um modo extendido de bzip2 com suporte a multi-thread \n"
168 " m - usar lzop2 para compressao, lzop2 é um modo extendido de lzop com suporte a multi-thread \n"
169 " n - usar Zstandard para compressao \n"
170 " o - usar xz para compressao, sem suporte a multi-thread \n"
171 " q - usar brotli para compressao, este e o modo padrao de compressao brotli, sem suporte a multi-thread \n"
172 " r - usar compress do Unix para compressao \n"
173 " s - usar compress2 (derivado do compress de Unix) para compressao, isto e compress com multi-thread \n"
174 " p[n] nivel de compressao onde [n] varia de 0 para 9, 9 melhor compressao \n"
175 " B - usar bzip2 como metodo de compressao \n"
176 " T[n] - where [n] is a value between 0 and 128 for the number of threads running the process, only works for compressors/decopressors that allows setting the threads running\n"
177 " x - extrair arquivo, requer tambem -C como terceiro argumento da chamada \n\n");
178 /*
179
180
181
182 */
183 printf("Para criar um arquivo val a partir do diretorio /home/sampleArchive incluindo todos os arquivos\nUsage "
184 "val.exe -cvf <path>sampleArchive.val <path>/home/sampleArchive *\n"
185 "\nPara criar um arquivo val usando metodo gzip a partir do diretorio /home/sampleArchive incluindo apenas arquivos *.txt e *.ini\nUsage "
186 "val.exe -cvfzp6T16 <path>sampleArchive.val.gz <path>/home/sampleArchive '*.txt *.ini'\n"
187 "In this case the compression level is 6, normal compression level, it range from 0 to 9 to maximum compression level"
188 "\n\nPara criar um arquivo val usando metodo bzip2 a partir do diretorio <path>/home/sampleArchive incluindo todos os arquivos \nUsage "
189 "val.exe -cvfBp6T8 <path>sampleArchive.val.bzip2 <path>/home/sampleArchive *\n"
190 "\nPara extrair um arquivo val\nUsage val.exe -xvf <path>sampleArchive.val -C <path>/home/sampleArchive\n");
191 exit(27);
192}
193int main(__attribute__((unused)) int argc_xcx, __attribute__((unused)) char **argv_xcx)
194{
195 char argv_xcx_2_dl[300 * 6] = {0};
196 char argv_xcx_4_dl[300 * 6] = {0};
197 ;
198 char file_val_dl[300 * 6] = {0};
199 char path_compress_dl[300 * 6] = {0};
200 WCHAR path_compress_w_dl[300] = {0};
201
202 int __stdcall GetReturnValueFromList(void);
203 int __stdcall GetReturnValue_ar(void);
204 int ret_value_arp = 0;
205 int modo_xcx = NAO_DEFINIDO_XCX;
206 int i_xcx;
207 int compression_method_xcx = 6;
208 bool ok_ric = false;
209 short itens_charli;
210 char character_cha;
211 char buf_cr_level[3] = {0};
212 char buf_cr_threads[4] = {0};
213 char charli_char[300];
214 // int deslocador_charli;
215 int i_c;
216 int priority_charli;
217 // int ret_charli = 0;
218 /*
219
220
221
222
223
224
225
226
227
228
229
230
231 */
232
233 priority_charli = 1;
234
235 switch (priority_charli)
236 {
237 case 0:
238
239 SetPriorityClass(GetCurrentProcess(), IDLE_PRIORITY_CLASS);
240 break;
241 case 1:
242
243 SetPriorityClass(GetCurrentProcess(),
244 NORMAL_PRIORITY_CLASS);
245
246 break;
247 case 2:
248
249 SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); // time critical mode only Microsoft can use...
250 break;
251 case 3:
252
253 SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS); // time critical mode only Microsoft can use...
254 break;
255 default:
256 break;
257 }
258
259 // printf("ret_charli %d\n\n", ret_charli);
260
261 // exit(27);
262 /*
263
264
265
266
267
268
269
270
271
272
273
274
275
276 */
277
278 if (1 < argc_xcx)
279 {
280
281 if ('-' == argv_xcx[1][0])
282 {
283 ok_ric = true;
284 }
285
286 itens_charli = strlen(argv_xcx[1]);
287
288 for (i_xcx = 0; i_xcx < itens_charli; i_xcx++)
289 {
290 // printf("item : %s\n", argv_xcx[i_xcx]);
291
292 if (true == ok_ric)
293 {
294 character_cha = argv_xcx[1][i_xcx];
295
296 // printf("%c\n", character_cha);
297
298 if ('-' == character_cha)
299 {
300 continue;
301 }
302
303 if ('c' == character_cha)
304 {
305 modo_xcx = MODO_EH_COMPRESS;
306 compression_method_xcx = AAKP_MODE_VAL;
307 }
308
309 if ('z' == character_cha)
310 {
311 compression_method_xcx = AAKP_MODE_VAL_GZIP;
312 // printf("Error, method standard gzip disabled for the moment\n");
313 // exit(27);
314 }
315 /*
316 if ('0' <= character_cha && '9' >= character_cha)
317 {
318 buf_cr_level[0] = character_cha;
319
320 compression_level_xcx = atoi(buf_cr_level);
321
322 // printf("c level %d\n", compression_level_xcx);
323 }
324 */
325 if ('B' == character_cha)
326 {
327 compression_method_xcx = AAKP_MODE_VAL_BZ2;
328 }
329
330 if ('x' == character_cha)
331 {
332 modo_xcx = MODO_EH_UNCOMPRESS;
333 }
334
335 if ('p' == character_cha)
336 {
337 memset(buf_cr_level, 0, sizeof(buf_cr_level));
338 buf_cr_level[0] = argv_xcx[1][i_xcx + 1];
339
340 compression_level_xcx = atoi(buf_cr_level);
341 // printf("c level %d\n", compression_level_xcx);
342 }
343
344 if ('T' == character_cha)
345 {
346 // num_threads_xcx
347 memset(buf_cr_threads, 0, sizeof(buf_cr_threads));
348
349 for (i_c = 0; i_c < 3; i_c++)
350 {
351 if (0 == argv_xcx[1][i_xcx + i_c + 1])
352 {
353 break;
354 }
355 if ('0' > argv_xcx[1][i_xcx + i_c + 1] && '9' < argv_xcx[1][i_xcx + i_c + 1])
356 {
357 break;
358 }
359 buf_cr_threads[i_c] = argv_xcx[1][i_xcx + i_c + 1];
360 }
361 num_threads_xcx = atoi(buf_cr_threads);
362
363 if (128 < num_threads_xcx)
364 {
365 num_threads_xcx = 128;
366 }
368 // printf("c threads %d\n", num_threads_xcx);
369 }
370
371 if ('L' == character_cha)
372 {
373 compression_method_xcx = AAKP_MODE_VAL_LZMA;
374 }
375
376 if ('i' == character_cha)
377 {
378 compression_method_xcx = AAKP_MODE_VAL_BZIP3;
379 }
380
381 if ('j' == character_cha)
382 {
383 compression_method_xcx = AAKP_MODE_VAL_GZIP2;
384 }
385
386 if ('e' == character_cha)
387 {
388 compression_method_xcx = AAKP_MODE_VAL_LZ5;
389 }
390
391 if ('h' == character_cha)
392 {
393 compression_method_xcx = AAKP_MODE_VAL_BROTLI2;
394 }
395
396 if ('m' == character_cha)
397 {
398 compression_method_xcx = AAKP_MODE_VAL_LZOP2;
399 }
400
401 if ('n' == character_cha)
402 {
403 compression_method_xcx = AAKP_MODE_VAL_ZSTANDARD;
404 }
405
406 if ('o' == character_cha)
407 {
408 compression_method_xcx = AAKP_MODE_VAL_XZ;
409 }
410
411 if ('q' == character_cha)
412 {
413 compression_method_xcx = AAKP_MODE_VAL_BROTLI;
414 }
415
416 if ('r' == character_cha)
417 {
418 compression_method_xcx = AAKP_MODE_VAL_COMPRESS;
419 }
420
421 if ('s' == character_cha)
422 {
423 compression_method_xcx = AAKP_MODE_VAL_COMPRESS2;
424 }
425 }
426 else
427 {
428 printf("Primeiro item nas opcoes precisa ser o caracter '-', caracter usado '%c'\n\n", argv_xcx[1][0]);
429 usage1();
430 }
431 }
432
433 // tar -xvf sampleArchive.tar -C /home/ExtractedFiles/
434
435 if (modo_xcx == MODO_EH_UNCOMPRESS)
436 {
437
438 if (5 != argc_xcx)
439 {
440 usage1();
441 }
442
443 if (0 != strcmp("-C", argv_xcx[3]))
444 {
445
446 usage1();
447 }
448
449 (void)argv_xcx_2_dl;
450 (void)argv_xcx_4_dl;
451
452 // printf("veja %s\n", GetCommandLineA());
453 {
454
455 void pedro_dprintfW(int amanda_level,
456 wchar_t *format, ...);
457
458 LPWSTR *szArglist;
459 int nArgs;
460 int i;
461 {
462 szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
463 if (NULL == szArglist)
464 {
465 wprintf(L"CommandLineToArgvW failed\n");
466 return 0;
467 }
468 else
469 for (i = 0; i < nArgs; i++)
470 {
471 // pedro_dprintfW(0, L"%d: %ls\n", i, szArglist[i]);
472
473 if (2 == i)
474 {
475
476 // strcpy(path_compress_dl, widetoutf8_dl(szArglist[i]));
477 strncpy_z(argv_xcx_2_dl, widetoutf8_dl(szArglist[i]), (300 * 6) - 2);
478 }
479
480 if (4 == i)
481 {
482
483 strncpy_z(argv_xcx_4_dl, widetoutf8_dl(szArglist[i]), (300 * 6) - 2);
484 // _wunlink(szArglist[i]);
485 }
486 }
487 }
488
489 // Free memory allocated for CommandLineToArgvW arguments.
490
491 LocalFree(szArglist);
492 }
493
494 yasmin_charlotte_pereira_dprintf(-1001, "veja amor -> %s", argv_xcx[2]);
495 // charli4
496
497 if ('\\' == argv_xcx[2][0])
498 {
499 printf("Esta versão console não tem suporte a caminhos UNC\n\n");
500 usage1();
501 }
502 if ((MAX_PATH * 6) < strlen(argv_xcx_2_dl))
503 {
504 printf("Caminho de arquivo muito longo, nesta versão console o caminho tem que ser inferior ou igual a %d\n\n", MAX_PATH);
505 usage1();
506 }
507 // charli2
508 /*
509 unlink(argv_xcx[2]);
510
511 {
512 FILE *myfile = fopen(argv_xcx[2], "wb");
513 if(myfile)
514 {
515 fclose(myfile);
516 }
517 }
518 */
519
520 strcpy(charli_and_yasmin_global_filename, argv_xcx_2_dl);
522 ret_value_arp = extract_tar_file_ar(argv_xcx_2_dl, argv_xcx_4_dl); // problem with MAX_PATH
523
524 if (ret_value_arp)
525 {
526 printf("Uncompression error %d \n", ret_value_arp);
527 exit(27);
528 }
529 memset(charli_char, 0, sizeof(charli_char));
530 while (running_2_ar)
531 {
532 memory_usage__z2(charli_char);
533 printf("Progresso %d - Memoria: %s\r", GetExtrationProgress_ar() / 100, charli_char);
534 Sleep(50);
535
536 // return fatal_exit_k;
537 }
538 memory_usage__z(charli_char);
539 printf("Progresso %d - Tempo Gasto: %f segundos - Memory: %s\n", 100, time_uncompression_charli, charli_char);
540
541 if (fatal_exit_k)
542 printf("Uncompress error: %d\n", fatal_exit_k);
543
544 return fatal_exit_k;
545 }
546
547 if (MODO_EH_COMPRESS == modo_xcx)
548 {
549 if (5 != argc_xcx)
550 {
551 usage1();
552 // goto extrada;
553 }
554 }
555
556 if (NAO_DEFINIDO_XCX == modo_xcx || 1 == argc_xcx)
557 {
558 printf("oi\n");
559 usage1();
560 }
561
562 if (MODO_EH_COMPRESS == modo_xcx)
563 {
564
565 if ('\\' == argv_xcx[2][0])
566 {
567 printf("Esta versão console não tem suporte a caminhos UNC\n\n");
568 usage1();
569 }
570
571 if (MAX_PATH < strlen(argv_xcx[2]))
572 {
573 printf("Caminho de arquivo muito longo, nesta versão console o caminho tem que ser inferior ou igual a %d\n\n", MAX_PATH);
574 usage1();
575 }
576 if (MAX_PATH < strlen(argv_xcx[3]))
577 {
578 printf("Diretorio dos arquivos muito longo, nesta versão console o caminho tem que ser inferior ou igual a %d\n\n", MAX_PATH);
579 usage1();
580 }
581
582 // printf("veja %s\n", GetCommandLineA());
583 {
584
585 void pedro_dprintfW(int amanda_level,
586 wchar_t *format, ...);
587
588 LPWSTR *szArglist;
589 int nArgs;
590 int i;
591 {
592 szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
593 if (NULL == szArglist)
594 {
595 wprintf(L"CommandLineToArgvW failed\n");
596 return 0;
597 }
598 else
599 for (i = 0; i < nArgs; i++)
600 {
601 // pedro_dprintfW(0, L"%d: %ls\n", i, szArglist[i]);
602
603 if (3 == i)
604 {
605
606 strncpy_z(path_compress_dl, widetoutf8_dl(szArglist[i]), (300 * 6) - 2);
607 }
608
609 if (2 == i)
610 {
611 // aqui
612 strncpy_z(file_val_dl, widetoutf8_dl(szArglist[i]), (300 * 6) - 2);
613 _wunlink(szArglist[i]);
614 }
615 }
616 }
617
618 // Free memory allocated for CommandLineToArgvW arguments.
619
620 LocalFree(szArglist);
621 }
622 // pedro_dprintf(0, "oi");
624 {
625 // convert_dl_ansi_to_wide(argv_xcx[3], path_compress_w_dl);
626
627 // strcpy(path_compress_dl, widetoutf8_dl(path_compress_w_dl));
628 (void)path_compress_w_dl;
629 }
630 // unlink(argv_xcx[2]); // need to be modified to allow file update, only fails in compress method mode
631
632 // printf("path %s\n", argv_xcx[3]);
633
634 ret_value_arp = create_archive_ar_v2(file_val_dl,
635 path_compress_dl,
636 argv_xcx[4],
637 compression_method_xcx,
638 true,
640
641 if (ret_value_arp)
642 {
643
644 printf("Error in the compression: %d \n", ret_value_arp);
645 exit(27);
646 }
647 }
648 memset(charli_char, 0, sizeof(charli_char));
649 while (running_ar)
650 {
651 memory_usage__z2(charli_char);
652 if (0 == GetProgress_ar() / 100)
653 {
654 printf("Iniciando...\r");
655 }
656 else
657 printf("Progresso %d - Memoria: %s\r", GetProgress_ar() / 100, charli_char);
658
659 Sleep(50);
660 }
661 // assert(0);
662 memory_usage__z(charli_char);
663 printf("Progresso %d - Tempo Gasto: %f segundos - Memory: %s\n", 100, time___compression_charli, charli_char);
664
665 if (GetReturnValue_ar())
666 {
667 printf("Error: %s\n", error_message_k);
668 printf("Compress error, return value %d\n", GetReturnValue_ar());
669 return 27;
670 }
671 }
672 else
673 {
674 printf("\n\nFaltando argumentos\n\n");
675 usage1();
676 }
677 return 0;
678}
#define wcslen
Definition SfxSetup.c:31
@ AAKP_MODE_VAL_LZOP2
Definition arp.h:139
@ AAKP_MODE_VAL_GZIP
Definition arp.h:123
@ AAKP_MODE_VAL_COMPRESS2
Definition arp.h:145
@ AAKP_MODE_VAL_BZ2
Definition arp.h:124
@ AAKP_MODE_VAL_XZ
Definition arp.h:127
@ AAKP_MODE_VAL_BZIP3
Definition arp.h:137
@ AAKP_MODE_VAL_LZMA
Definition arp.h:126
@ AAKP_MODE_VAL_COMPRESS
Definition arp.h:128
@ AAKP_MODE_VAL_ZSTANDARD
Definition arp.h:131
@ AAKP_MODE_VAL_BROTLI2
Definition arp.h:143
@ AAKP_MODE_VAL
Definition arp.h:122
@ AAKP_MODE_VAL_BROTLI
Definition arp.h:132
@ AAKP_MODE_VAL_LZ5
Definition arp.h:141
@ AAKP_MODE_VAL_GZIP2
Definition arp.h:135
@ ARP_INCLUDE_FILES
Definition arp_2.h:5
void strncpy_z(char *dest_z, char *src_z, size_t len)
Definition smartape.c:243
int __stdcall GetProgress_ar(void)
Definition create_zen_ar.c:2991
int __stdcall GetReturnValue_ar(void)
Definition create_zen_ar.c:2960
int __stdcall create_archive_ar_v2(char *tar_filename_ar, char *path_with_the_files_ar, char *patern_ar, int compression_mode_external_ar, int recurse_in_subfolders_arp, enum mode_is_include_or_exclude the__patern_ar__mode)
Definition create_zen_ar.c:2705
double get_bucaneiro_tick(void)
Definition create_zen_ar.c:71
int running_ar
Definition create_zen_ar.c:2650
int threads_z
Definition create_zen_ar.c:269
int main()
Definition dirent_ronkko.h:938
char *__stdcall widetochar_dl(WCHAR *pUSC2)
Definition main_cr.c:106
#define THESIZE
void convert_dl_ansi_to_wide(char *ansi_dl, WCHAR *wide_dl)
simple convert strings
Definition main_cr.c:92
char *__stdcall widetoutf8_dl(WCHAR *pUSC2)
Definition main_cr.c:122
#define __attribute__(unused_ric_since_2004)
Definition main_cr.c:84
void usage1()
Definition main_cr.c:146
void yasmin_charlotte_pereira_dprintf(int amanda_level, char *format,...)
Definition pedro.c:35
void pedro_dprintfW(int amanda_level, const wchar_t *format,...)
Definition pedro.c:93
@ MODO_EH_COMPRESS
Definition tar_1_33.c:11704
@ NAO_DEFINIDO_XCX
Definition tar_1_33.c:11703
@ MODO_EH_UNCOMPRESS
Definition tar_1_33.c:11705
double time___compression_charli
Definition tar_1_33.c:104
int __stdcall extract_tar_file_ar(char *tar_file_ar, char *destination_folder_ar)
Definition tar_1_33.c:7499
int __stdcall GetExtrationProgress_ar(void)
Definition tar_1_33.c:7605
int compression_level_xcx
Definition tar_1_33.c:97
int __stdcall memory_usage__z2(char *data_z)
Definition tar_1_33.c:11618
int running_2_ar
Definition tar_1_33.c:655
int num_threads_xcx
Definition tar_1_33.c:99
char error_message_k[AMANDA__SIZE]
Definition tar_1_33.c:176
char charli_and_yasmin_global_filename[MAX_PATH+1]
Definition tar_1_33.c:91
int __stdcall GetReturnValueFromList(void)
Definition tar_1_33.c:7019
int __amandacall memory_usage__z(char *data_z)
Definition tar_1_33.c:11592
double time_uncompression_charli
Definition tar_1_33.c:103
int fatal_exit_k
Definition tar_1_33.c:3217
lzma_index ** i
Definition index.h:629
#define NULL
Definition getopt1.c:37
#define MAX_PATH
Definition decodecorpus.c:40