diff --git a/src/gam.py b/src/gam.py
index d4c0bb6b..8935a315 100755
--- a/src/gam.py
+++ b/src/gam.py
@@ -370,6 +370,12 @@ def noPythonSSLExit():
def printLine(message):
sys.stdout.write(message+u'\n')
#
+def getCharSet(i):
+ if (i == len(sys.argv)) or (sys.argv[i].lower() != u'charset'):
+ return (i, GC_Values.get(GC_CHARSET, GM_Globals[GM_SYS_ENCODING]))
+ return (i+2, sys.argv[i+1])
+
+#
# Open a file
#
def openFile(filename, mode=u'rb'):
@@ -4457,8 +4463,7 @@ def doLabel(users):
i += 1
callGAPI(service=gmail.users().labels(), function=u'create', soft_errors=True, userId=user, body=body)
-PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP = {u'delete': u'deleted',
- u'trash': u'trashed', u'untrash': u'untrashed', u'modify': u'modified'}
+PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP = {u'delete': u'deleted', u'trash': u'trashed', u'untrash': u'untrashed', u'modify': u'modified'}
def labelsToLabelIds(gmail, labels):
allLabels = {
@@ -4487,7 +4492,7 @@ def labelsToLabelIds(gmail, labels):
label_results = callGAPI(gmail.users().labels(), 'create',
body={'labelListVisibility': 'labelShow',
'messageListVisibility': 'show', 'name': label},
- userId='me', fields='id')
+ userId='me', fields='id')
allLabels[label] = label_results['id']
try:
labelIds.append(allLabels[label])
@@ -4564,7 +4569,7 @@ def doProcessMessages(users, function):
for id_batch in id_batches:
print u'deleting %s messages' % len(id_batch)
callGAPI(service=gmail.users().messages(), function=u'batchDelete',
- body={u'ids': id_batch}, userId=u'me')
+ body={u'ids': id_batch}, userId=u'me')
deleted_messages += len(id_batch)
print u'deleted %s of %s messages' % (deleted_messages, result_count)
continue
@@ -4909,10 +4914,14 @@ def getForward(users):
def doSignature(users):
import cgi
- if sys.argv[4].lower() == u'file':
- signature = cgi.escape(readFile(sys.argv[5], encoding=GM_Globals[GM_SYS_ENCODING]).replace(u'\\n', u'
').replace(u'"', u"'"))
+ i = 4
+ if sys.argv[i].lower() == u'file':
+ filename = sys.argv[i+1]
+ i += 2
+ i, encoding = getCharSet(i)
+ signature = readFile(filename, encoding=encoding).replace(u'\\n', u'
').replace(u'\n', u'
')
else:
- signature = cgi.escape(sys.argv[4]).replace(u'\\n', u'
').replace(u'"', u"'")
+ signature = cgi.escape(sys.argv[i]).replace(u'\\n', u'
').replace(u'"', u"'")
xmlsig = u'''
@@ -4999,8 +5008,10 @@ def doVacation(users):
end_date = sys.argv[i+1]
i += 2
elif sys.argv[i].lower() == u'file':
- message = readFile(sys.argv[i+1], encoding=GM_Globals[GM_SYS_ENCODING])
+ filename = sys.argv[i+1]
i += 2
+ i, encoding = getCharSet(i)
+ message = readFile(filename, encoding=encoding)
else:
print u'ERROR: %s is not a valid argument for "gam vacation"' % sys.argv[i]
sys.exit(2)