[Scummvm-cvs-logs] SF.net SVN: scummvm:[42933] tools/branches/gsoc2009-gui/compress.cpp

Remere at users.sourceforge.net Remere at users.sourceforge.net
Thu Jul 30 17:29:15 CEST 2009


Revision: 42933
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42933&view=rev
Author:   Remere
Date:     2009-07-30 15:29:11 +0000 (Thu, 30 Jul 2009)

Log Message:
-----------
*Out of bounds parameters now causes errors instead of truncating the value.

Modified Paths:
--------------
    tools/branches/gsoc2009-gui/compress.cpp

Modified: tools/branches/gsoc2009-gui/compress.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress.cpp	2009-07-30 15:19:15 UTC (rev 42932)
+++ tools/branches/gsoc2009-gui/compress.cpp	2009-07-30 15:29:11 UTC (rev 42933)
@@ -687,17 +687,14 @@
 				throw ToolException("Could not parse command line options, expected value after -b");
 			encparms.minBitr = atoi(_arguments[_arguments_parsed].c_str());
 
-			if ((encparms.minBitr % 8) != 0) {
-				encparms.minBitr -= encparms.minBitr % 8;
-			}
+			if (encparms.minBitr > 160)
+				throw ToolException("Minimum bitrate out of bounds (-b), must be between 8 and 160.");
 
-			if (encparms.minBitr > 160) {
-				encparms.minBitr = 160;
-			}
+			if (encparms.minBitr == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Minimum bitrate (-b) must be a number.");
 
-			if (encparms.minBitr < 8) {
-				encparms.minBitr = 8;
-			}
+			if (encparms.minBitr < 8)
+				throw ToolException("Minimum bitrate out of bounds (-b), must be between 8 and 160.");
 
 		} else if (arg == "-B") {
 			++_arguments_parsed;
@@ -709,27 +706,26 @@
 				encparms.maxBitr -= encparms.maxBitr % 8;
 			}
 
-			if (encparms.maxBitr > 160) {
-				encparms.maxBitr = 160;
-			}
+			if (encparms.maxBitr > 160)
+				throw ToolException("Maximum bitrate out of bounds (-B), must be between 8 and 160.");
 
-			if (encparms.maxBitr < 8) {
-				encparms.maxBitr = 8;
-			}
+			if (encparms.maxBitr == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Maximum bitrate (-B) must be a number.");
 
+			if (encparms.maxBitr < 8)
+				throw ToolException("Maximum bitrate out of bounds (-B), must be between 8 and 160.");
+
 		} else if (arg == "-V") {
 			++_arguments_parsed;
 			if (_arguments_parsed >= _arguments.size())
 				throw ToolException("Could not parse command line options, expected value after -V");
 			encparms.vbrqual = atoi(_arguments[_arguments_parsed].c_str());
 
-			if (encparms.vbrqual < 0) {
-				encparms.vbrqual = 0;
-			}
+			if (encparms.vbrqual < 0)
+				throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
 
-			if (encparms.vbrqual > 9) {
-				encparms.vbrqual = 9;
-			}
+			if (encparms.vbrqual > 9)
+				throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
 
 		} else if (arg == "-q") {
 			++_arguments_parsed;
@@ -737,13 +733,11 @@
 				throw ToolException("Could not parse command line options, expected value after -q");
 			encparms.algqual = atoi(_arguments[_arguments_parsed].c_str());
 
-			if (encparms.algqual < 0) {
-				encparms.algqual = 0;
-			}
+			if (encparms.algqual < 0)
+				throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
 
-			if (encparms.algqual > 9) {
-				encparms.algqual = 9;
-			}
+			if (encparms.algqual > 9)
+				throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
 
 		} else if (arg == "--silent") {
 			encparms.silent = 1;
@@ -757,8 +751,6 @@
 	return true;
 }
 
