Index: src/gpodder/console.py
===================================================================
--- src/gpodder/console.py	(revision 718)
+++ src/gpodder/console.py	(working copy)
@@ -21,6 +21,7 @@
 from gpodder import download
 from gpodder import sync
 from gpodder.liblogger import msg
+from gpodder.libgpodder import gl
 
 from libpodcasts import load_channels
 from libpodcasts import save_channels
@@ -125,3 +126,35 @@
         msg('error', _('Cannot close device.'))
         return False
 
+def sync_stats():
+    size = 0
+    device = sync.open_device()
+    if device is None:
+        msg('error', _('No device configured. Please use the GUI.'))
+        return False
+
+    for channel in load_channels():
+        if not channel.sync_to_devices:
+            continue
+        for episode in channel.get_all_episodes():
+            if episode.is_played() and gl.config.only_sync_not_played:
+                continue
+            if episode.file_type() not in device.allowed_types:
+                continue
+            if episode.is_downloaded():
+			    episode.calculate_filesize
+			    size+=episode.length
+    msg('info', _('Free space on device %s : %s') % (device.destination,gl.format_filesize(device.available_space())))
+    msg('info', _('Size of episodes to sync: %s') % gl.format_filesize(size))
+
+    difference = device.available_space() - size
+    if difference<0:
+        msg('error', _('Need to free at least %s more') % gl.format_filesize(abs(difference)))
+        return False
+    else:
+		msg('info', _('Free space after sync: %s') % gl.format_filesize(abs(difference)))
+
+    if not device.close():
+        msg('error', _('Cannot close device.'))
+        return False
+    return True
Index: src/gpodder/sync.py
===================================================================
--- src/gpodder/sync.py	(revision 718)
+++ src/gpodder/sync.py	(working copy)
@@ -190,7 +190,10 @@
     def remove_track(self, track):
         pass
 
+    def available_space(self):
+        pass
 
+
 class iPodDevice(Device):
     def __init__(self):
         Device.__init__(self)
@@ -640,3 +643,7 @@
             log('Error while parsing "%s".', log_file, sender=self)
 
         return True
+
+    def available_space(self):
+        s = os.statvfs(self.destination)
+        return s.f_bsize * s.f_bavail
Index: bin/gpodder
===================================================================
--- bin/gpodder	(revision 718)
+++ bin/gpodder	(working copy)
@@ -101,6 +101,9 @@
     parser.add_option("-d", "--delete", dest="delete",
                       help=_("Delete channel specified by URL"), metavar="URL")
 
+    parser.add_option("-S", "--stats",
+			          action="store_true", dest="stats", default=False,
+                      help=_("Get sync statistics"))
 
     (options, args) = parser.parse_args(argv)
 
@@ -135,6 +138,8 @@
         console.add_channel( options.add)
     elif options.delete:
         console.del_channel( options.delete)
+    elif options.stats:
+        console.sync_stats()
     else:
         #default run gui
         from gpodder import gui
