#include <utime.h>
#include <sys/types.h>
#include <sys/sysmacros.h>
+#include <getopt.h>
/* Tar file constants */
#ifndef MAJOR
int verboseFlag, int argc, char **argv, char** excludeList);
#endif
+static struct option longopts[] =
+{
+#ifdef BB_FEATURE_TAR_EXCLUDE
+ {"exclude",required_argument,NULL,'e'},
+#endif
+ {NULL,0,NULL,0}
+};
extern int tar_main(int argc, char **argv)
{
usage(tar_usage);
/* do normal option parsing */
- while ((opt = getopt(argc, argv, "cxtvOf:-:")) > 0) {
+ while ((opt = getopt_long(argc, argv, "cxtvOf:", longopts, NULL)) != EOF) {
switch (opt) {
case 'c':
if (extractFlag == TRUE || listFlag == TRUE)
if (!strcmp(tarName, "-") && createFlag == TRUE)
tostdoutFlag = TRUE;
break;
- case '-':
#if defined BB_FEATURE_TAR_EXCLUDE
- if (strcmp(optarg, "exclude")==0) {
- if (argv[optind]==NULL)
- fatalError( "option `--exclude' requires an argument\n");
- excludeList=xrealloc( excludeList, sizeof(char**) * (excludeListSize+2));
- excludeList[excludeListSize] = argv[optind];
- /* Remove leading "/"s */
- if (*excludeList[excludeListSize] =='/') {
- excludeList[excludeListSize] = (excludeList[excludeListSize])+1;
- }
- /* Tack a NULL onto the end of the list */
- excludeList[excludeListSize] = NULL;
- optind++;
- break;
- }
+ case 'e':
+ excludeList=xrealloc( excludeList, sizeof(char**) * (excludeListSize+2));
+ excludeList[excludeListSize] = optarg;
+ /* Remove leading "/"s */
+ if (*excludeList[excludeListSize] =='/')
+ excludeList[excludeListSize] = (excludeList[excludeListSize])+1;
+ /* Tack a NULL onto the end of the list */
+ excludeList[++excludeListSize] = NULL;
+ break;
#endif
- fatalError( "Unknown tar flag '%s'\n"
- "Try `tar --help' for more information\n", optarg);
default:
- fatalError( "Unknown tar flag '%c'\n"
- "Try `tar --help' for more information\n", **argv);
+ usage(tar_usage);
}
}
int errorFlag=FALSE;
TarHeader rawHeader;
TarInfo header;
-#if defined BB_FEATURE_TAR_EXCLUDE
char** tmpList;
-#endif
/* Open the tar file for reading. */
if (!strcmp(tarName, "-"))
#include <utime.h>
#include <sys/types.h>
#include <sys/sysmacros.h>
+#include <getopt.h>
/* Tar file constants */
#ifndef MAJOR
int verboseFlag, int argc, char **argv, char** excludeList);
#endif
+static struct option longopts[] =
+{
+#ifdef BB_FEATURE_TAR_EXCLUDE
+ {"exclude",required_argument,NULL,'e'},
+#endif
+ {NULL,0,NULL,0}
+};
extern int tar_main(int argc, char **argv)
{
usage(tar_usage);
/* do normal option parsing */
- while ((opt = getopt(argc, argv, "cxtvOf:-:")) > 0) {
+ while ((opt = getopt_long(argc, argv, "cxtvOf:", longopts, NULL)) != EOF) {
switch (opt) {
case 'c':
if (extractFlag == TRUE || listFlag == TRUE)
if (!strcmp(tarName, "-") && createFlag == TRUE)
tostdoutFlag = TRUE;
break;
- case '-':
#if defined BB_FEATURE_TAR_EXCLUDE
- if (strcmp(optarg, "exclude")==0) {
- if (argv[optind]==NULL)
- fatalError( "option `--exclude' requires an argument\n");
- excludeList=xrealloc( excludeList, sizeof(char**) * (excludeListSize+2));
- excludeList[excludeListSize] = argv[optind];
- /* Remove leading "/"s */
- if (*excludeList[excludeListSize] =='/') {
- excludeList[excludeListSize] = (excludeList[excludeListSize])+1;
- }
- /* Tack a NULL onto the end of the list */
- excludeList[excludeListSize] = NULL;
- optind++;
- break;
- }
+ case 'e':
+ excludeList=xrealloc( excludeList, sizeof(char**) * (excludeListSize+2));
+ excludeList[excludeListSize] = optarg;
+ /* Remove leading "/"s */
+ if (*excludeList[excludeListSize] =='/')
+ excludeList[excludeListSize] = (excludeList[excludeListSize])+1;
+ /* Tack a NULL onto the end of the list */
+ excludeList[++excludeListSize] = NULL;
+ break;
#endif
- fatalError( "Unknown tar flag '%s'\n"
- "Try `tar --help' for more information\n", optarg);
default:
- fatalError( "Unknown tar flag '%c'\n"
- "Try `tar --help' for more information\n", **argv);
+ usage(tar_usage);
}
}
int errorFlag=FALSE;
TarHeader rawHeader;
TarInfo header;
-#if defined BB_FEATURE_TAR_EXCLUDE
char** tmpList;
-#endif
/* Open the tar file for reading. */
if (!strcmp(tarName, "-"))