diff options
author | Matt Kraai <kraai@debian.org> | 2000-09-15 22:47:34 +0000 |
---|---|---|
committer | Matt Kraai <kraai@debian.org> | 2000-09-15 22:47:34 +0000 |
commit | b2f36af1573f6599f1cd35edfd44c1c2d6048faf (patch) | |
tree | 4d3ef37ee5927dde91485605a568faeb58b681df | |
parent | 6fc2a7d04da066f40ad91e3a11b6418e76181f86 (diff) | |
download | busybox-w32-b2f36af1573f6599f1cd35edfd44c1c2d6048faf.tar.gz busybox-w32-b2f36af1573f6599f1cd35edfd44c1c2d6048faf.tar.bz2 busybox-w32-b2f36af1573f6599f1cd35edfd44c1c2d6048faf.zip |
Updated stdin/stdout treatment to match that of gnu tar.
-rw-r--r-- | archival/tar.c | 15 | ||||
-rw-r--r-- | tar.c | 15 |
2 files changed, 12 insertions, 18 deletions
diff --git a/archival/tar.c b/archival/tar.c index 3e1a65062..723943245 100644 --- a/archival/tar.c +++ b/archival/tar.c | |||
@@ -133,8 +133,8 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag, | |||
133 | 133 | ||
134 | #ifdef BB_FEATURE_TAR_CREATE | 134 | #ifdef BB_FEATURE_TAR_CREATE |
135 | /* Local procedures to save files into a tar file. */ | 135 | /* Local procedures to save files into a tar file. */ |
136 | static int writeTarFile(const char* tarName, int tostdoutFlag, | 136 | static int writeTarFile(const char* tarName, int verboseFlag, int argc, |
137 | int verboseFlag, int argc, char **argv, char** excludeList); | 137 | char **argv, char** excludeList); |
138 | #endif | 138 | #endif |
139 | 139 | ||
140 | static struct option longopts[] = | 140 | static struct option longopts[] = |
@@ -185,14 +185,11 @@ extern int tar_main(int argc, char **argv) | |||
185 | break; | 185 | break; |
186 | case 'O': | 186 | case 'O': |
187 | tostdoutFlag = TRUE; | 187 | tostdoutFlag = TRUE; |
188 | tarName = "-"; | ||
189 | break; | 188 | break; |
190 | case 'f': | 189 | case 'f': |
191 | if (*tarName != '-') | 190 | if (*tarName != '-') |
192 | fatalError( "Only one 'f' option allowed\n"); | 191 | fatalError( "Only one 'f' option allowed\n"); |
193 | tarName = optarg; | 192 | tarName = optarg; |
194 | if (!strcmp(tarName, "-") && createFlag == TRUE) | ||
195 | tostdoutFlag = TRUE; | ||
196 | break; | 193 | break; |
197 | #if defined BB_FEATURE_TAR_EXCLUDE | 194 | #if defined BB_FEATURE_TAR_EXCLUDE |
198 | case 'e': | 195 | case 'e': |
@@ -218,7 +215,7 @@ extern int tar_main(int argc, char **argv) | |||
218 | #ifndef BB_FEATURE_TAR_CREATE | 215 | #ifndef BB_FEATURE_TAR_CREATE |
219 | fatalError( "This version of tar was not compiled with tar creation support.\n"); | 216 | fatalError( "This version of tar was not compiled with tar creation support.\n"); |
220 | #else | 217 | #else |
221 | exit(writeTarFile(tarName, tostdoutFlag, verboseFlag, argc-optind, &argv[optind], excludeList)); | 218 | exit(writeTarFile(tarName, verboseFlag, argc-optind, &argv[optind], excludeList)); |
222 | #endif | 219 | #endif |
223 | } | 220 | } |
224 | if (listFlag == TRUE || extractFlag == TRUE) { | 221 | if (listFlag == TRUE || extractFlag == TRUE) { |
@@ -922,8 +919,8 @@ static int writeFileToTarball(const char *fileName, struct stat *statbuf, void* | |||
922 | return( TRUE); | 919 | return( TRUE); |
923 | } | 920 | } |
924 | 921 | ||
925 | static int writeTarFile(const char* tarName, int tostdoutFlag, | 922 | static int writeTarFile(const char* tarName, int verboseFlag, int argc, |
926 | int verboseFlag, int argc, char **argv, char** excludeList) | 923 | char **argv, char** excludeList) |
927 | { | 924 | { |
928 | int tarFd=-1; | 925 | int tarFd=-1; |
929 | int errorFlag=FALSE; | 926 | int errorFlag=FALSE; |
@@ -936,7 +933,7 @@ static int writeTarFile(const char* tarName, int tostdoutFlag, | |||
936 | fatalError("Cowardly refusing to create an empty archive\n"); | 933 | fatalError("Cowardly refusing to create an empty archive\n"); |
937 | 934 | ||
938 | /* Open the tar file for writing. */ | 935 | /* Open the tar file for writing. */ |
939 | if (tostdoutFlag == TRUE) | 936 | if (strcmp(tarName, "-") == 0) |
940 | tbInfo.tarFd = fileno(stdout); | 937 | tbInfo.tarFd = fileno(stdout); |
941 | else | 938 | else |
942 | tbInfo.tarFd = open (tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); | 939 | tbInfo.tarFd = open (tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); |
@@ -133,8 +133,8 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag, | |||
133 | 133 | ||
134 | #ifdef BB_FEATURE_TAR_CREATE | 134 | #ifdef BB_FEATURE_TAR_CREATE |
135 | /* Local procedures to save files into a tar file. */ | 135 | /* Local procedures to save files into a tar file. */ |
136 | static int writeTarFile(const char* tarName, int tostdoutFlag, | 136 | static int writeTarFile(const char* tarName, int verboseFlag, int argc, |
137 | int verboseFlag, int argc, char **argv, char** excludeList); | 137 | char **argv, char** excludeList); |
138 | #endif | 138 | #endif |
139 | 139 | ||
140 | static struct option longopts[] = | 140 | static struct option longopts[] = |
@@ -185,14 +185,11 @@ extern int tar_main(int argc, char **argv) | |||
185 | break; | 185 | break; |
186 | case 'O': | 186 | case 'O': |
187 | tostdoutFlag = TRUE; | 187 | tostdoutFlag = TRUE; |
188 | tarName = "-"; | ||
189 | break; | 188 | break; |
190 | case 'f': | 189 | case 'f': |
191 | if (*tarName != '-') | 190 | if (*tarName != '-') |
192 | fatalError( "Only one 'f' option allowed\n"); | 191 | fatalError( "Only one 'f' option allowed\n"); |
193 | tarName = optarg; | 192 | tarName = optarg; |
194 | if (!strcmp(tarName, "-") && createFlag == TRUE) | ||
195 | tostdoutFlag = TRUE; | ||
196 | break; | 193 | break; |
197 | #if defined BB_FEATURE_TAR_EXCLUDE | 194 | #if defined BB_FEATURE_TAR_EXCLUDE |
198 | case 'e': | 195 | case 'e': |
@@ -218,7 +215,7 @@ extern int tar_main(int argc, char **argv) | |||
218 | #ifndef BB_FEATURE_TAR_CREATE | 215 | #ifndef BB_FEATURE_TAR_CREATE |
219 | fatalError( "This version of tar was not compiled with tar creation support.\n"); | 216 | fatalError( "This version of tar was not compiled with tar creation support.\n"); |
220 | #else | 217 | #else |
221 | exit(writeTarFile(tarName, tostdoutFlag, verboseFlag, argc-optind, &argv[optind], excludeList)); | 218 | exit(writeTarFile(tarName, verboseFlag, argc-optind, &argv[optind], excludeList)); |
222 | #endif | 219 | #endif |
223 | } | 220 | } |
224 | if (listFlag == TRUE || extractFlag == TRUE) { | 221 | if (listFlag == TRUE || extractFlag == TRUE) { |
@@ -922,8 +919,8 @@ static int writeFileToTarball(const char *fileName, struct stat *statbuf, void* | |||
922 | return( TRUE); | 919 | return( TRUE); |
923 | } | 920 | } |
924 | 921 | ||
925 | static int writeTarFile(const char* tarName, int tostdoutFlag, | 922 | static int writeTarFile(const char* tarName, int verboseFlag, int argc, |
926 | int verboseFlag, int argc, char **argv, char** excludeList) | 923 | char **argv, char** excludeList) |
927 | { | 924 | { |
928 | int tarFd=-1; | 925 | int tarFd=-1; |
929 | int errorFlag=FALSE; | 926 | int errorFlag=FALSE; |
@@ -936,7 +933,7 @@ static int writeTarFile(const char* tarName, int tostdoutFlag, | |||
936 | fatalError("Cowardly refusing to create an empty archive\n"); | 933 | fatalError("Cowardly refusing to create an empty archive\n"); |
937 | 934 | ||
938 | /* Open the tar file for writing. */ | 935 | /* Open the tar file for writing. */ |
939 | if (tostdoutFlag == TRUE) | 936 | if (strcmp(tarName, "-") == 0) |
940 | tbInfo.tarFd = fileno(stdout); | 937 | tbInfo.tarFd = fileno(stdout); |
941 | else | 938 | else |
942 | tbInfo.tarFd = open (tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); | 939 | tbInfo.tarFd = open (tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); |