Author: elias
Date: Sat May 26 13:32:38 2007
New Revision: 17865

URL: http://svn.gna.org/viewcvs/wesnoth?rev=17865&view=rev
Log:
fixed download option for raw packets from the campaign server

Modified:
    trunk/utils/campaigns_client.py

Modified: trunk/utils/campaigns_client.py
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/campaigns_client.py?rev=17865&r1=17864&r2=17865&view=diff
==============================================================================
--- trunk/utils/campaigns_client.py (original)
+++ trunk/utils/campaigns_client.py Sat May 26 13:32:38 2007
@@ -333,14 +333,17 @@
         data = self.decode_WML(packet)
         return data
 
-    def get_campaign_async(self, name):
+    def get_campaign_async(self, name, raw = False):
         """
         This is like get_campaign, but returns immediately, doing server
         communications in a background thread.
         """
         class MyThread(threading.Thread):
             def run(self):
-                data = self.cs.get_campaign(self.name)
+                if raw:
+                    data = self.cs.get_campaign_raw(self.name)
+                else:
+                    data = self.cs.get_campaign(self.name)
                 self.data = data
                 self.event.set()
 
@@ -451,7 +454,8 @@
         help = "remove the named campaign from the server, " +
         "set the password -P")
     optionparser.add_option("-R", "--raw-download",
-        help = "download the named campaign as a binary WML packet")
+        action = "store_true",
+        help = "download as a binary WML packet")
     optionparser.add_option("-U", "--unpack",
         help = "unpack the file UNPACK as a binary WML packet " +
         "(specify the campaign path with -c)")
@@ -507,17 +511,20 @@
                     if re.search(options.download, name):
                         fetchlist.append(name)
         for name in fetchlist:
-            mythread = cs.get_campaign_async(name)
+            mythread = cs.get_campaign_async(name, options.raw_download)
 
             while not mythread.event.isSet():
                 mythread.event.wait(1)
                 print "%s: %d/%d" % (name, cs.counter, cs.length)
 
-            print "Unpacking %s..." % name
-            cs.unpackdir(mythread.data, options.campaigns_dir,
-                verbose = options.verbose)
-            for message in mythread.data.find_all("message", "error"):
-                print message.get_text_val("message")
+            if options.raw_download:
+                file(name, "w").write(mythread.data)
+            else:
+                print "Unpacking %s..." % name
+                cs.unpackdir(mythread.data, options.campaigns_dir,
+                    verbose = options.verbose)
+                for message in mythread.data.find_all("message", "error"):
+                    print message.get_text_val("message")
     elif options.remove:
         cs = CampaignBrowser(address)
         data = cs.delete_campaign(options.remove, options.password)


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to