if (ret)
return ret;
- if (progress->extract.completed_bytes >=
- progress->extract.total_bytes)
- {
- ctx->next_progress = UINT64_MAX;
- } else {
- /* Send new message as soon as another 1/128 of the
- * total has been extracted. (Arbitrary number.) */
- ctx->next_progress =
- progress->extract.completed_bytes +
- progress->extract.total_bytes / 128;
-
- /* ... Unless that would be more than 5000000 bytes, in
- * which case send the next after the next 5000000
- * bytes. (Another arbitrary number.) */
- if (progress->extract.completed_bytes + 5000000 <
- ctx->next_progress)
- ctx->next_progress =
- progress->extract.completed_bytes + 5000000;
-
- /* ... But always send a message as soon as we're
- * completely done. */
- if (progress->extract.total_bytes < ctx->next_progress)
- ctx->next_progress = progress->extract.total_bytes;
- }
+ set_next_progress(progress->extract.completed_bytes,
+ progress->extract.total_bytes,
+ &ctx->next_progress);
}
if (unlikely(filedes_valid(&ctx->tmpfile_fd))) {
if (num_chars == 0)
return true;
for (i = 0; i < num_chars; i++) {
- switch (name[i]) {
+ switch (le16_to_cpu(name[i])) {
#ifdef __WIN32__
- case cpu_to_le16('\\'):
- case cpu_to_le16(':'):
- case cpu_to_le16('*'):
- case cpu_to_le16('?'):
- case cpu_to_le16('"'):
- case cpu_to_le16('<'):
- case cpu_to_le16('>'):
- case cpu_to_le16('|'):
+ case '\x01'...'\x1F':
+ case '\\':
+ case ':':
+ case '*':
+ case '?':
+ case '"':
+ case '<':
+ case '>':
+ case '|':
#endif
- case cpu_to_le16('/'):
- case cpu_to_le16('\0'):
+ case '/':
+ case '\0':
if (fix)
name[i] = replacement_char;
else
}
}
-#ifdef __WIN32__
- if (name[num_chars - 1] == cpu_to_le16(' ') ||
- name[num_chars - 1] == cpu_to_le16('.'))
- {
- if (fix)
- name[num_chars - 1] = replacement_char;
- else
- return false;
- }
-#endif
return true;
}