aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2012-06-06 17:12:29 +0100
committerMans Rullgard <mans@mansr.com>2012-06-07 11:28:39 +0100
commitd0e9415d234f701bed8837f4e315131ea4e84482 (patch)
treeba27266099df653546bc8efc7e7e132857e2a393
parentecf79c4d3e8baaf2f303278ef81db6f8407656bc (diff)
downloadffmpeg-d0e9415d234f701bed8837f4e315131ea4e84482.tar.gz
fate: avoid freopen(NULL) in videogen/rotozoom
A number of systems do not implement freopen() with a NULL filename correctly. This changes these programs to output individual images if opening a named output argument as a file fails, in this case assuming it is a directory. Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r--tests/Makefile4
-rw-r--r--tests/rotozoom.c11
-rw-r--r--tests/videogen.c11
3 files changed, 14 insertions, 12 deletions
diff --git a/tests/Makefile b/tests/Makefile
index 5ed1e5eefb..01ff711a37 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -16,10 +16,10 @@ tests/data/asynth-%.wav: tests/audiogen$(HOSTEXESUF) | tests/data
$(M)./$< $@ $(subst -, ,$*)
tests/data/vsynth1.yuv: tests/videogen$(HOSTEXESUF) | tests/data
- $(M)$< >$@
+ $(M)$< $@
tests/data/vsynth2.yuv: tests/rotozoom$(HOSTEXESUF) | tests/data
- $(M)$< $(SRC_PATH)/tests/lena.pnm >$@
+ $(M)$< $(SRC_PATH)/tests/lena.pnm $@
tests/data/asynth% tests/data/vsynth%.yuv tests/vsynth%/00.pgm: TAG = GEN
diff --git a/tests/rotozoom.c b/tests/rotozoom.c
index 683e070860..69c88c2e95 100644
--- a/tests/rotozoom.c
+++ b/tests/rotozoom.c
@@ -158,15 +158,16 @@ int main(int argc, char **argv)
{
int w, h, i;
char buf[1024];
+ int isdir = 0;
- if (argc > 3) {
- printf("usage: %s image.pnm [directory/]\n"
+ if (argc != 3) {
+ printf("usage: %s image.pnm file|dir\n"
"generate a test video stream\n", argv[0]);
return 1;
}
- if (argc < 3)
- err_if(!freopen(NULL, "wb", stdout));
+ if (!freopen(argv[2], "wb", stdout))
+ isdir = 1;
w = DEFAULT_WIDTH;
h = DEFAULT_HEIGHT;
@@ -181,7 +182,7 @@ int main(int argc, char **argv)
for (i = 0; i < DEFAULT_NB_PICT; i++) {
gen_image(i, w, h);
- if (argc > 2) {
+ if (isdir) {
snprintf(buf, sizeof(buf), "%s%02d.pgm", argv[2], i);
pgmyuv_save(buf, w, h, rgb_tab);
} else {
diff --git a/tests/videogen.c b/tests/videogen.c
index 7228bd551c..0b7f67eb18 100644
--- a/tests/videogen.c
+++ b/tests/videogen.c
@@ -145,15 +145,16 @@ int main(int argc, char **argv)
{
int w, h, i;
char buf[1024];
+ int isdir = 0;
- if (argc > 2) {
- printf("usage: %s [file]\n"
+ if (argc != 2) {
+ printf("usage: %s file|dir\n"
"generate a test video stream\n", argv[0]);
exit(1);
}
- if (argc < 2)
- err_if(!freopen(NULL, "wb", stdout));
+ if (!freopen(argv[1], "wb", stdout))
+ isdir = 1;
w = DEFAULT_WIDTH;
h = DEFAULT_HEIGHT;
@@ -165,7 +166,7 @@ int main(int argc, char **argv)
for (i = 0; i < DEFAULT_NB_PICT; i++) {
gen_image(i, w, h);
- if (argc > 1) {
+ if (isdir) {
snprintf(buf, sizeof(buf), "%s%02d.pgm", argv[1], i);
pgmyuv_save(buf, w, h, rgb_tab);
} else {