Subject: videogen: better error messages needed Package: videogen Version: 0.32-1 Severity: normal Tags: patch
-- System Information: Debian Release: testing/unstable APT prefers breezy-security APT policy: (500, 'breezy-security'), (500, 'breezy-backports'), (500, 'breezy') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.12-10-686 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages videogen depends on: ii bc 1.06-17 The GNU bc arbitrary precision calii libc6 2.3.5-1ubuntu12 GNU C Library: Shared libraries an videogen recommends no packages. -- no debconf information I became somewhat frustrated using videogen. It worked OK when I used -m=1280x768 When I tried -m=1366x768 I got a confusing error. $ /usr/X11R6/bin/videogen -m=1366x768 argument 1 (-m=1366x768) has an invalid parameter command line syntax error The error message dosen't explain what I'm doing wrong. I had to read the souce code to figure out the problem. When I read the source I noticed several other types of error messages were also defaulting to a meaningless message. I've attached a patch to fix the problem and provide better error messages. Regards, Michael Sebastian __________________________________________ Yahoo! DSL Something to write home about. Just $16.99/mo. or less. dsl.yahoo.com
diff -urN videogen-0.32/args.c videogen-0.32-new/args.c --- videogen-0.32/args.c 2006-01-02 00:28:21.000000000 -0800 +++ videogen-0.32-new/args.c 2006-01-01 23:56:35.000000000 -0800 @@ -152,6 +152,44 @@ break; } + case 2: + case -2: { + pmsg (VL_DEBUG, "[cmdline] arg %u: %s has an invalid parameter \"%s\": width must be between %u and %u\n", + ap->aindex, (*ap->options)[ap->oindex].ao_option, (*ap->options)[ap->oindex].ao_parameter, + CFG_WIDTH_MIN, CFG_WIDTH_MAX); + pmsg (VL_NORMAL, "argument %u (%s) has an invalid parameter: width must be between %u and %u\n", + ap->aindex, ap->argv[ap->aindex], CFG_WIDTH_MIN, CFG_WIDTH_MAX); + return (-1); + } + + case 3: + case -3: { + pmsg (VL_DEBUG, "[cmdline] arg %u: %s has an invalid parameter \"%s\": height must be between %u and %u\n", + ap->aindex, (*ap->options)[ap->oindex].ao_option, (*ap->options)[ap->oindex].ao_parameter, + CFG_HEIGHT_MIN, CFG_HEIGHT_MAX); + pmsg (VL_NORMAL, "argument %u (%s) has an invalid parameter: height must be between %u and %u\n", + ap->aindex, ap->argv[ap->aindex], CFG_HEIGHT_MIN, CFG_HEIGHT_MAX); + return (-1); + } + + case 4: + case -4: { + pmsg (VL_DEBUG, "[cmdline] arg %u: %s has an invalid parameter \"%s\": aspect ratio must be between %f and %f\n", + ap->aindex, (*ap->options)[ap->oindex].ao_option, (*ap->options)[ap->oindex].ao_parameter, + CFG_ASPECT_RATIO_MIN, CFG_ASPECT_RATIO_MAX); + pmsg (VL_NORMAL, "argument %u (%s) has an invalid parameter: aspect ratio must be between %f and %f\n", + ap->aindex, ap->argv[ap->aindex], CFG_ASPECT_RATIO_MIN, CFG_ASPECT_RATIO_MAX); + return (-1); + } + + case 6: { + pmsg (VL_DEBUG, "[cmdline] arg %u: %s has an invalid parameter \"%s\": width must be a multiple of 8\n", + ap->aindex, (*ap->options)[ap->oindex].ao_option, (*ap->options)[ap->oindex].ao_parameter); + pmsg (VL_NORMAL, "argument %u (%s) has an invalid parameter: width must be a multiple of 8\n", + ap->aindex, ap->argv[ap->aindex]); + return (-1); + } + default: { pmsg (VL_DEBUG, "[cmdline] arg %u: %s has an invalid parameter \"%s\"\n", ap->aindex, (*ap->options)[ap->oindex].ao_option, (*ap->options)[ap->oindex].ao_parameter); diff -urN videogen-0.32/cfg.y videogen-0.32-new/cfg.y --- videogen-0.32/cfg.y 2002-10-29 20:51:57.000000000 -0800 +++ videogen-0.32-new/cfg.y 2006-01-02 00:14:22.000000000 -0800 @@ -168,9 +168,44 @@ break; } + case 2: + case -2: { + pmsg (VL_DEBUG, "[cfgfile] line %u: invalid parameter %lux%lu: width must be between %u and %u\n", + lexer_num_lines, $2, $4, CFG_WIDTH_MIN, CFG_WIDTH_MAX); + pmsg (VL_VERBOSE, "error at line %u: invalid parameter %lux%lu: width must be between %u and %u\n", + lexer_num_lines, $2, $4, CFG_WIDTH_MIN, CFG_WIDTH_MAX); + YYABORT; + } + + case 3: + case -3: { + pmsg (VL_DEBUG, "[cfgfile] line %u: invalid parameter %lux%lu: height must be between %u and %u\n", + lexer_num_lines, $2, $4, CFG_HEIGHT_MIN, CFG_HEIGHT_MAX); + pmsg (VL_VERBOSE, "error at line %u: invalid parameter %lux%lu: height must be between %u and %u\n", + lexer_num_lines, $2, $4, CFG_HEIGHT_MIN, CFG_HEIGHT_MAX); + YYABORT; + } + + case 4: + case -4: { + pmsg (VL_DEBUG, "[cfgfile] line %u: invalid parameter %lux%lu: aspect ratio must be between %f and %f\n", + lexer_num_lines, $2, $4, CFG_ASPECT_RATIO_MIN, CFG_ASPECT_RATIO_MAX); + pmsg (VL_VERBOSE, "error at line %u: invalid parameter %lux%lu: aspect ratio must be between %f and %f\n", + lexer_num_lines, $2, $4, CFG_ASPECT_RATIO_MIN, CFG_ASPECT_RATIO_MAX); + YYABORT; + } + + case 6: { + pmsg (VL_DEBUG, "[cfgfile] line %u: invalid parameter %lux%lu: width must be a multiple of 8\n", + lexer_num_lines, $2, $4); + pmsg (VL_VERBOSE, "error at line %u: invalid parameter %lux%lu: width must be a multiple of 8\n", + lexer_num_lines, $2, $4); + YYABORT; + } + default: { pmsg (VL_DEBUG, "[cfgfile] line %u: invalid parameter %lux%lu\n", lexer_num_lines, $2, $4); - pmsg (VL_VERBOSE, "error at line %u: invalid parameter\n", lexer_num_lines); + pmsg (VL_VERBOSE, "error at line %u: invalid parameter %lux%lu\n", lexer_num_lines, $2, $4); YYABORT; } }