diff options
Diffstat (limited to 'bin/tar2sqfs/tar2sqfs.c')
-rw-r--r-- | bin/tar2sqfs/tar2sqfs.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/bin/tar2sqfs/tar2sqfs.c b/bin/tar2sqfs/tar2sqfs.c index ae56e6b..6cab231 100644 --- a/bin/tar2sqfs/tar2sqfs.c +++ b/bin/tar2sqfs/tar2sqfs.c @@ -9,26 +9,18 @@ int main(int argc, char **argv) { int status = EXIT_FAILURE; - FILE *input_file = NULL; + istream_t *input_file = NULL; sqfs_writer_t sqfs; process_args(argc, argv); -#ifdef _WIN32 - _setmode(_fileno(stdin), _O_BINARY); - input_file = stdin; -#else - input_file = freopen(NULL, "rb", stdin); -#endif - - if (input_file == NULL) { - perror("changing stdin to binary mode"); + input_file = istream_open_stdin(); + if (input_file == NULL) return EXIT_FAILURE; - } memset(&sqfs, 0, sizeof(sqfs)); if (sqfs_writer_init(&sqfs, &cfg)) - return EXIT_FAILURE; + goto out_if; if (process_tarball(input_file, &sqfs)) goto out; @@ -42,5 +34,7 @@ int main(int argc, char **argv) status = EXIT_SUCCESS; out: sqfs_writer_cleanup(&sqfs, status); +out_if: + sqfs_destroy(input_file); return status; } |