-#include <iostream>
-
 bool CompressionTool::processOggParms() {
 	while (_arguments_parsed < _arguments.size()) {
 		std::string arg = _arguments[_arguments_parsed];
@@ -768,59 +760,60 @@
 			if (_arguments_parsed >= _arguments.size())
 				throw ToolException("Could not parse command line options, expected value after -b");
 			oggparms.nominalBitr = atoi(_arguments[_arguments_parsed].c_str());
-			std::cout << "Parsed b=" << oggparms.nominalBitr << "\n";
 
-			if ((oggparms.nominalBitr % 8) != 0) {
+			if ((oggparms.nominalBitr % 8) != 0)
 				oggparms.nominalBitr -= oggparms.nominalBitr % 8;
-			}
 
-			if (oggparms.nominalBitr >160) {
-				oggparms.nominalBitr = 160;
-			}
+			if (oggparms.nominalBitr > 160)
+				throw ToolException("Nominal bitrate out of bounds (-b), must be between 8 and 160.");
 
-			if (oggparms.nominalBitr < 8) {
-				oggparms.nominalBitr = 8;
-			}
+			if (oggparms.nominalBitr == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Nominal bitrate (-b) must be a number.");
 
+			if (oggparms.nominalBitr < 8)
+				throw ToolException("Nominal bitrate out of bounds (-b), must be between 8 and 160.");
+
 		} else if (arg == "-m") {
 			++_arguments_parsed;
 			if (_arguments_parsed >= _arguments.size())
 				throw ToolException("Could not parse command line options, expected value after -m");
 			oggparms.minBitr = atoi(_arguments[_arguments_parsed].c_str());
 
-			if ((oggparms.minBitr % 8) != 0) {
+			if ((oggparms.minBitr % 8) != 0)
 				oggparms.minBitr -= oggparms.minBitr % 8;
-			}
 
-			if (oggparms.minBitr >160) {
-				oggparms.minBitr = 160;
-			}
+			if (oggparms.minBitr > 160)
+				throw ToolException("Minimal bitrate out of bounds (-m), must be between 8 and 160.");
 
-			if (oggparms.minBitr < 8) {
-				oggparms.minBitr = 8;
-			}
+			if (oggparms.minBitr == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Minimal bitrate (-m) must be a number.");
 
+			if (oggparms.minBitr < 8)
+				throw ToolException("Minimal bitrate out of bounds (-m), must be between 8 and 160.");
+
 		} else if (arg == "-M") {
 			++_arguments_parsed;
 			if (_arguments_parsed >= _arguments.size())
 				throw ToolException("Could not parse command line options, expected value after -M");
 			oggparms.maxBitr = atoi(_arguments[_arguments_parsed].c_str());
 
-			if ((oggparms.maxBitr % 8) != 0) {
-				oggparms.maxBitr -= encparms.minBitr % 8;
-			}
+			if ((oggparms.maxBitr % 8) != 0)
+				oggparms.maxBitr -= oggparms.maxBitr % 8;
 
-			if (oggparms.maxBitr >160) {
-				oggparms.maxBitr = 160;
-			}
+			if (oggparms.maxBitr > 160)
+				throw ToolException("Minimal bitrate out of bounds (-M), must be between 8 and 160.");
 
-			if (oggparms.maxBitr < 8) {
-				oggparms.maxBitr = 8;
-			}
+			if (oggparms.maxBitr == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Minimal bitrate (-M) must be a number.");
 
+			if (oggparms.maxBitr < 8)
+				throw ToolException("Minimal bitrate out of bounds (-M), must be between 8 and 160.");
 		} else if (arg == "-q") {
 			++_arguments_parsed;
 			oggparms.quality = (float)atoi(_arguments[_arguments_parsed].c_str());
+
+			if (oggparms.quality == 0 && _arguments[_arguments_parsed] != "0")
+				throw ToolException("Quality (-q) must be a number.");
 		} else if (arg == "--silent") {
 			oggparms.silent = 1;
 		} else {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list