Skip to content

Commit

Permalink
[ * ] 优化解包的进度显示
Browse files Browse the repository at this point in the history
  • Loading branch information
foxofice committed Aug 30, 2024
1 parent d58c0f0 commit 6d4d903
Showing 1 changed file with 39 additions and 5 deletions.
44 changes: 39 additions & 5 deletions unpack_alf/unpack_alf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,8 @@ int main(int argc, char** argv) {
* why? I don't know
*/

size_t max_line_len = 0;

if(unicode_alf)
{
S4TOCARCENTRY_W* arcentries = (S4TOCARCENTRY_W*) (archdr + 1); /* Note: Pointer addition is not numeric addition
Expand All @@ -298,8 +300,24 @@ int main(int argc, char** argv) {
}

for (unsigned long i = 0; i < filhdr->entry_count; i++) {
if(i > 0 && (i % 1000) == 0)
printf("Unpacking: %u/%u\n", i, filhdr->entry_count);
if(i > 0)
printf("\r");

WCHAR txt[1024] = {};
swprintf_s(txt, L"Unpacking: [%u/%u] %s", i + 1, filhdr->entry_count, filentries[i].filename);
wprintf(L"%s", txt);

size_t line_len = wcslen(txt);

if(line_len < max_line_len)
{
char space[1024];
memset(space, ' ', max_line_len - line_len);
space[max_line_len - line_len] = '\0';
printf("%s", space);
}

max_line_len = __max(max_line_len, line_len);

arc_info_t_W& arc = arc_info[filentries[i].archive_index];

Expand Down Expand Up @@ -353,8 +371,24 @@ int main(int argc, char** argv) {
}

for (unsigned long i = 0; i < filhdr->entry_count; i++) {
if(i > 0 && (i % 1000) == 0)
printf("Unpacking: %u/%u\n", i, filhdr->entry_count);
if(i > 0)
printf("\r");

char txt[1024] = {};
sprintf_s(txt, "Unpacking: [%u/%u] %s", i + 1, filhdr->entry_count, filentries[i].filename);
printf("%s", txt);

size_t line_len = strlen(txt);

if(line_len < max_line_len)
{
char space[1024];
memset(space, ' ', max_line_len - line_len);
space[max_line_len - line_len] = '\0';
printf("%s", space);
}

max_line_len = __max(max_line_len, line_len);

arc_info_t& arc = arc_info[filentries[i].archive_index];

Expand Down Expand Up @@ -386,7 +420,7 @@ int main(int argc, char** argv) {

delete [] toc_buff;

printf("Unpacking done!\n");
printf("\nUnpacking done!\n");

getchar();
return 0;
Expand Down

0 comments on commit 6d4d903

Please sign in to comment.