|
57 | 57 | {
|
58 | 58 | int opt = 0;
|
59 | 59 |
|
| 60 | + bool writeToStdout = false; |
60 | 61 | char *pngName = "snapshot.png";
|
61 | 62 | int32_t requestedWidth = 0;
|
62 | 63 | int32_t requestedHeight = 0;
|
|
71 | 72 |
|
72 | 73 | //-------------------------------------------------------------------
|
73 | 74 |
|
74 |
| - char *sopts = "d:Hh:p:w:"; |
| 75 | + char *sopts = "d:Hh:p:w:s"; |
75 | 76 |
|
76 | 77 | struct option lopts[] =
|
77 | 78 | {
|
|
80 | 81 | { "help", no_argument, NULL, 'H' },
|
81 | 82 | { "pngname", required_argument, NULL, 'p' },
|
82 | 83 | { "width", required_argument, NULL, 'w' },
|
| 84 | + { "stdout", no_argument, NULL, 's' }, |
83 | 85 | { NULL, no_argument, NULL, 0 }
|
84 | 86 | };
|
85 | 87 |
|
@@ -107,6 +109,11 @@ main(
|
107 | 109 | requestedWidth = atoi(optarg);
|
108 | 110 | break;
|
109 | 111 |
|
| 112 | + case 's': |
| 113 | + |
| 114 | + writeToStdout = true; |
| 115 | + break; |
| 116 | + |
110 | 117 | case 'H':
|
111 | 118 | default:
|
112 | 119 |
|
@@ -470,17 +477,26 @@ main(
|
470 | 477 | exit(EXIT_FAILURE);
|
471 | 478 | }
|
472 | 479 |
|
473 |
| - FILE *pngfp = fopen(pngName, "wb"); |
| 480 | + FILE *pngfp = NULL; |
474 | 481 |
|
475 |
| - if (pngfp == NULL) |
| 482 | + if (writeToStdout) |
476 | 483 | {
|
477 |
| - fprintf(stderr, |
478 |
| - "%s: unable to create %s - %s\n", |
479 |
| - program, |
480 |
| - pngName, |
481 |
| - strerror(errno)); |
| 484 | + pngfp = stdout; |
| 485 | + } |
| 486 | + else |
| 487 | + { |
| 488 | + pngfp = fopen(pngName, "wb"); |
482 | 489 |
|
483 |
| - exit(EXIT_FAILURE); |
| 490 | + if (pngfp == NULL) |
| 491 | + { |
| 492 | + fprintf(stderr, |
| 493 | + "%s: unable to create %s - %s\n", |
| 494 | + program, |
| 495 | + pngName, |
| 496 | + strerror(errno)); |
| 497 | + |
| 498 | + exit(EXIT_FAILURE); |
| 499 | + } |
484 | 500 | }
|
485 | 501 |
|
486 | 502 | png_init_io(pngPtr, pngfp);
|
@@ -508,7 +524,11 @@ main(
|
508 | 524 |
|
509 | 525 | png_write_end(pngPtr, NULL);
|
510 | 526 | png_destroy_write_struct(&pngPtr, &infoPtr);
|
511 |
| - fclose(pngfp); |
| 527 | + |
| 528 | + if (pngfp != stdout) |
| 529 | + { |
| 530 | + fclose(pngfp); |
| 531 | + } |
512 | 532 |
|
513 | 533 | //-------------------------------------------------------------------
|
514 | 534 |
|
|
0 commit comments