276 |
|
int no_rows = 0; /* number of output rows */ |
277 |
|
|
278 |
|
/* check settings and assign defaults */ |
279 |
< |
static void |
279 |
> |
static int |
280 |
|
check_sizes() |
281 |
|
{ |
282 |
|
if (fmtid == NULL) { |
288 |
|
comp_size = sizeof(double); |
289 |
|
else if (!strcmp(fmtid, "byte")) |
290 |
|
comp_size = 1; |
291 |
+ |
else { |
292 |
+ |
fprintf(stderr, "Unsupported format: %s\n", fmtid); |
293 |
+ |
return(0); |
294 |
+ |
} |
295 |
|
} |
296 |
|
if (n_comp <= 0) |
297 |
|
n_comp = 3; |
298 |
+ |
return(1); |
299 |
|
} |
300 |
|
|
301 |
|
/* output transposed ASCII or binary data from memory */ |
476 |
|
int |
477 |
|
main(int argc, char *argv[]) |
478 |
|
{ |
479 |
< |
int do_header = 1; /* header i/o? */ |
479 |
> |
int i_header = 1; /* input header? */ |
480 |
> |
int o_header = 1; /* output header? */ |
481 |
|
int transpose = 0; /* transpose rows & cols? */ |
482 |
|
int i; |
483 |
|
|
499 |
|
else |
500 |
|
goto userr; |
501 |
|
break; |
502 |
< |
case 'h': /* header on/off */ |
503 |
< |
do_header = !do_header; |
502 |
> |
case 'h': /* turn off header */ |
503 |
> |
switch (argv[i][2]) { |
504 |
> |
case 'i': |
505 |
> |
i_header = 0; |
506 |
> |
break; |
507 |
> |
case 'o': |
508 |
> |
o_header = 0; |
509 |
> |
break; |
510 |
> |
case '\0': |
511 |
> |
i_header = o_header = 0; |
512 |
> |
break; |
513 |
> |
default: |
514 |
> |
goto userr; |
515 |
> |
} |
516 |
|
break; |
517 |
|
case 't': /* transpose on/off */ |
518 |
|
transpose = !transpose; |
575 |
|
return(1); |
576 |
|
return(0); |
577 |
|
} |
578 |
< |
if (do_header) { /* read/write header */ |
578 |
> |
if (i_header) { /* read header */ |
579 |
|
if (getheader(stdin, &headline, NULL) < 0) |
580 |
|
return(1); |
581 |
< |
check_sizes(); |
581 |
> |
if (!check_sizes()) |
582 |
> |
return(1); |
583 |
|
if (comp_size) { /* a little late... */ |
584 |
|
SET_FILE_BINARY(stdin); |
585 |
|
SET_FILE_BINARY(stdout); |
586 |
|
} |
587 |
+ |
} else if (!check_sizes()) |
588 |
+ |
return(1); |
589 |
+ |
if (o_header) { /* write header */ |
590 |
|
printargs(argc, argv, stdout); |
591 |
|
if (transpose && (no_rows <= 0) & (no_columns <= 0)) { |
592 |
|
if (ni_rows > 0) no_columns = ni_rows; |
599 |
|
printf("NCOMP=%d\n", n_comp); |
600 |
|
fputformat(fmtid, stdout); |
601 |
|
fputc('\n', stdout); /* finish new header */ |
602 |
< |
} else |
581 |
< |
check_sizes(); |
602 |
> |
} |
603 |
|
if (transpose) { /* transposing rows & columns? */ |
604 |
|
MEMLOAD myMem; /* need to load into memory */ |
605 |
|
if (i == argc-1) { |
621 |
|
return(0); |
622 |
|
userr: |
623 |
|
fprintf(stderr, |
624 |
< |
"Usage: %s [-h][-w][-f[afdb][N]][-t][-ic in_col][-ir in_row][-oc out_col][-or out_row] [input.dat]\n", |
624 |
> |
"Usage: %s [-h[io]][-w][-f[afdb][N]][-t][-ic in_col][-ir in_row][-oc out_col][-or out_row] [input.dat]\n", |
625 |
|
argv[0]); |
626 |
|
return(1); |
627 |
|
} |