--- sane-backends-1.0.4/frontend/scanimage.c Fri Nov 24 07:20:05 2000 +++ sane-backends-1.0.4-caskey/frontend/scanimage.c Sat Jun 2 04:33:50 2001 @@ -65,6 +65,12 @@ #define OPTION_FORMAT 1001 #define OPTION_MD5 1002 +#define OPTION_BATCH_COUNT 1003 +#define OPTION_BATCH_START_AT 1004 +#define OPTION_BATCH_DOUBLE 1005 +#define OPTION_BATCH_INCREMENT 1006 + +#define BATCH_COUNT_UNLIMITED -1 static struct option basic_options[] = { {"device-name", required_argument, NULL, 'd'}, @@ -74,6 +80,10 @@ {"test", no_argument, NULL, 'T'}, {"version", no_argument, NULL, 'V'}, {"batch", optional_argument, NULL, 'b'}, + {"batch-count", required_argument, NULL, OPTION_BATCH_COUNT}, + {"batch-start", required_argument, NULL, OPTION_BATCH_START_AT}, + {"batch-double", no_argument, NULL, OPTION_BATCH_DOUBLE}, + {"batch-increment", required_argument, NULL, OPTION_BATCH_INCREMENT}, {"format", required_argument, NULL, OPTION_FORMAT}, {"accept-md5-only", no_argument, NULL, OPTION_MD5}, {0, 0, NULL, 0} @@ -1346,6 +1356,9 @@ const char *defdevname = 0; const char *format = 0; int batch = 0; + int batch_count = BATCH_COUNT_UNLIMITED; + int batch_start_at = 1; + int batch_increment = 1; SANE_Status status; char *full_optstring; @@ -1377,6 +1390,7 @@ devname = optarg; break; case 'b': + // This may have already been set by the batch-count flag batch = 1; format = optarg; break; @@ -1389,6 +1403,19 @@ case 'T': test = 1; break; + case OPTION_BATCH_INCREMENT: + batch_increment = atoi(optarg); + break; + case OPTION_BATCH_START_AT: + batch_start_at = atoi(optarg); + break; + case OPTION_BATCH_DOUBLE: + batch_increment = 2; + break; + case OPTION_BATCH_COUNT: + batch_count = atoi(optarg); + batch = 1; + break; case OPTION_FORMAT: if (strcmp (optarg, "tiff") == 0) output_format = OUTPUT_TIFF; @@ -1444,6 +1471,10 @@ standard output.\n\ \n\ -b, --batch=FORMAT working in batch mode\n\ + --batch-count=# how many pages to scan in batch mode\n\ + --batch-start=# page number to start naming files with\n\ + --batch-doublesided increment page number by two for 2sided originals\n\ + being scanned in a single sided scanner\n\ --format=pnm|tiff file format of output file\n\ -d, --device-name=DEVICE use a given scanner device (e.g. hp:/dev/scanner)\n\ -h, --help display this help message and exit\n\ @@ -1686,11 +1717,16 @@ if (test == 0) { - int n = 1; + int n = batch_start_at; if (batch && NULL == format) format = "out%d.pnm"; + if(batch) { + fprintf(stderr, "Scanning %d pages, incrementing by %d, numbering from %d\n", + batch_count, batch_increment, batch_start_at); + } + do { char path[PATH_MAX]; @@ -1703,9 +1739,14 @@ return SANE_STATUS_ACCESS_DENIED; } + if (batch) { + fprintf(stderr, "Scanning page %d\n", n); + } status = scan_it (); - if (batch) - fprintf (stderr, "status = %d\n", status); + if (batch) { + fprintf (stderr, "Scanned page %d.", batch_count); + fprintf (stderr, " (scanner status = %d)\n", status); + } switch (status) { @@ -1722,9 +1763,10 @@ } break; } /* switch */ - n++; + n += batch_increment; } - while (batch && SANE_STATUS_GOOD == status); + while ((batch && (batch_count==BATCH_COUNT_UNLIMITED || --batch_count)) + && SANE_STATUS_GOOD == status); } else status = test_it ();