From 94fd3201b237b2a1d04e06dd7fb5ea4130bddded Mon Sep 17 00:00:00 2001
From: Philipp Hagemeister <phihag@phihag.de>
Date: Thu, 8 Dec 2011 20:59:02 +0100
Subject: [PATCH] Abort when --max-downloads is reached.

---
 youtube_dl/__init__.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index fe0fe987e..ecc000fb8 100755
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -317,6 +317,10 @@ class PostProcessingError(Exception):
 	"""
 	pass
 
+class MaxDownloadsReached(Exception):
+	""" --max-downloads limit has been reached. """
+	pass
+
 
 class UnavailableVideoError(Exception):
 	"""Unavailable Format exception.
@@ -730,8 +734,7 @@ class FileDownloader(object):
 		max_downloads = self.params.get('max_downloads')
 		if max_downloads is not None:
 			if self._num_downloads > int(max_downloads):
-				self.to_screen(u'[download] Maximum number of downloads reached. Skipping ' + info_dict['title'])
-				return
+				raise MaxDownloadsReached()
 
 		filename = self.prepare_filename(info_dict)
 		
@@ -4447,7 +4450,12 @@ def _real_main():
 			parser.error(u'you must provide at least one URL')
 		else:
 			sys.exit()
-	retcode = fd.download(all_urls)
+	
+	try:
+		retcode = fd.download(all_urls)
+	except MaxDownloadsReached:
+		fd.to_screen(u'--max-download limit reached, aborting.')
+		retcode = 101
 
 	# Dump cookie jar if requested
 	if opts.cookiefile is not None: