From 0c44bd147207f6ff98b952b17717f2449ec58c51 Mon Sep 17 00:00:00 2001
From: don bright 
Date: Thu, 10 Jan 2013 00:31:57 +0100
Subject: add three people. update copyright date to 2013.
diff --git a/src/AboutDialog.html b/src/AboutDialog.html
index bb48f6c..0eee1cb 100644
--- a/src/AboutDialog.html
+++ b/src/AboutDialog.html
@@ -22,7 +22,7 @@
 
 
 
-Copyright (C) 2009-2012 Marius Kintel <marius@kintel.net> and Clifford Wolf <clifford@clifford.at> 
+Copyright (C) 2009-2013 Marius Kintel <marius@kintel.net> and Clifford Wolf <clifford@clifford.at> 
 
 
 
@@ -105,7 +105,7 @@ Please visit this link for a copy of the license:  0:
+    if user_name is None:
+      # Read username if not specified or loaded from svn config, or on
+      # subsequent tries.
+      sys.stdout.write('Please enter your googlecode.com username: ')
+      sys.stdout.flush()
+      user_name = sys.stdin.readline().rstrip()
+    if password is None:
+      # Read password if not loaded from svn config, or on subsequent tries.
+      print 'Please enter your googlecode.com password.'
+      print '** Note that this is NOT your Gmail account password! **'
+      print 'It is the password you use to access Subversion repositories,'
+      print 'and can be found here: http://code.google.com/hosting/settings'
+      password = getpass.getpass()
+
+    status, reason, url = upload(file_path, project_name, user_name, password,
+                                 summary, labels)
+    # Returns 403 Forbidden instead of 401 Unauthorized for bad
+    # credentials as of 2007-07-17.
+    if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]:
+      # Rest for another try.
+      user_name = password = None
+      tries = tries - 1
+    else:
+      # We're done.
+      break
+
+  return status, reason, url
+
+
+def main():
+  parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY '
+                                 '-p PROJECT [options] FILE')
+  parser.add_option('-s', '--summary', dest='summary',
+                    help='Short description of the file')
+  parser.add_option('-p', '--project', dest='project',
+                    help='Google Code project name')
+  parser.add_option('-u', '--user', dest='user',
+                    help='Your Google Code username')
+  parser.add_option('-w', '--password', dest='password',
+                    help='Your Google Code password')
+  parser.add_option('-l', '--labels', dest='labels',
+                    help='An optional list of comma-separated labels to attach '
+                    'to the file')
+
+  options, args = parser.parse_args()
+
+  if not options.summary:
+    parser.error('File summary is missing.')
+  elif not options.project:
+    parser.error('Project name is missing.')
+  elif len(args) < 1:
+    parser.error('File to upload not provided.')
+  elif len(args) > 1:
+    parser.error('Only one file may be specified.')
+
+  file_path = args[0]
+
+  if options.labels:
+    labels = options.labels.split(',')
+  else:
+    labels = None
+
+  status, reason, url = upload_find_auth(file_path, options.project,
+                                         options.summary, labels,
+                                         options.user, options.password)
+  if url:
+    print 'The file was uploaded successfully.'
+    print 'URL: %s' % url
+    return 0
+  else:
+    print 'An error occurred. Your file was not uploaded.'
+    print 'Google Code upload server said: %s (%s)' % (reason, status)
+    return 1
+
+
+if __name__ == '__main__':
+  sys.exit(main())
-- 
cgit v0.10.1
From 8d23b5b07b0fcc9a2c75db85954bb32dc57fc6e9 Mon Sep 17 00:00:00 2001
From: don bright 
Date: Wed, 9 Jan 2013 19:56:56 -0600
Subject: dont crash if there's no .netrc file. add security notice. discourage
 .netrc use.
diff --git a/scripts/googlecode_upload.py b/scripts/googlecode_upload.py
index 5e25feb..375d7aa 100644
--- a/scripts/googlecode_upload.py
+++ b/scripts/googlecode_upload.py
@@ -4,27 +4,35 @@
 # OpenSCAD Usage:
 #
 # 1. get a google account, get it added to the Google Code OpenSCAD project
-# 2. go to https://code.google.com/hosting/settings to find your password
+# 2. go to https://code.google.com/hosting/settings for username & password
 # -----
 #
 #              security note - 
 #
-#              dont use the ~/.netrc file to store your password
-#              keep your password secret
+#              it's not advisable to use a ~/.netrc file to store your password
+#              keep your googlecode password secret
 #              only upload from a secure machine
 #              user's personal data can be at risk if your account 
-#              is compromised and a fake openscad were to be uploaded
-#
+#              is compromised and a fake openscad were to be uploaded.
+#              notify the OpenSCAD maintainer if your computer is stolen or 
+#              your google account is ever compromised. 
 # -----
 # 4. if you are making a Stable Release, check 'docs/release_checklist.txt'
 # 5. create an OpenSCAD package (linux dev snapshot: ./scripts/release-common.sh)
 # 6. Run this to do the upload:
 #  export SUMMARY="Linux x86-64 Snapshot" # replace as appropriate
 #  export PACKAGEFILE=openscad-2013.01.10.x86-64.tar.gz # replace as appropriate
-#  python ./scripts/googlecode_upload.py -s $SUMMARY -p openscad $PACKAGEFILE
-# 7. Wait.... (there is no progress meter). It should say 'success' eventually.
+#  python ./scripts/googlecode_upload.py -s '$SUMMARY' -p openscad $PACKAGEFILE
+# 7. It will ask for username. Use user.name@gmail.com (include the @ mail address)
+# 8. It will ask for password. Copy/paste the password from the https google code settings page above
+#   Don't use the big bold password, use the 'plain font' password from the 'machine' line
+# 9. Wait.... (there is no progress meter). It should say 'success' eventually.
 #
-# The rest of this file is original from Google.
+# The rest of this file is original from Google with slight modifications by the
+# OpenSCAD team. Modifications licensed under the same license as the
+# original code from google - the Apache Software License 2.0:
+#  http://www.apache.org/licenses/LICENSE-2.0
+
 
 #
 # Copyright 2006, 2007 Google Inc. All Rights Reserved.
@@ -196,7 +204,11 @@ def upload_find_auth(file_path, project_name, summary, labels=None,
   """
   if user_name is None or password is None:
     from netrc import netrc
-    authenticators = netrc().authenticators("code.google.com")
+    authenticators = None
+    try:
+      authenticators = netrc().authenticators("code.google.com")
+    except:
+      print "Error accessing netrc authenticator. Trying alternate method"
     if authenticators:
       if user_name is None:
         user_name = authenticators[0]
-- 
cgit v0.10.1