|
@@ -1,6 +1,7 @@
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
|
|
+#include <errno.h>
|
|
|
|
+#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <unistd.h>
|
|
-#include <libnet.h>
|
|
|
|
|
|
|
|
#include "postprocess.h"
|
|
#include "postprocess.h"
|
|
|
|
|
|
@@ -23,7 +24,9 @@ main(int argc, char *argv[])
|
|
{
|
|
{
|
|
int opt;
|
|
int opt;
|
|
int verbose = 0;
|
|
int verbose = 0;
|
|
|
|
+ long temp;
|
|
int quality = 90;
|
|
int quality = 90;
|
|
|
|
+ char *endptr;
|
|
char *input_path;
|
|
char *input_path;
|
|
char *output_path;
|
|
char *output_path;
|
|
|
|
|
|
@@ -33,21 +36,32 @@ main(int argc, char *argv[])
|
|
verbose = 1;
|
|
verbose = 1;
|
|
break;
|
|
break;
|
|
case 'q':
|
|
case 'q':
|
|
- quality = atoi(optarg);
|
|
|
|
|
|
+ temp = strtol(optarg, &endptr, 0);
|
|
|
|
+ if (errno == ERANGE || *endptr != '\0' || optarg == endptr) {
|
|
|
|
+ fprintf(stderr, "Invalid value for -q\n");
|
|
|
|
+ print_usage(argv[0]);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ if (temp < 0 || temp > 100) {
|
|
|
|
+ fprintf(stderr, "Quality out of range, valid values are 0-100\n");
|
|
|
|
+ print_usage(argv[0]);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ quality = (int) temp;
|
|
break;
|
|
break;
|
|
case 'h':
|
|
case 'h':
|
|
print_usage(argv[0]);
|
|
print_usage(argv[0]);
|
|
- exit(0);
|
|
|
|
|
|
+ return 0;
|
|
case '?':
|
|
case '?':
|
|
print_usage(argv[0]);
|
|
print_usage(argv[0]);
|
|
- exit(1);
|
|
|
|
|
|
+ return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (argc < optind + 2) {
|
|
if (argc < optind + 2) {
|
|
fprintf(stderr, "Missing image parameters\n");
|
|
fprintf(stderr, "Missing image parameters\n");
|
|
print_usage(argv[0]);
|
|
print_usage(argv[0]);
|
|
- exit(1);
|
|
|
|
|
|
+ return 1;
|
|
}
|
|
}
|
|
|
|
|
|
input_path = argv[optind];
|
|
input_path = argv[optind];
|