[-]
[+]
|
Changed |
seamonkey.changes
|
|
[-]
[+]
|
Changed |
seamonkey.spec
^
|
|
[-]
[+]
|
Changed |
abuild.patch
^
|
@@ -126,3 +126,106 @@
PRInt32 thisLine;
nsresult result = iter->FindLineContaining(this, &thisLine);
+--- layout/base/nsCSSRendering.cpp.orig 2006-10-25 23:59:19.000000000 +0200
++++ layout/base/nsCSSRendering.cpp 2006-10-26 00:00:04.000000000 +0200
+@@ -1000,14 +1000,14 @@
+ FillOrInvertRect(aContext, dashRect.x, borderOutside.y,dashRect.width, dashRect.height-adjust,isInvert);
+ FillOrInvertRect(aContext,dashRect.x,(borderOutside.YMost()-(dashRect.height-adjust)),dashRect.width, dashRect.height-adjust,isInvert);
+ currRect.y += (dashRect.height-adjust);
+- temp = temp-= (dashRect.height-adjust);
++ temp -= (dashRect.height-adjust);
+ } else {
+ adjust = (temp%dashRect.width)/2; // adjust a tad longer
+ // draw in the left and right
+ FillOrInvertRect(aContext, dashRect.x, borderOutside.y,dashRect.width, dashRect.height+adjust,isInvert);
+ FillOrInvertRect(aContext, dashRect.x,(borderOutside.YMost()-(dashRect.height+adjust)),dashRect.width, dashRect.height+adjust,isInvert);
+ currRect.y += (dashRect.height+adjust);
+- temp = temp-= (dashRect.height+adjust);
++ temp -= (dashRect.height+adjust);
+ }
+
+ if( temp > ywidth)
+@@ -1066,14 +1066,14 @@
+ FillOrInvertRect(aContext, borderOutside.x,dashRect.y,dashRect.width-adjust,dashRect.height,isInvert);
+ FillOrInvertRect(aContext, (borderOutside.XMost()-(dashRect.width-adjust)),dashRect.y,dashRect.width-adjust,dashRect.height,isInvert);
+ currRect.x += (dashRect.width-adjust);
+- temp = temp-= (dashRect.width-adjust);
++ temp -= (dashRect.width-adjust);
+ } else {
+ adjust = (temp%dashRect.width)/2;
+ // draw in the left and right
+ FillOrInvertRect(aContext, borderOutside.x,dashRect.y,dashRect.width+adjust,dashRect.height,isInvert);
+ FillOrInvertRect(aContext, (borderOutside.XMost()-(dashRect.width+adjust)),dashRect.y,dashRect.width+adjust,dashRect.height,isInvert);
+ currRect.x += (dashRect.width+adjust);
+- temp = temp-= (dashRect.width+adjust);
++ temp -= (dashRect.width+adjust);
+ }
+
+
+--- layout/xul/base/src/nsBox.cpp.orig 2006-10-26 00:00:26.000000000 +0200
++++ layout/xul/base/src/nsBox.cpp 2006-10-26 00:01:30.000000000 +0200
+@@ -863,7 +863,7 @@
+ while (box) {
+ nsRect* overflowArea = box->GetOverflowAreaProperty();
+ nsRect bounds = overflowArea ? *overflowArea + box->GetPosition() :
+- bounds = box->GetRect();
++ box->GetRect();
+ rect.UnionRect(rect, bounds);
+
+ box->GetNextBox(&box);
+--- intl/unicharutil/src/nsEntityConverter.cpp.orig 2005-04-02 20:44:00.000000000 +0200
++++ intl/unicharutil/src/nsEntityConverter.cpp 2006-10-26 00:07:24.000000000 +0200
+@@ -236,7 +236,8 @@
+ if (IS_HIGH_SURROGATE(inString[i]) &&
+ i + 2 < len &&
+ IS_LOW_SURROGATE(inString[i + 1])) {
+- key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[++i]), 10);
++ key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[i + 1]), 10);
++ ++i;
+ }
+ else {
+ key.AppendInt(inString[i],10);
+--- content/events/src/nsEventStateManager.cpp.orig 2006-08-06 00:19:17.000000000 +0200
++++ content/events/src/nsEventStateManager.cpp 2006-10-26 00:11:16.000000000 +0200
+@@ -4301,7 +4301,7 @@
+ do_QueryInterface(GetDocumentOuterWindow(mDocument));
+ if (newWindow) {
+ nsIFocusController *newFocusController =
+- newFocusController = newWindow->GetRootFocusController();
++ newWindow->GetRootFocusController();
+ nsCOMPtr<nsPIDOMWindow> oldWindow =
+ do_QueryInterface(GetDocumentOuterWindow(gLastFocusedDocument));
+ if (oldWindow) {
+--- netwerk/cache/src/nsDiskCacheMap.h.orig 2006-02-04 23:01:22.000000000 +0100
++++ netwerk/cache/src/nsDiskCacheMap.h 2006-10-26 00:15:09.000000000 +0200
+@@ -168,7 +168,7 @@
+
+ // set blockCount
+ NS_ASSERTION( (blockCount>=1) && (blockCount<=4),"invalid block count");
+- blockCount = --blockCount;
++ --blockCount;
+ mDataLocation |= (blockCount << eExtraBlocksOffset) & eExtraBlocksMask;
+
+ mDataLocation |= eLocationInitializedMask;
+@@ -236,7 +236,7 @@
+
+ // set blockCount
+ NS_ASSERTION( (blockCount>=1) && (blockCount<=4),"invalid block count");
+- blockCount = --blockCount;
++ --blockCount;
+ mMetaLocation |= (blockCount << eExtraBlocksOffset) & eExtraBlocksMask;
+
+ mMetaLocation |= eLocationInitializedMask;
+Index: mailnews/local/src/nsMailboxService.cpp
+===================================================================
+--- mailnews/local/src/nsMailboxService.cpp.orig
++++ mailnews/local/src/nsMailboxService.cpp
+@@ -228,7 +228,7 @@ nsresult nsMailboxService::FetchMessage(
+
+ // this happens with forward inline of message/rfc822 attachment
+ // opened in a stand-alone msg window.
+- PRInt32 typeIndex = typeIndex = uriString.Find("&type=application/x-message-display");
++ PRInt32 typeIndex = uriString.Find("&type=application/x-message-display");
+ if (typeIndex != kNotFound)
+ {
+ uriString.Cut(typeIndex, sizeof("&type=application/x-message-display") - 1);
|
[-]
[+]
|
Deleted |
gcc-undefined-ops.patch
^
|
@@ -1,90 +0,0 @@
---- layout/base/nsCSSRendering.cpp.orig 2006-10-25 23:59:19.000000000 +0200
-+++ layout/base/nsCSSRendering.cpp 2006-10-26 00:00:04.000000000 +0200
-@@ -1000,14 +1000,14 @@
- FillOrInvertRect(aContext, dashRect.x, borderOutside.y,dashRect.width, dashRect.height-adjust,isInvert);
- FillOrInvertRect(aContext,dashRect.x,(borderOutside.YMost()-(dashRect.height-adjust)),dashRect.width, dashRect.height-adjust,isInvert);
- currRect.y += (dashRect.height-adjust);
-- temp = temp-= (dashRect.height-adjust);
-+ temp -= (dashRect.height-adjust);
- } else {
- adjust = (temp%dashRect.width)/2; // adjust a tad longer
- // draw in the left and right
- FillOrInvertRect(aContext, dashRect.x, borderOutside.y,dashRect.width, dashRect.height+adjust,isInvert);
- FillOrInvertRect(aContext, dashRect.x,(borderOutside.YMost()-(dashRect.height+adjust)),dashRect.width, dashRect.height+adjust,isInvert);
- currRect.y += (dashRect.height+adjust);
-- temp = temp-= (dashRect.height+adjust);
-+ temp -= (dashRect.height+adjust);
- }
-
- if( temp > ywidth)
-@@ -1066,14 +1066,14 @@
- FillOrInvertRect(aContext, borderOutside.x,dashRect.y,dashRect.width-adjust,dashRect.height,isInvert);
- FillOrInvertRect(aContext, (borderOutside.XMost()-(dashRect.width-adjust)),dashRect.y,dashRect.width-adjust,dashRect.height,isInvert);
- currRect.x += (dashRect.width-adjust);
-- temp = temp-= (dashRect.width-adjust);
-+ temp -= (dashRect.width-adjust);
- } else {
- adjust = (temp%dashRect.width)/2;
- // draw in the left and right
- FillOrInvertRect(aContext, borderOutside.x,dashRect.y,dashRect.width+adjust,dashRect.height,isInvert);
- FillOrInvertRect(aContext, (borderOutside.XMost()-(dashRect.width+adjust)),dashRect.y,dashRect.width+adjust,dashRect.height,isInvert);
- currRect.x += (dashRect.width+adjust);
-- temp = temp-= (dashRect.width+adjust);
-+ temp -= (dashRect.width+adjust);
- }
-
-
---- layout/xul/base/src/nsBox.cpp.orig 2006-10-26 00:00:26.000000000 +0200
-+++ layout/xul/base/src/nsBox.cpp 2006-10-26 00:01:30.000000000 +0200
-@@ -863,7 +863,7 @@
- while (box) {
- nsRect* overflowArea = box->GetOverflowAreaProperty();
- nsRect bounds = overflowArea ? *overflowArea + box->GetPosition() :
-- bounds = box->GetRect();
-+ box->GetRect();
- rect.UnionRect(rect, bounds);
-
- box->GetNextBox(&box);
---- intl/unicharutil/src/nsEntityConverter.cpp.orig 2005-04-02 20:44:00.000000000 +0200
-+++ intl/unicharutil/src/nsEntityConverter.cpp 2006-10-26 00:07:24.000000000 +0200
-@@ -236,7 +236,8 @@
- if (IS_HIGH_SURROGATE(inString[i]) &&
- i + 2 < len &&
- IS_LOW_SURROGATE(inString[i + 1])) {
-- key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[++i]), 10);
-+ key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[i + 1]), 10);
-+ ++i;
- }
- else {
- key.AppendInt(inString[i],10);
---- content/events/src/nsEventStateManager.cpp.orig 2006-08-06 00:19:17.000000000 +0200
-+++ content/events/src/nsEventStateManager.cpp 2006-10-26 00:11:16.000000000 +0200
-@@ -4301,7 +4301,7 @@
- do_QueryInterface(GetDocumentOuterWindow(mDocument));
- if (newWindow) {
- nsIFocusController *newFocusController =
-- newFocusController = newWindow->GetRootFocusController();
-+ newWindow->GetRootFocusController();
- nsCOMPtr<nsPIDOMWindow> oldWindow =
- do_QueryInterface(GetDocumentOuterWindow(gLastFocusedDocument));
- if (oldWindow) {
---- netwerk/cache/src/nsDiskCacheMap.h.orig 2006-02-04 23:01:22.000000000 +0100
-+++ netwerk/cache/src/nsDiskCacheMap.h 2006-10-26 00:15:09.000000000 +0200
-@@ -168,7 +168,7 @@
-
- // set blockCount
- NS_ASSERTION( (blockCount>=1) && (blockCount<=4),"invalid block count");
-- blockCount = --blockCount;
-+ --blockCount;
- mDataLocation |= (blockCount << eExtraBlocksOffset) & eExtraBlocksMask;
-
- mDataLocation |= eLocationInitializedMask;
-@@ -236,7 +236,7 @@
-
- // set blockCount
- NS_ASSERTION( (blockCount>=1) && (blockCount<=4),"invalid block count");
-- blockCount = --blockCount;
-+ --blockCount;
- mMetaLocation |= (blockCount << eExtraBlocksOffset) & eExtraBlocksMask;
-
- mMetaLocation |= eLocationInitializedMask;
|
[-]
[+]
|
Changed |
mozilla-bookmarks.diff
^
|
@@ -4,7 +4,7 @@
<DL><p>
<DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ID="NC:PersonalToolbarFolder">Personal Toolbar Folder</H3>
<DL><p>
-+ <DT><A HREF="http://www.suse.com/">SUSE LINUX</A>
++ <DT><A HREF="http://www.opensuse.org/">openSUSE</A>
<DT><A HREF="http://www.mozilla.org/">mozilla.org</A>
<DT><A HREF="http://www.mozillazine.org/">mozillaZine</A>
<DT><A HREF="http://www.mozdev.org/">mozdev.org</A>
|
[-]
[+]
|
Added |
unused-includes.patch
^
|
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ipf32.cpp
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ipf32.cpp
+@@ -39,8 +39,6 @@
+
+ #include "xptcprivate.h"
+
+-#include <iostream.h>
+-
+ // "This code is for IA64 only"
+
+
|
[-]
[+]
|
Deleted |
enigmail-0.95.6.tar.gz/lang/.#Makefile.in.1.26
^
|
@@ -1,48 +0,0 @@
-#!gmake
-#
-# The contents of this file are subject to the Mozilla Public
-# License Version 1.1 (the "MPL"); you may not use this file
-# except in compliance with the MPL. You may obtain a copy of
-# the MPL at http://www.mozilla.org/MPL/
-#
-# Software distributed under the MPL is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the MPL for the specific language governing
-# rights and limitations under the MPL.
-#
-# The Original Code is Enigmail.
-#
-# The Initial Developer of the Original Code is Ramalingam Saravanan.
-# Portions created by Ramalingam Saravanan <svn@xmlterm.org> are
-# Copyright (C) 2001 Ramalingam Saravanan. All Rights Reserved.
-#
-# Contributor(s):
-#
-# Alternatively, the contents of this file may be used under the
-# terms of the GNU General Public License (the "GPL"), in which case
-# the provisions of the GPL are applicable instead of
-# those above. If you wish to allow use of your version of this
-# file only under the terms of the GPL and not to allow
-# others to use your version of this file under the MPL, indicate
-# your decision by deleting the provisions above and replace them
-# with the notice and other provisions required by the GPL.
-# If you do not delete the provisions above, a recipient
-# may use your version of this file under either the MPL or the
-# GPL.
-#
-
-# Makefile for lang directory
-
-# Specify these as parameters to the make command
-
-DEPTH = ../../../..
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-include $(topsrcdir)/config/rules.mk
-
-export::
- ./make-lang-xpi.pl current-languages.txt
|
[-]
[+]
|
Deleted |
enigmail-0.95.6.tar.gz/lang/.#current-languages.txt.1.1
^
|
@@ -1,17 +0,0 @@
-ca-AD
-de-AT
-de-DE
-el
-es-ES
-fi-FI
-fr-FR
-hu-HU
-it-IT
-ja-JP
-ko-KR
-nb-NO
-pl-PL
-pt-BR
-ru-RU
-sv-SE
-zh-CN
|
[-]
[+]
|
Deleted |
enigmail-0.95.6.tar.gz/lang/.#make-lang-xpi.pl.1.2
^
|
@@ -1,37 +0,0 @@
-#!/usr/bin/perl
-
-# generate jar.mn from a list of language packs
-
-if (@ARGV != 1) {
- print "Usage: make-lang-xpi.pl <input-file>\n";
- exit -1;
-}
-
-my ($inputfile) = @ARGV;
-
-open INFILE, "$inputfile";
-open OUTFILE, ">jar.mn";
-
-print OUTFILE "enigmail-locale.jar:\n";
-
-my @files = ("contents.rdf",
- "enigmail.properties",
- "enigmail.dtd",
- "am-enigprefs.properties",
- "upgrade_080.html",
- "help/rulesEditor.html",
- "help/compose.html",
- "help/messenger.html",
- "help/editRcptRule.html");
-
-while ($_ = <INFILE>) {
- #print STDERR $_;
- chomp();
- $lang = $_;
- foreach $file (@files) {
- printf OUTFILE "\tlocale/%s/enigmail/%s\t(%s/%s)\n", $lang, $file, $lang, $file;
- }
-}
-
-close INFILE;
-close OUTFILE;
|
[-]
[+]
|
Deleted |
enigmail-0.95.6.tar.gz/package/enigmail.js.orig
^
|
@@ -1,5942 +0,0 @@
-/*
- * The contents of this file are subject to the Mozilla Public
- * License Version 1.1 (the "MPL"); you may not use this file
- * except in compliance with the MPL. You may obtain a copy of
- * the MPL at http://www.mozilla.org/MPL/
- *
- * Software distributed under the MPL is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the MPL for the specific language governing
- * rights and limitations under the MPL.
- *
- * The Original Code is Enigmail.
- *
- * The Initial Developer of the Original Code is Ramalingam Saravanan.
- * Portions created by Ramalingam Saravanan <svn@xmlterm.org> are
- * Copyright (C) 2001 Ramalingam Saravanan. All Rights Reserved.
- *
- * Contributor(s):
- * Patrick Brunschwig <patrick.brunschwig@gmx.net>
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License (the "GPL"), in which case
- * the provisions of the GPL are applicable instead of
- * those above. If you wish to allow use of your version of this
- * file only under the terms of the GPL and not to allow
- * others to use your version of this file under the MPL, indicate
- * your decision by deleting the provisions above and replace them
- * with the notice and other provisions required by the GPL.
- * If you do not delete the provisions above, a recipient
- * may use your version of this file under either the MPL or the
- * GPL.
- */
-
-// Maximum size of message directly processed by Enigmail
-const MSG_BUFFER_SIZE = 98304; // 96 kB
-const MAX_MSG_BUFFER_SIZE = 512000 // slightly less than 512 kB
-
-const ERROR_BUFFER_SIZE = 32768; // 32 kB
-
-const PGP_BATCH_OPTS = " +batchmode +force";
-const GPG_BATCH_OPTS = " --batch --no-tty --status-fd 2";
-
-const gDummyPKCS7 = 'Content-Type: multipart/mixed;\r\n boundary="------------060503030402050102040303\r\n\r\nThis is a multi-part message in MIME format.\r\n--------------060503030402050102040303\r\nContent-Type: application/x-pkcs7-mime\r\nContent-Transfer-Encoding: 8bit\r\n\r\n\r\n--------------060503030402050102040303\r\nContent-Type: application/x-enigmail-dummy\r\nContent-Transfer-Encoding: 8bit\r\n\r\n\r\n--------------060503030402050102040303--\r\n';
-
-/* Implementations supplied by this module */
-const NS_ENIGMAIL_CONTRACTID = "@mozdev.org/enigmail/enigmail;1";
-const NS_PGP_MODULE_CONTRACTID = "@mozilla.org/mimecth/pgp;1";
-
-const NS_ENIGMAILPROTOCOLHANDLER_CONTRACTID =
- "@mozilla.org/network/protocol;1?name=enigmail";
-
-const NS_ENIGMAIL_CID =
- Components.ID("{847b3a01-7ab1-11d4-8f02-006008948af5}");
-
-const NS_ENIGMAILPROTOCOLHANDLER_CID =
- Components.ID("{847b3a11-7ab1-11d4-8f02-006008948af5}");
-
-const NS_PGP_MODULE_CID =
- Components.ID("{847b3af1-7ab1-11d4-8f02-006008948af5}");
-
-const NS_ENIGMSGCOMPOSE_CID =
- Components.ID("{847b3a21-7ab1-11d4-8f02-006008948af5}");
-
-const NS_ENIGMSGCOMPOSEFACTORY_CID =
- Components.ID("{847b3a22-7ab1-11d4-8f02-006008948af5}");
-
-const NS_ENIGCLINE_SERVICE_CID =
- Components.ID("{847b3ab1-7ab1-11d4-8f02-006008948af5}");
-
-// Contract IDs and CIDs used by this module
-const NS_IPCSERVICE_CONTRACTID = "@mozilla.org/process/ipc-service;1";
-const NS_IPCBUFFER_CONTRACTID = "@mozilla.org/process/ipc-buffer;1";
-const NS_PIPECONSOLE_CONTRACTID = "@mozilla.org/process/pipe-console;1";
-const NS_PIPETRANSPORT_CONTRACTID="@mozilla.org/process/pipe-transport;1";
-const NS_PROCESSINFO_CONTRACTID = "@mozilla.org/xpcom/process-info;1";
-const NS_MSGCOMPOSESECURE_CONTRACTID = "@mozilla.org/messengercompose/composesecure;1";
-const NS_ENIGMSGCOMPOSE_CONTRACTID = "@mozilla.org/enigmail/composesecure;1";
-const NS_ENIGMSGCOMPOSEFACTORY_CONTRACTID = "@mozilla.org/enigmail/composesecure-factory;1";
-const NS_ENIGMIMESERVICE_CONTRACTID = "@mozdev.org/enigmail/enigmimeservice;1";
-const NS_SIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const NS_TIMER_CONTRACTID = "@mozilla.org/timer;1";
-const NS_OBSERVERSERVICE_CONTRACTID = "@mozilla.org/observer-service;1";
-const NS_PROMPTSERVICE_CONTRACTID = "@mozilla.org/embedcomp/prompt-service;1";
-const ASS_CONTRACTID = "@mozilla.org/appshell/appShellService;1";
-const WMEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1";
-const NS_IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID = "@mozilla.org/intl/scriptableunicodeconverter";
-const NS_SCRIPTABLEINPUTSTREAM_CONTRACTID = "@mozilla.org/scriptableinputstream;1"
-const ENIG_STRINGBUNDLE_CONTRACTID = "@mozilla.org/intl/stringbundle;1";
-const NS_PREFS_SERVICE_CID = "@mozilla.org/preferences-service;1";
-const NS_DOMPARSER_CONTRACTID = "@mozilla.org/xmlextras/domparser;1";
-const NS_DOMSERIALIZER_CONTRACTID = "@mozilla.org/xmlextras/xmlserializer;1";
-const NS_CATMAN_CONTRACTID = "@mozilla.org/categorymanager;1";
-const NS_CLINE_SERVICE_CONTRACTID = "@mozilla.org/enigmail/cline-handler;1";
-
-// Interfaces
-const nsISupports = Components.interfaces.nsISupports;
-const nsIObserver = Components.interfaces.nsIObserver;
-const nsILocalFile = Components.interfaces.nsILocalFile;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIIPCService = Components.interfaces.nsIIPCService;
-const nsIPipeConsole = Components.interfaces.nsIPipeConsole;
-const nsIProcessInfo = Components.interfaces.nsIProcessInfo;
-const nsIEnigmail = Components.interfaces.nsIEnigmail;
-//const nsIPGPModule = Components.interfaces.nsIPGPModule;
-//const nsIPGPMsgBody = Components.interfaces.nsIPGPMsgBody;
-//const nsIPGPMsgHeader = Components.interfaces.nsIPGPMsgHeader;
-const nsIEnigStrBundle = Components.interfaces.nsIStringBundleService;
-const nsICmdLineHandler = Components.interfaces.nsICmdLineHandler;
-const nsICategoryManager = Components.interfaces.nsICategoryManager;
-const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher;
-const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler;
-const nsIWindowsRegKey = Components.interfaces.nsIWindowsRegKey;
-
-const NS_XPCOM_SHUTDOWN_OBSERVER_ID = "xpcom-shutdown";
-
-///////////////////////////////////////////////////////////////////////////////
-// Global variables
-
-const GPG_COMMENT_OPT = "Using GnuPG with %s - http://enigmail.mozdev.org";
-
-var gLogLevel = 3; // Output only errors/warnings by default
-
-var gEnigmailSvc = null; // Global Enigmail Service
-var gEnvList = []; // Global environment list
-var gEnigStrBundle; // Global string bundle
-
-// GPG status flags mapping (see doc/DETAILS file in the GnuPG distribution)
-var gStatusFlags = {GOODSIG: nsIEnigmail.GOOD_SIGNATURE,
- BADSIG: nsIEnigmail.BAD_SIGNATURE,
- ERRSIG: nsIEnigmail.UNVERIFIED_SIGNATURE,
- EXPSIG: nsIEnigmail.EXPIRED_SIGNATURE,
- REVKEYSIG: nsIEnigmail.GOOD_SIGNATURE,
- EXPKEYSIG: nsIEnigmail.EXPIRED_KEY_SIGNATURE,
- KEYEXPIRED: nsIEnigmail.EXPIRED_KEY,
- KEYREVOKED: nsIEnigmail.REVOKED_KEY,
- NO_PUBKEY: nsIEnigmail.NO_PUBKEY,
- NO_SECKEY: nsIEnigmail.NO_SECKEY,
- IMPORTED: nsIEnigmail.IMPORTED_KEY,
- INV_RECP: nsIEnigmail.INVALID_RECIPIENT,
- MISSING_PASSPHRASE: nsIEnigmail.MISSING_PASSPHRASE,
- BAD_PASSPHRASE: nsIEnigmail.BAD_PASSPHRASE,
- BADARMOR: nsIEnigmail.BAD_ARMOR,
- NODATA: nsIEnigmail.NODATA,
- ERROR: nsIEnigmail.BAD_SIGNATURE | nsIEnigmail.DECRYPTION_FAILED,
- DECRYPTION_FAILED: nsIEnigmail.DECRYPTION_FAILED,
- DECRYPTION_OKAY: nsIEnigmail.DECRYPTION_OKAY,
- TRUST_UNDEFINED: nsIEnigmail.UNTRUSTED_IDENTITY,
- TRUST_NEVER: nsIEnigmail.UNTRUSTED_IDENTITY,
- TRUST_MARGINAL: nsIEnigmail.UNTRUSTED_IDENTITY,
- TRUST_FULLY: nsIEnigmail.TRUSTED_IDENTITY,
- TRUST_ULTIMATE: nsIEnigmail.TRUSTED_IDENTITY,
- CARDCTRL: nsIEnigmail.NO_SC_AVAILABLE,
- SC_OP_FAILURE: nsIEnigmail.SC_OP_FAILURE
- };
-
-var gCachedPassphrase = null;
-var gCacheTimer = null;
-
-///////////////////////////////////////////////////////////////////////////////
-// File read/write operations
-
-const NS_LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1";
-
-const NS_LOCALFILEOUTPUTSTREAM_CONTRACTID =
- "@mozilla.org/network/file-output-stream;1";
-
-const NS_RDONLY = 0x01;
-const NS_WRONLY = 0x02;
-const NS_CREATE_FILE = 0x08;
-const NS_TRUNCATE = 0x20;
-const DEFAULT_FILE_PERMS = 0600;
-
-const GET_BOOL = "GET_BOOL";
-const GET_LINE = "GET_LINE";
-const GET_HIDDEN = "GET_HIDDEN";
-
-const BUTTON_POS_0 = 1;
-const BUTTON_POS_1 = 1 << 8;
-const BUTTON_POS_2 = 1 << 16;
-
-const KEYTYPE_DSA = 1;
-const KEYTYPE_RSA = 2;
-
-const ENC_TYPE_MSG = 0;
-const ENC_TYPE_ATTACH_BINARY = 1;
-const ENC_TYPE_ATTACH_ASCII = 2;
-
-var gMimeHashAlgorithms = [null, "sha1", "ripemd160", "sha256", "sha384", "sha512"];
-
-function CreateFileStream(filePath, permissions) {
-
- //DEBUG_LOG("enigmail.js: CreateFileStream: file="+filePath+"\n");
-
- try {
- var localFile = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(Components.interfaces.nsILocalFile);
-
- localFile.initWithPath(filePath);
-
- if (localFile.exists()) {
-
- if (localFile.isDirectory() || !localFile.isWritable())
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!permissions)
- permissions = localFile.permissions;
- }
-
- if (!permissions)
- permissions = DEFAULT_FILE_PERMS;
-
- var flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE;
-
- var fileStream = Components.classes[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Components.interfaces.nsIFileOutputStream);
-
- fileStream.init(localFile, flags, permissions, 0);
-
- return fileStream;
-
- } catch (ex) {
- ERROR_LOG("enigmail.js: CreateFileStream: Failed to create "+filePath+"\n");
- return null;
- }
-}
-
-function WriteFileContents(filePath, data, permissions) {
-
- DEBUG_LOG("enigmail.js: WriteFileContents: file="+filePath+"\n");
-
- try {
- var fileOutStream = CreateFileStream(filePath, permissions);
-
- if (data.length) {
- if (fileOutStream.write(data, data.length) != data.length)
- throw Components.results.NS_ERROR_FAILURE;
-
- fileOutStream.flush();
- }
- fileOutStream.close();
-
- } catch (ex) {
- ERROR_LOG("enigmail.js: WriteFileContents: Failed to write to "+filePath+"\n");
- return false;
- }
-
- return true;
-}
-
-// Read the contents of a file into a string
-
-function EnigReadFile(filePath) {
-
-// @filePath: nsILocalFile
-
- if (filePath.exists()) {
-
- var ioServ = Components.classes[NS_IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService);
- if (!ioServ)
- throw Components.results.NS_ERROR_FAILURE;
-
- var fileURI = ioServ.newFileURI(filePath);
- var fileChannel = ioServ.newChannel(fileURI.asciiSpec, null, null);
-
- var rawInStream = fileChannel.open();
-
- var scriptableInStream = Components.classes[NS_SCRIPTABLEINPUTSTREAM_CONTRACTID].createInstance(Components.interfaces.nsIScriptableInputStream);
- scriptableInStream.init(rawInStream);
- var available = scriptableInStream.available()
- var fileContents = scriptableInStream.read(available);
- scriptableInStream.close();
- return fileContents;
- }
- return "";
-}
-
-
-// Pack/unpack: Network (big-endian) byte order
-
-function pack(value, bytes) {
- var str = '';
- var mask = 0xff;
- for (var j=0; j < bytes; j++) {
- str = String.fromCharCode( (value & mask) >> j*8 ) + str;
- mask <<= 8;
- }
-
- return str;
-}
-
-function unpack(str) {
- var len = str.length;
- var value = 0;
-
- for (var j=0; j < len; j++) {
- value <<= 8;
- value |= str.charCodeAt(j);
- }
-
- return value;
-}
-
-const hexTable = "0123456789abcdef";
-
-function bytesToHex(str) {
- var len = str.length;
-
- var hex = '';
- for (var j=0; j < len; j++) {
- var charCode = str.charCodeAt(j);
- hex += hexTable.charAt((charCode & 0xf0) >> 4) +
- hexTable.charAt((charCode & 0x0f));
- }
-
- return hex;
-}
-
-function hexToBytes(hex) {
- hex = hex.toLowerCase();
-
- var bytes = (1+hex.length)/2;
-
- var str = '';
- for (var j=0; j < bytes; j++) {
- var loc1 = hexTable.indexOf(hex.charAt(2*j));
- var loc2 = 0;
-
- if ((2*j+1) < hex.length)
- loc2 = hexTable.indexOf(hex.charAt(2*j+1));
-
- if (loc1 < 0) loc1 = 0;
- if (loc2 < 0) loc2 = 0;
-
- str += String.fromCharCode((loc1 << 4) + loc2);
- }
-
- return str;
-}
-///////////////////////////////////////////////////////////////////////////////
-
-function WRITE_LOG(str) {
- function f00(val, digits) {
- return ("0000"+val.toString()).substr(-digits);
- }
-
- var d = new Date();
- var datStr=d.getFullYear()+"-"+f00(d.getMonth()+1, 2)+"-"+f00(d.getDate(),2)+" "+f00(d.getHours(),2)+":"+f00(d.getMinutes(),2)+":"+f00(d.getSeconds(),2)+"."+f00(d.getMilliseconds(),3)+" ";
- if (gLogLevel >= 4)
- dump(datStr+str);
-
- if (gEnigmailSvc && gEnigmailSvc.logFileStream) {
- gEnigmailSvc.logFileStream.write(datStr, datStr.length);
- gEnigmailSvc.logFileStream.write(str, str.length);
- //gEnigmailSvc.logFileStream.flush();
- }
-}
-
-function DEBUG_LOG(str) {
- if ((gLogLevel >= 4) || (gEnigmailSvc && gEnigmailSvc.logFileStream))
- WRITE_LOG(str);
-}
-
-function WARNING_LOG(str) {
- if (gLogLevel >= 3)
- WRITE_LOG(str);
-
- if (gEnigmailSvc && gEnigmailSvc.console)
- gEnigmailSvc.console.write(str);
-}
-
-function ERROR_LOG(str) {
- if (gLogLevel >= 2)
- WRITE_LOG(str);
-
- if (gEnigmailSvc && gEnigmailSvc.console)
- gEnigmailSvc.console.write(str);
-}
-
-function CONSOLE_LOG(str) {
- if (gLogLevel >= 3)
- WRITE_LOG(str);
-
- if (gEnigmailSvc && gEnigmailSvc.console)
- gEnigmailSvc.console.write(str);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-var EnigModuleObj = {
- registerSelf: function (compRegistrar, moduleFile,
- registryLocation, componentType)
- {
- WRITE_LOG("enigmail.js: Registering components\n");
-
- compRegistrar = compRegistrar.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-
- compRegistrar.registerFactoryLocation(NS_ENIGMAIL_CID,
- "Enigmail",
- NS_ENIGMAIL_CONTRACTID,
- moduleFile, registryLocation,
- componentType);
-
- compRegistrar.registerFactoryLocation(NS_ENIGMAILPROTOCOLHANDLER_CID,
- "Enigmail Protocol Handler",
- NS_ENIGMAILPROTOCOLHANDLER_CONTRACTID,
- moduleFile, registryLocation,
- componentType);
-
- compRegistrar.registerFactoryLocation(NS_PGP_MODULE_CID,
- "PGP Module",
- NS_PGP_MODULE_CONTRACTID,
- moduleFile, registryLocation,
- componentType);
-
- compRegistrar.registerFactoryLocation(NS_ENIGCLINE_SERVICE_CID,
- "Enigmail Key Management CommandLine Service",
- NS_CLINE_SERVICE_CONTRACTID,
- moduleFile,
- registryLocation,
- componentType);
-
- var catman = Components.classes[NS_CATMAN_CONTRACTID].getService(nsICategoryManager);
- catman.addCategoryEntry("command-line-handler",
- "cline-enigmail",
- NS_CLINE_SERVICE_CONTRACTID, true, true);
-
- WRITE_LOG("enigmail.js: Registered components\n");
- },
-
- unregisterSelf: function(compRegistrar, moduleFile, registryLocation)
- {
- DEBUG_LOG("enigmail.js: unregisterSelf\n");
- compRegistrar = compRegistrar.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-
- compRegistrar.unregisterFactoryLocation(NS_ENIGCLINE_SERVICE_CID,
- moduleFile);
- var catman = Components.classes[NS_CATMAN_CONTRACTID]
- .getService(nsICategoryManager);
- catman.deleteCategoryEntry("command-line-handler",
- NS_CLINE_SERVICE_CONTRACTID, true);
-
- },
-
- getClassObject: function (compRegistrar, cid, iid) {
- DEBUG_LOG("enigmail.js: getClassObject: cid="+cid+"\n");
-
- if (!iid.equals(Components.interfaces.nsIFactory))
- throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
-
- if (gEnigmailSvc == null) {
- // Create Enigmail Service (delay initialization)
- gEnigmailSvc = new Enigmail(false);
- }
-
- if (cid.equals(NS_ENIGCLINE_SERVICE_CID)) {
- return EnigCmdLineHandler.QueryInterface(iid);
- }
-
- if (cid.equals(NS_ENIGMAIL_CID)) {
- return new EnigmailFactory();
- }
-
- if (cid.equals(NS_ENIGMAILPROTOCOLHANDLER_CID)) {
- return new EnigmailProtocolHandlerFactory();
- }
-
- if (cid.equals(NS_PGP_MODULE_CID)) {
- return new PGPModuleFactory();
- }
-
- return null;
- },
-
- canUnload: function(compRegistrar)
- {
- DEBUG_LOG("enigmail.js: canUnload:\n");
- return true;
- }
-};
-
-/* Module entry point */
-function NSGetModule(compRegistrar, moduleFile) {
- DEBUG_LOG("enigmail.js: NSGetModule:\n");
- return EnigModuleObj;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-function EnigmailFactory()
-{
-}
-
-EnigmailFactory.prototype = {
- QueryInterface: function (iid) {
-
- //DEBUG_LOG("EnigmailFactory.QueryInterface:"+iid+"\n");
- if (!iid.equals(Components.interfaces.nsIFactory) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- return this;
- },
-
- createInstance: function (outer, iid) {
- //DEBUG_LOG("EnigmailFactory.createInstance:\n");
- if (!gEnigmailSvc)
- throw Components.results.NS_ERROR_NOT_D;
-
- return gEnigmailSvc;
- }
-}
-
-function PGPModuleFactory()
-{
-}
-
-PGPModuleFactory.prototype = {
- QueryInterface: function (iid) {
-
- //DEBUG_LOG("PGPModuleFactory.QueryInterface:"+iid+"\n");
- if (!iid.equals(Components.interfaces.nsIFactory) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- return this;
- },
-
- createInstance: function (outer, iid) {
- DEBUG_LOG("PGPModuleFactory.createInstance:\n");
- return new PGPModule();
- }
-}
-
-function PGPMsgHeader(aTo, aCc, aBcc)
-{
- this.to = aTo;
- this.cc = aCc;
- this.bcc = aBcc;
-}
-
-PGPMsgHeader.prototype = {
-
- to: "",
- cc: "",
- bcc: "",
-
- QueryInterface: function (iid) {
- DEBUG_LOG("PGPMsgHeader.QueryInterface:\n");
-
- if (!iid.equals(nsIPGPMsgHeader) && !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Utility functions
-///////////////////////////////////////////////////////////////////////////////
-
-function isAbsolutePath(filePath, isDosLike) {
- // Check if absolute path
- if (isDosLike) {
- return (filePath.search(/^\w+:\\/) == 0);
- } else {
- return (filePath.search(/^\//) == 0)
- }
-}
-
-function ResolvePath(filePath, envPath, isDosLike) {
- DEBUG_LOG("enigmail.js: ResolvePath: filePath="+filePath+"\n");
-
- if (isAbsolutePath(filePath, isDosLike))
- return filePath;
-
- if (!envPath)
- return null;
-
- var pathDirs = envPath.split(isDosLike ? ";" : ":");
-
- for (var j=0; j<pathDirs.length; j++) {
- try {
- var pathDir = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
-
- pathDir.initWithPath(pathDirs[j]);
-
- if (pathDir.exists() && pathDir.isDirectory()) {
- pathDir.appendRelativePath(filePath);
-
- if (pathDir.exists()) {
- return pathDir;
- }
- }
- } catch (ex) {
- }
- }
-
- return null;
-}
-
-function EnigConvertToUnicode(text, charset) {
- DEBUG_LOG("enigmail.js: EnigConvertToUnicode: "+charset+"\n");
-
- if (!text || !charset || (charset.toLowerCase() == "iso-8859-1"))
- return text;
-
- // Encode plaintext
- try {
- var unicodeConv = Components.classes[NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID].getService(Components.interfaces.nsIScriptableUnicodeConverter);
-
- unicodeConv.charset = charset;
- return unicodeConv.ConvertToUnicode(text);
-
- } catch (ex) {
- return text;
- }
-}
-
-function EnigConvertFromUnicode(text, charset) {
- DEBUG_LOG("enigmail.js: EnigConvertFromUnicode: "+charset+"\n");
-
- if (!text)
- return "";
-
- if (! charset) charset="utf-8";
-
- // Encode plaintext
- try {
- var unicodeConv = Components.classes[NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID].getService(Components.interfaces.nsIScriptableUnicodeConverter);
-
- unicodeConv.charset = charset;
- return unicodeConv.ConvertFromUnicode(text);
-
- } catch (ex) {
- DEBUG_LOG("enigmail.js: EnigConvertFromUnicode: caught an exception\n");
-
- return text;
- }
-}
-
-/*
-function EnigConvertGpgToUnicode(text) {
- if (typeof(text)=="string") {
- text = text.replace(/\\x3a/ig, "\\e3A");
- a=text.search(/\\x[0-9a-fA-F]{2}/);
- while (a>=0) {
- ch=unescape('%'+text.substr(a+2,2));
- r= new RegExp("\\"+text.substr(a,4));
- text=text.replace(r, ch);
-
- a=text.search(/\\x[0-9a-fA-F]{2}/);
- }
- text = EnigConvertToUnicode(text, "utf-8");
- }
-
- return text;
-}
-*/
-
-// get a Windows registry value (string)
-// @ keyPath: the path of the registry (e.g. Software\\GNU\\GnuPG)
-// @ keyName: the name of the key to get (e.g. InstallDir)
-// @ rootKey: HKLM, HKCU, etc. (according to constants in nsIWindowsRegKey)
-function getWinRegistryString(keyPath, keyName, rootKey) {
- var registry = Components.classes["@mozilla.org/windows-registry-key;1"].createInstance(Components.interfaces.nsIWindowsRegKey);
-
- var retval = "";
- try {
- registry.open(rootKey, keyPath, registry.ACCESS_READ);
- retval = registry.readStringValue(keyName);
- registry.close();
- }
- catch (ex) {}
-
- return retval;
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Enigmail protocol handler
-///////////////////////////////////////////////////////////////////////////////
-
-function EnigmailProtocolHandler()
-{
-}
-
-EnigmailProtocolHandler.prototype.scheme = "enigmail";
-EnigmailProtocolHandler.prototype.defaultPort = -1;
-
-EnigmailProtocolHandler.prototype.QueryInterface =
-function (iid)
-{
- DEBUG_LOG("enigmail.js: EnigmailProtocolHandler.QueryInterface\n");
-
- if (!iid.equals(nsIProtocolHandler) && !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- return this;
-}
-
-EnigmailProtocolHandler.prototype.newURI =
-function (aSpec, originCharset, aBaseURI)
-{
- DEBUG_LOG("enigmail.js: EnigmailProtocolHandler.newURI: aSpec='"+aSpec+"'\n");
-
- var uri = Components.classes[NS_SIMPLEURI_CONTRACTID].createInstance(Components.interfaces.nsIURI);
- uri.spec = aSpec;
-
- return uri;
-}
-
-EnigmailProtocolHandler.prototype.newChannel =
-function (aURI)
-{
- DEBUG_LOG("enigmail.js: EnigmailProtocolHandler.newChannel: URI='"+aURI.spec+"'\n");
-
- var messageId = ExtractMessageId(aURI.spec);
-
- if (messageId) {
- // Handle enigmail:message?id=...
-
- if (!gEnigmailSvc)
- throw Components.results.NS_ERROR_FAILURE;
-
- var contentType, contentCharset, contentData;
-
- if (gEnigmailSvc._messageIdList[messageId]) {
- var messageUriObj = gEnigmailSvc._messageIdList[messageId];
-
- contentType = messageUriObj.contentType;
- contentCharset = messageUriObj.contentCharset;
- contentData = messageUriObj.contentData;
-
- DEBUG_LOG("enigmail.js: EnigmailProtocolHandler.newChannel: messageURL="+messageUriObj.originalUrl+", content length="+contentData.length+", "+contentType+", "+contentCharset+"\n");
-
- // do NOT delete the messageUriObj now from the list, this will be done once the message is unloaded (fix for bug 9730).
-
- } else {
-
- contentType = "text/plain";
- contentCharset = "";
- contentData = "Enigmail error: invalid URI "+aURI.spec;
- }
-
- var channel = gEnigmailSvc.ipcService.newStringChannel(aURI,
- contentType,
- "UTF-8",
- contentData);
-
- return channel;
- }
-
- if (aURI.spec == aURI.scheme+":dummy") {
- // Dummy PKCS7 content (to access mimeEncryptedClass)
- channel = gEnigmailSvc.ipcService.newStringChannel(aURI,
- "message/rfc822",
- "",
- gDummyPKCS7);
- return channel;
- }
-
- var winName, spec;
- if (aURI.spec == "about:"+aURI.scheme) {
- // About Enigmail
- winName = "about:"+enigmail;
- spec = "chrome://enigmail/content/enigmailAbout.xul";
-
- } else if (aURI.spec == aURI.scheme+":console") {
- // Display enigmail console messages
- winName = "enigmail:console";
- spec = "chrome://enigmail/content/enigmailConsole.xul";
-
- } else if (aURI.spec == aURI.scheme+":keygen") {
- // Display enigmail key generation console
- winName = "enigmail:keygen";
- spec = "chrome://enigmail/content/enigmailKeygen.xul";
-
- } else {
- // Display Enigmail about page
- winName = "about:enigmail";
- spec = "chrome://enigmail/content/enigmailAbout.xul";
- }
-
- var windowManager = Components.classes[WMEDIATOR_CONTRACTID].getService(Components.interfaces.nsIWindowMediator);
-
- var winEnum=windowManager.getEnumerator(null);
- var recentWin=null;
- while (winEnum.hasMoreElements() && ! recentWin) {
- var thisWin = winEnum.getNext();
- if (thisWin.location.href==spec) {
- recentWin = thisWin;
- }
- }
-
- if (recentWin) {
- recentWin.focus();
- } else {
- var appShellSvc = Components.classes[ASS_CONTRACTID].getService(Components.interfaces.nsIAppShellService);
- var domWin = appShellSvc.hiddenDOMWindow;
-
- domWin.open(spec, "_blank", "chrome,menubar,toolbar,resizable");
- }
-
- throw Components.results.NS_ERROR_FAILURE;
-}
-
-function EnigmailProtocolHandlerFactory() {
-}
-
-EnigmailProtocolHandlerFactory.prototype = {
- QueryInterface: function (iid) {
-
- //DEBUG_LOG("EnigmailProtocolHandlerFactory.QueryInterface:"+iid+"\n");
- if (!iid.equals(Components.interfaces.nsIFactory) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- return this;
- },
-
- createInstance: function (outer, iid) {
- DEBUG_LOG("enigmail.js: EnigmailProtocolHandlerFactory.createInstance\n");
-
- if (outer != null)
- throw Components.results.NS_ERROR_NO_AGGREGATION;
-
- if (!iid.equals(nsIProtocolHandler) && !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_INVALID_ARG;
-
- return new EnigmailProtocolHandler();
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Enigmail encryption/decryption service
-///////////////////////////////////////////////////////////////////////////////
-
-function GetPassphrase(domWindow, passwdObj, useAgentObj, rememberXTimes) {
- DEBUG_LOG("enigmail.js: GetPassphrase:\n");
-
- useAgentObj.value = false;
- try {
- var noPassphrase = gEnigmailSvc.prefBranch.getBoolPref("noPassphrase");
- useAgentObj.value = gEnigmailSvc.useGpgAgent();
-
- if (noPassphrase || useAgentObj.value) {
- passwdObj.value = "";
- return true;
- }
-
- }
- catch(ex) {}
-
- var maxIdleMinutes = gEnigmailSvc.getMaxIdleMinutes();
-
- if (gEnigmailSvc.haveCachedPassphrase()) {
- passwdObj.value = gCachedPassphrase;
-
- if (gEnigmailSvc._passwdAccessTimes > 0) {
- --gEnigmailSvc._passwdAccessTimes;
-
- if (gEnigmailSvc._passwdAccessTimes <= 0 && maxIdleMinutes <= 0) {
- gEnigmailSvc.clearCachedPassphrase();
- }
- }
- return true;
- }
-
- // Obtain password interactively
- var checkObj = new Object();
-
- var promptMsg = EnigGetString("enterPassOrPin");
- passwdObj.value = "";
- checkObj.value = true;
-
- var checkMsg = (maxIdleMinutes>0) ? EnigGetString("rememberPass",maxIdleMinutes) : "";
-
- var success;
-
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- success = promptService.promptPassword(domWindow,
- EnigGetString("enigPrompt"),
- promptMsg,
- passwdObj,
- checkMsg,
- checkObj);
-
- if (!success)
- return false;
-
- DEBUG_LOG("enigmail.js: GetPassphrase: got passphrase\n");
-
- // remember the passphrase for accessing serveral times in a sequence
-
- if (rememberXTimes) gEnigmailSvc._passwdAccessTimes = rememberXTimes;
-
- // Remember passphrase only if necessary
- if ((checkObj.value && (maxIdleMinutes > 0)) || rememberXTimes)
- gEnigmailSvc.setCachedPassphrase(passwdObj.value, rememberXTimes);
-
- return true;
-}
-
-
-function Enigmail(registeringModule)
-{
- DEBUG_LOG("enigmail.js: Enigmail: START "+registeringModule+"\n");
- this.registeringModule = registeringModule;
-
- DEBUG_LOG("enigmail.js: Enigmail: END\n");
-}
-
-Enigmail.prototype.registeringModule = false;
-Enigmail.prototype.initialized = false;
-Enigmail.prototype.initializationAttempted = false;
-Enigmail.prototype.initializationError = "";
-Enigmail.prototype.composeSecure = false;
-
-Enigmail.prototype.logFileStream = null;
-
-Enigmail.prototype.isUnix = false;
-Enigmail.prototype.isWin32 = false;
-Enigmail.prototype.isOs2 = false;
-Enigmail.prototype.isDosLike = false;
-
-Enigmail.prototype.ipcService = null;
-Enigmail.prototype.prefBranch = null;
-Enigmail.prototype.console = null;
-Enigmail.prototype.keygenProcess = null;
-Enigmail.prototype.keygenConsole = null;
-
-Enigmail.prototype.quoteSign = "";
-Enigmail.prototype.agentType = "";
-Enigmail.prototype.agentPath = "";
-Enigmail.prototype.agentVersion = "";
-Enigmail.prototype.userIdList = null;
-Enigmail.prototype.rulesList = null;
-Enigmail.prototype.gpgAgentInfo = {preStarted: false, envStr: ""};
-
-Enigmail.prototype._lastActiveTime = 0;
-Enigmail.prototype._passwdAccessTimes = 0;
-Enigmail.prototype._messageIdList = {};
-
-Enigmail.prototype.QueryInterface =
-function (iid) {
-
- //DEBUG_LOG("Enigmail.QueryInterface:\n");
- if (!iid.equals(nsIEnigmail) &&
- !iid.equals(nsIObserver) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- return this;
-}
-
-Enigmail.prototype.observe =
-function (aSubject, aTopic, aData) {
- DEBUG_LOG("enigmail.js: Enigmail.observe: topic='"+aTopic+"' \n");
-
- if (aTopic == "timer-callback") {
- // Cause cached password to expire, if need be
- if (!this.haveCachedPassphrase()) {
- // No cached password; cancel repeating timer
- if (gCacheTimer)
- gCacheTimer.cancel();
- }
-
- } else if (aTopic == NS_XPCOM_SHUTDOWN_OBSERVER_ID) {
- /* OBSOLETE
- // Reset mail.show_headers pref
- try {
- var prefSvc = Components.classes[NS_PREFS_SERVICE_CID]
- .getService(Components.interfaces.nsIPrefService);
- var prefRoot = prefSvc.getBranch(null);
-
- var prefValue = 1;
- try {
- prefValue = this.prefBranch.getIntPref("show_headers");
- } catch (ex) {
- ERROR_LOG("enigmail.js: Enigmail.observe: could not obtain 'show_headers'\n");
- }
-
- prefRoot.setIntPref("mail.show_headers", prefValue);
- prefSvc.savePrefFile(null);
- DEBUG_LOG("enigmail.js: Enigmail.observe: changed preferences saved\n");
- } catch (ex) {
- ERROR_LOG("enigmail.js: Enigmail.observe: could not save preferences\n");
- }
- */
- // XPCOM shutdown
- this.finalize();
-
- }
- else {
- DEBUG_LOG("enigmail.js: Enigmail.observe: no handler for '"+aTopic+"'\n");
- }
-}
-
-Enigmail.prototype.alertMsg =
-function (domWindow, mesg) {
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- return promptService.alert(domWindow, EnigGetString("enigAlert"), mesg);
-}
-
-Enigmail.prototype.confirmMsg =
-function (domWindow, mesg) {
- var dummy={};
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- var buttonPressed = promptService.confirmEx(domWindow,
- EnigGetString("enigConfirm"),
- mesg,
- (promptService.BUTTON_TITLE_YES * BUTTON_POS_0) +
- (promptService.BUTTON_TITLE_NO * BUTTON_POS_1),
- null, null, null,
- null, dummy);
- return (buttonPressed==0); // promptService.confirm(domWindow, EnigGetString("enigConfirm"), mesg);
-}
-
-Enigmail.prototype.promptValue =
-function (domWindow, mesg, valueObj) {
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- var checkObj = new Object();
- return promptService.prompt(domWindow, EnigGetString("enigPrompt"),
- mesg, valueObj, "", checkObj);
-}
-
-Enigmail.prototype.errorMsg =
-function (domWindow, mesg) {
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- return promptService.alert(domWindow, EnigGetString("enigError"), mesg);
-}
-
-Enigmail.prototype.getMaxIdleMinutes =
-function () {
- var maxIdleMinutes = 5;
- try {
- maxIdleMinutes = this.prefBranch.getIntPref("maxIdleMinutes");
- } catch (ex) {
- }
-
- return maxIdleMinutes;
-}
-
-Enigmail.prototype.getLogDirectoryPrefix =
-function () {
- var logDirectory = "";
- try {
- logDirectory = this.prefBranch.getCharPref("logDirectory");
- } catch (ex) {
- }
-
- if (!logDirectory)
- return "";
-
- var dirPrefix = logDirectory + (this.isDosLike ? "\\" : "/");
-
- return dirPrefix;
-}
-
-Enigmail.prototype.stillActive =
-function () {
- DEBUG_LOG("enigmail.js: Enigmail.stillActive: \n");
-
- // Update last active time
- var curDate = new Date();
- this._lastActiveTime = curDate.getTime();
-// DEBUG_LOG("enigmail.js: Enigmail.stillActive: _lastActiveTime="+this._lastActiveTime+"\n");
-}
-
-
-Enigmail.prototype.clearCachedPassphrase =
-function () {
- DEBUG_LOG("enigmail.js: Enigmail.clearCachedPassphrase: \n");
-
- gCachedPassphrase = null;
-}
-
-
-Enigmail.prototype.setCachedPassphrase =
-function (passphrase) {
- DEBUG_LOG("enigmail.js: Enigmail.setCachedPassphrase: \n");
-
- gCachedPassphrase = passphrase;
- this.stillActive();
-
- var maxIdleMinutes = this.getMaxIdleMinutes();
-
- var createTimerType = null;
- const nsITimer = Components.interfaces.nsITimer;
-
- if (this.haveCachedPassphrase() && (this._passwdAccessTimes > 0) && (maxIdleMinutes <= 0)) {
- // we remember the passphrase for at most 1 minute
- createTimerType = nsITimer.TYPE_ONE_SHOT;
- maxIdleMinutes = 1;
- }
- else if (this.haveCachedPassphrase() && (maxIdleMinutes > 0)) {
- createTimerType = nsITimer.TYPE_REPEATING_SLACK;
- }
-
- if (createTimerType != null) {
- // Start timer
- if (gCacheTimer)
- gCacheTimer.cancel();
-
- var delayMillisec = maxIdleMinutes*60*1000;
-
- gCacheTimer = Components.classes[NS_TIMER_CONTRACTID].createInstance(nsITimer);
-
- if (!gCacheTimer) {
- ERROR_LOG("enigmail.js: Enigmail.setCachedPassphrase: Error - failed to create timer\n");
- throw Components.results.NS_ERROR_FAILURE;
- }
-
- gCacheTimer.init(this, delayMillisec,
- createTimerType);
-
- DEBUG_LOG("enigmail.js: Enigmail.setCachedPassphrase: gCacheTimer="+gCacheTimer+"\n");
- }
-}
-
-
-Enigmail.prototype.haveCachedPassphrase =
-function () {
- DEBUG_LOG("enigmail.js: Enigmail.haveCachedPassphrase: \n");
-
- var havePassphrase = ((typeof gCachedPassphrase) == "string");
-
- if (!havePassphrase)
- return false;
-
- var curDate = new Date();
- var currentTime = curDate.getTime();
-
- var maxIdleMinutes = this.getMaxIdleMinutes();
- var delayMillisec = maxIdleMinutes*60*1000;
-
- var expired = ((currentTime - this._lastActiveTime) >= delayMillisec);
-
-// DEBUG_LOG("enigmail.js: Enigmail.haveCachedPassphrase: ")
-// DEBUG_LOG("currentTime="+currentTime+", _lastActiveTime="+this._lastActiveTime+", expired="+expired+"\n");
-
- if (expired && (this._passwdAccessTimes <= 0)) {
- // Too much idle time; forget cached password
- gCachedPassphrase = null;
- havePassphrase = false;
-
- WRITE_LOG("enigmail.js: Enigmail.haveCachedPassphrase: CACHE IDLED OUT\n");
- }
-
- return havePassphrase;
-}
-
-
-Enigmail.prototype.finalize =
-function () {
- DEBUG_LOG("enigmail.js: Enigmail.finalize:\n");
- if (!this.initialized) return;
-
- if (this.logFileStream) {
- this.logFileStream.close();
- this.logFileStream = null;
- }
-
- if (this.console) {
- this.console.close();
- this.console = null;
- }
-
- gLogLevel = 3;
- this.initializationError = "";
- this.initializationAttempted = false;
- this.initialized = false;
-}
-
-
-Enigmail.prototype.mimeInitialized =
-function () {
- var enigMimeService = Components.classes[NS_ENIGMIMESERVICE_CONTRACTID].getService(Components.interfaces.nsIEnigMimeService);
-
- var value = enigMimeService.initialized;
- DEBUG_LOG("enigmail.js: Enigmail.mimeInitialized: "+value+"\n");
- return value;
-}
-
-Enigmail.prototype.initialize =
-function (domWindow, version, prefBranch) {
- this.initializationAttempted = true;
-
- this.prefBranch = prefBranch;
-
- DEBUG_LOG("enigmail.js: Enigmail.initialize: START\n");
- if (this.initialized) return;
-
- try {
- var enigMsgComposeFactory = Components.classes[NS_ENIGMSGCOMPOSEFACTORY_CONTRACTID].createInstance(Components.interfaces.nsIFactory);
-
- var compMgr = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-
- compMgr.registerFactory(NS_ENIGMSGCOMPOSE_CID,
- "Enig Msg Compose",
- NS_MSGCOMPOSESECURE_CONTRACTID,
- enigMsgComposeFactory);
-
- var msgComposeSecureCID = compMgr.contractIDToCID(NS_MSGCOMPOSESECURE_CONTRACTID);
-
- this.composeSecure = (msgComposeSecureCID.toString() ==
- NS_ENIGMSGCOMPOSE_CID);
- } catch (ex) {}
-
- var ioServ = Components.classes[NS_IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService);
-
- try {
- var httpHandler = ioServ.getProtocolHandler("http");
- httpHandler = httpHandler.QueryInterface(Components.interfaces.nsIHttpProtocolHandler);
- }
- catch (ex) {
- httpHandler = domWindow.navigator;
- }
-
- this.oscpu = httpHandler.oscpu;
-
- this.platform = httpHandler.platform;
-
- if (httpHandler.vendor) {
- this.vendor = httpHandler.vendor;
- } else {
- this.vendor = "Mozilla";
- }
-
- this.isUnix = (this.platform.search(/X11/i) == 0);
- this.isWin32 = (this.platform.search(/Win/i) == 0);
- this.isOs2 = (this.platform.search(/OS\/2/i) == 0);
-
- if (this.isOs2) {
- this.quoteSign="\\\"";
- }
- else {
- this.quoteSign="'";
- }
-
- this.isDosLike = (this.isWin32 || this.isOs2);
-
- var prefix = this.getLogDirectoryPrefix();
- if (prefix) {
- gLogLevel = 5;
- this.logFileStream = CreateFileStream(prefix+"enigdbug.txt");
- DEBUG_LOG("enigmail.js: Logging debug output to "+prefix+"enigdbug.txt\n");
- }
-
- this.version = version;
-
- DEBUG_LOG("enigmail.js: Enigmail version "+this.version+"\n");
- DEBUG_LOG("enigmail.js: OS/CPU="+this.oscpu+"\n");
- DEBUG_LOG("enigmail.js: Platform="+this.platform+"\n");
- DEBUG_LOG("enigmail.js: composeSecure="+this.composeSecure+"\n");
-
- var processInfo;
- try {
- processInfo = Components.classes[NS_PROCESSINFO_CONTRACTID].getService(nsIProcessInfo);
-
- } catch (ex) {
- this.initializationError = EnigGetString("enigmimeNotAvail");
- ERROR_LOG("enigmail.js: Enigmail.initialize: Error - "+this.initializationError+"\n");
- throw Components.results.NS_ERROR_FAILURE;
- }
-
- this.processInfo = processInfo;
-
- var nspr_log_modules = processInfo.getEnv("NSPR_LOG_MODULES");
- var matches = nspr_log_modules.match(/enigmail:(\d+)/);
-
- if (matches && (matches.length > 1)) {
- gLogLevel = matches[1];
- WARNING_LOG("enigmail.js: Enigmail: gLogLevel="+gLogLevel+"\n");
- }
-
- // Initialize global environment variables list
- var passEnv = [ "PGPPATH", "GNUPGHOME", "GPGDIR", "ETC",
- "ALLUSERSPROFILE", "APPDATA", "BEGINLIBPATH",
- "COMMONPROGRAMFILES", "COMSPEC", "DISPLAY",
- "ENIGMAIL_PASS_ENV", "ENDLIBPATH",
- "HOME", "HOMEDRIVE", "HOMEPATH",
- "LANG", "LANGUAGE", "LC_ALL", "LC_COLLATE", "LC_CTYPE",
- "LC_MESSAGES", "LC_MONETARY", "LC_NUMERIC", "LC_TIME",
- "LOCPATH", "LOGNAME", "LD_LIBRARY_PATH", "MOZILLA_FIVE_HOME",
- "NLSPATH", "PATH", "PATHEXT", "PROGRAMFILES", "PWD",
- "SHELL", "SYSTEMDRIVE", "SYSTEMROOT",
- "TEMP", "TMP", "TMPDIR", "TZ", "TZDIR", "UNIXROOT",
- "USER", "USERPROFILE", "WINDIR" ];
-
- var passList = this.processInfo.getEnv("ENIGMAIL_PASS_ENV");
- if (passList) {
- var passNames = passList.split(":");
- for (var k=0; k<passNames.length; k++)
- passEnv.push(passNames[k]);
- }
-
- gEnvList = [];
- for (var j=0; j<passEnv.length; j++) {
- var envName = passEnv[j];
- var envValue = this.processInfo.getEnv(envName);
- if (envValue)
- gEnvList.push(envName+"="+envValue);
- }
-
- DEBUG_LOG("enigmail.js: Enigmail.initialize: gEnvList = "+gEnvList+"\n");
-
- try {
- // Access IPC Service
-
- var ipcService = Components.classes[NS_IPCSERVICE_CONTRACTID].getService();
- ipcService = ipcService.QueryInterface(nsIIPCService);
-
- this.ipcService = ipcService;
-
- // Create a non-joinable console
- var pipeConsole = Components.classes[NS_PIPECONSOLE_CONTRACTID].createInstance(nsIPipeConsole);
-
- pipeConsole.open(500, 80, false);
-
- this.console = pipeConsole;
-
- pipeConsole.write("Initializing Enigmail service ...\n");
-
- } catch (ex) {
- this.initializationError = EnigGetString("enigmimeNotAvail");
- ERROR_LOG("enigmail.js: Enigmail.initialize: Error - "+this.initializationError+"\n");
- throw Components.results.NS_ERROR_FAILURE;
- }
-
- this.setAgentPath(domWindow);
-
- this.detectGpgAgent(domWindow);
-
- if (this.useGpgAgent()) {
- gEnvList.push("GPG_AGENT_INFO="+this.gpgAgentInfo.envStr);
- }
-
-
-
-
- // Register to observe XPCOM shutdown
- var obsServ = Components.classes[NS_OBSERVERSERVICE_CONTRACTID].getService();
- obsServ = obsServ.QueryInterface(Components.interfaces.nsIObserverService);
-
- obsServ.addObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false);
-
- this.stillActive();
- this.initialized = true;
-
- DEBUG_LOG("enigmail.js: Enigmail.initialize: END\n");
-}
-
-Enigmail.prototype.useGpgAgent =
-function() {
- var useAgent = false;
-
- try {
- useAgent= (this.gpgAgentInfo.envStr.length>0 || this.prefBranch.getBoolPref("useGpgAgent"));
- }
- catch (ex) {}
- return useAgent;
-}
-
-
-Enigmail.prototype.reinitialize =
-function () {
- this.initialized = false;
- this.initializationAttempted = true;
-
- this.console.write("Reinitializing Enigmail service ...\n");
- this.setAgentPath();
- this.initialized = true;
-}
-
-
-Enigmail.prototype.determineGpgHomeDir =
-function () {
-
- var homeDir = "";
-
- homeDir = this.processInfo.getEnv("GNUPGHOME");
-
- if (! homeDir && this.isWin32) {
- homeDir=getWinRegistryString("Software\\GNU\\GNUPG", "HomeDir", nsIWindowsRegKey.ROOT_KEY_CURRENT_USER);
-
- if (! homeDir) {
- homeDir = this.processInfo.getEnv("USERPROFILE");
-
- if (! homeDir) {
- homeDir = this.processInfo.getEnv("SystemRoot");
- }
-
- if (homeDir) homeDir += "\\Application Data\\GnuPG";
- }
-
- if (! homeDir) homeDir = "C:\\gnupg";
- }
-
- if (! homeDir) homeDir = this.processInfo.getEnv("HOME")+"/.gnupg";
-
- return homeDir;
-}
-
-
-Enigmail.prototype.setAgentPath =
-function () {
- var agentPath = "";
- try {
- agentPath = this.prefBranch.getCharPref("agentPath");
- } catch (ex) {}
-
- var agentType = "gpg";
- var agentName = this.isDosLike ? agentType+".exe" : agentType;
-
- if (agentPath) {
- // Locate GPG/PGP executable
-
- // Append default .exe extension for DOS-Like systems, if needed
- if (this.isDosLike && (agentPath.search(/\.\w+$/) < 0))
- agentPath += ".exe";
-
- try {
- var pathDir = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
-
- if (! isAbsolutePath(agentPath, this.isDosLike)) {
- // path relative to Mozilla installation dir
- var ds = Components.classes[DIR_SERV_CONTRACTID].getService();
- var dsprops = ds.QueryInterface(Components.interfaces.nsIProperties);
- pathDir = dsprops.get("CurProcD", Components.interfaces.nsILocalFile);
-
- var dirs=agentPath.split(RegExp(this.isDosLike ? "\\\\" : "/"));
- for (var i=0; i< dirs.length; i++) {
- if (dirs[i]!=".") {
- pathDir.append(dirs[i]);
- }
- }
- pathDir.normalize();
- agentPath = pathDir.target;
- }
- else {
- // absolute path
- pathDir.initWithPath(agentPath);
- }
- if (! (pathDir.isFile() /* && pathDir.isExecutable()*/))
- throw Components.results.NS_ERROR_FAILURE;
-
- } catch (ex) {
- this.initializationError = EnigGetString("gpgNotFound", agentPath);
- ERROR_LOG("enigmail.js: Enigmail.initialize: Error - "+this.initializationError+"\n");
- throw Components.results.NS_ERROR_FAILURE;
- }
-
- } else {
- // Resolve relative path using PATH environment variable
- var envPath = this.processInfo.getEnv("PATH");
-
- agentPath = ResolvePath(agentName, envPath, this.isDosLike);
-
- if (!agentPath && this.isDosLike) {
- // DOS-like systems: search for GPG in c:\gnupg, c:\gnupg\bin, d:\gnupg, d:\gnupg\bin
- var gpgPath = "c:\\gnupg;c:\\gnupg\\bin;d:\\gnupg;d:\\gnupg\\bin";
- agentPath = ResolvePath(agentName, gpgPath, this.isDosLike);
- }
-
- if (!agentPath && !this.isDosLike) {
- // Unix-like systems: check /usr/bin and /usr/local/bin
- gpgPath = "/usr/bin:/usr/local/bin";
- agentPath = ResolvePath(agentName, gpgPath, this.isDosLike)
- }
-
- if ((! agentPath) && this.isWin32) {
- // Look up in Windows Registry
- var enigMimeService = Components.classes[NS_ENIGMIMESERVICE_CONTRACTID].getService(Components.interfaces.nsIEnigMimeService);
- try {
- var regPath = getWinRegistryString("Software\\GNU\\GNUPG", "Install Directory", nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE);
- agentPath = ResolvePath(agentName, regPath, this.isDosLike)
- }
- catch (ex) {}
- }
-
- if (!agentPath) {
- this.initializationError = EnigGetString("gpgNotInPath");
- ERROR_LOG("enigmail.js: Enigmail: Error - "+this.initializationError+"\n");
- throw Components.results.NS_ERROR_FAILURE;
- }
- agentPath = agentPath.path;
- }
-
- CONSOLE_LOG("EnigmailAgentPath="+agentPath+"\n\n");
-
- // Escape any backslashes in agent path
- agentPath = agentPath.replace(/\\/g, "\\\\");
-
- this.agentType = agentType;
- this.agentPath = agentPath;
-
- var command = agentPath;
- if (agentType == "gpg") {
- command += " --version --version --batch --no-tty --charset utf8";
- }
-
- // This particular command execution seems to be essential on win32
- // (In particular, this should be the first command executed and
- // *should* use the shell, i.e., command.com)
- var outStrObj = new Object();
- var outLenObj = new Object();
- var errStrObj = new Object();
- var errLenObj = new Object();
-
- var exitCode = this.ipcService.execPipe(command, false, "", "", 0, [], 0,
- outStrObj, outLenObj, errStrObj, errLenObj);
-
- CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- var outStr = outStrObj.value;
- if (errStrObj.value)
- outStr += errStrObj.value;
-
- CONSOLE_LOG(outStr+"\n");
-
- // detection for Gpg4Win wrapper
- if (outStr.search(/^gpgwrap.*;/) == 0) {
- var outLines = outStr.split(/[\n\r]+/);
- var firstLine = outLines[0];
- outLines.splice(0,1);
- outStr = outLines.join("\n");
- agentPath = firstLine.replace(/^.*;/, "")
-
- CONSOLE_LOG("gpg4win-gpgwrapper detected; EnigmailAgentPath="+agentPath+"\n\n");
- this.agentPath = agentPath.replace(/\\/g, "\\\\");
- }
-
- var versionParts = outStr.replace(/[\r\n].*/g,"").split(/ /);
- var gpgVersion = versionParts[versionParts.length-1]
-
- this.agentVersion = gpgVersion;
-
- // check GnuPG version number
- var evalVersion = this.agentVersion.match(/^\d+\.\d+/)
- if (evalVersion && evalVersion[0]<"1.2") {
- this.alertMsg(domWindow, EnigGetString("oldGpgVersion", gpgVersion));
- throw Components.results.NS_ERROR_FAILURE;
- }
-}
-
-Enigmail.prototype.detectGpgAgent =
-function (domWindow) {
- DEBUG_LOG("enigmail.js: detectGpgAgent\n");
-
- function extractAgentInfo(fullStr) {
- fullStr = fullStr.replace(/^.*\=/,"");
- fullStr = fullStr.replace(/^\;.*$/,"");
- fullStr = fullStr.replace(/[\n\r]*/g,"");
- return fullStr;
- }
-
-
- function resolveAgentPath(fileName) {
- var filePath = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
-
- if (gEnigmailSvc.isDosLike) {
- fileName += ".exe";
- }
-
- filePath.initWithPath(gEnigmailSvc.agentPath);
-
- if (filePath) filePath = filePath.parent;
- if (filePath) {
- filePath.append(fileName);
- if (filePath.exists()) {
- return filePath;
- }
- }
-
- var foundPath = ResolvePath(fileName, gEnigmailSvc.processInfo.getEnv("PATH"), gEnigmailSvc.isDosLike)
- if ((! foundPath) && gEnigmailSvc.isWin32) {
- // Look up in Windows Registry
- var enigMimeService = Components.classes[NS_ENIGMIMESERVICE_CONTRACTID].getService(Components.interfaces.nsIEnigMimeService);
- try {
- var regPath = enigMimeService.getGpgPathFromRegistry();
- foundPath = ResolvePath(fileName, regPath, gEnigmailSvc.isDosLike)
- }
- catch (ex) {}
- }
-
- return foundPath;
- }
-
- var gpgAgentInfo = this.processInfo.getEnv("GPG_AGENT_INFO");
- if (gpgAgentInfo) {
- DEBUG_LOG("enigmail.js: detectGpgAgent: GPG_AGENT_INFO variable available\n");
- // env. variable suggests running gpg-agent
- this.gpgAgentInfo.preStarted = true;
- this.gpgAgentInfo.envStr = gpgAgentInfo;
- }
- else {
- DEBUG_LOG("enigmail.js: detectGpgAgent: no GPG_AGENT_INFO variable set\n");
- this.gpgAgentInfo.preStarted = false;
-
- if ((this.agentVersion >= "1.9.92") && (! this.isDosLike)) {
- var command = null;
- var gpgConnectAgent = resolveAgentPath("gpg-connect-agent");
-
- var outStrObj = new Object();
- var outLenObj = new Object();
- var errStrObj = new Object();
- var errLenObj = new Object();
-
- var envList = new Array();
-
- for (i in gEnvList) {
- envList.push(gEnvList[i]);
- }
-
- var envFile = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
- envFile.initWithPath(this.determineGpgHomeDir());
- envFile.append(".gpg-agent-info");
-
- if (envFile.exists() && gpgConnectAgent &&
- gpgConnectAgent.isExecutable()) {
- // try to connect to a running gpg-agent
-
- this.gpgAgentInfo.envStr = extractAgentInfo(EnigReadFile(envFile));
-
- envList.push("GPG_AGENT_INFO="+this.gpgAgentInfo.envStr);
- var exitCode = this.ipcService.execPipe(gpgConnectAgent.path, false,
- "", "/echo OK\n", 0,
- envList, envList.length,
- outStrObj, outLenObj, errStrObj, errLenObj);
-
- CONSOLE_LOG("enigmail> "+gpgConnectAgent.path.replace(/\\\\/g, "\\")+"\n");
- if (exitCode==0) {
- DEBUG_LOG("enigmail.js: detectGpgAgent: found running gpg-agent. GPG_AGENT_INFO='"+this.gpgAgentInfo.envStr+"'\n");
- return;
- }
- else {
- DEBUG_LOG("enigmail.js: detectGpgAgent: no running gpg-agent:"+errStrObj.value+"\n");
- }
- }
-
- // and finally try to start gpg-agent
- var commandFile = resolveAgentPath("gpg-agent");
- if (commandFile && commandFile.isExecutable()) {
- command = commandFile.path;
- }
-
- if (command == null) {
- ERROR_LOG("enigmail.js: detectGpgAgent: gpg-agent not found\n");
- this.alertMsg(domWindow, EnigGetString("gpgAgentNotStarted", this.agentVersion));
- throw Components.results.NS_ERROR_FAILURE;
- }
-
- command += " --sh --daemon --write-env-file '"+envFile.path+"'";
- command += " --default-cache-ttl " + (this.getMaxIdleMinutes()*60);
- command += " --max-cache-ttl 999999"; // ca. 11 days
-
- var exitCode = this.ipcService.execPipe(command, false, "", "", 0,
- envList, envList.length,
- outStrObj, outLenObj, errStrObj, errLenObj);
-
- CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- if (exitCode == 0) {
- var outStr = outStrObj.value;
- this.gpgAgentInfo.envStr = extractAgentInfo(outStrObj.value);
- }
- else {
- ERROR_LOG("enigmail.js: detectGpgAgent: gpg-agent output: "+errStrObj.value+"\n");
- this.alertMsg(domWindow, EnigGetString("gpgAgentNotStarted", this.agentVersion));
- throw Components.results.NS_ERROR_FAILURE;
- }
- }
- }
- DEBUG_LOG("enigmail.js: detectGpgAgent: GPG_AGENT_INFO='"+this.gpgAgentInfo.envStr+"'\n");
-}
-
-Enigmail.prototype.getAgentPath =
-function () {
- var p = "";
- try {
- p=this.prefBranch.getCharPref("agentAdditionalParam").replace(/([\\\`])/g, "\\$1");
- }
- catch (ex) {}
- return this.agentPath + " --charset utf8 " + p;
-}
-
-
-Enigmail.prototype.passwdCommand =
-function () {
-
- var command="";
-
- try {
- var gpgVersion = this.agentVersion.match(/^\d+\.\d+/);
- if (this.useGpgAgent()) {
- command = " --use-agent "
- }
- else {
- if (! gEnigmailSvc.prefBranch.getBoolPref("noPassphrase")) {
- command = " --passphrase-fd 0";
- if (gpgVersion && gpgVersion[0] >= "1.1") {
- command += " --no-use-agent ";
- }
- }
- }
- } catch (ex) {}
-
- return command;
-}
-
-Enigmail.prototype.fixExitCode =
-function (exitCode, statusFlags) {
- if ((this.agentType == "gpg") && (exitCode == 256)) {
- WARNING_LOG("enigmail.js: Enigmail.fixExitCode: Using gpg and exit code is 256. You seem to use cygwin-gpg, activating countermeasures.\n");
- if (statusFlags & (nsIEnigmail.BAD_PASSPHRASE | nsIEnigmail.UNVERIFIED_SIGNATURE)) {
- WARNING_LOG("enigmail.js: Enigmail.fixExitCode: Changing exitCode 256->2\n");
- exitCode = 2;
- } else {
- WARNING_LOG("enigmail.js: Enigmail.fixExitCode: Changing exitCode 256->0\n");
- exitCode = 0;
- }
- }
- if (((this.agentVersion >= "1.3") && (this.agentVersion < "1.4.1" )) && (this.isDosLike)) {
- if ((exitCode == 2) && (!(statusFlags & (nsIEnigmail.BAD_PASSPHRASE |
- nsIEnigmail.UNVERIFIED_SIGNATURE |
- nsIEnigmail.MISSING_PASSPHRASE |
- nsIEnigmail.BAD_ARMOR |
- nsIEnigmail.DECRYPTION_INCOMPLETE |
- nsIEnigmail.DECRYPTION_FAILED |
- nsIEnigmail.NO_PUBKEY |
- nsIEnigmail.NO_SECKEY)))) {
- WARNING_LOG("enigmail.js: Enigmail.fixExitCode: Using gpg version "+this.agentVersion+", activating countermeasures for file renaming bug.\n");
- exitCode = 0;
- }
- }
- return exitCode;
-}
-
-
-Enigmail.prototype.simpleExecCmd =
-function (command, exitCodeObj, errorMsgObj) {
- WRITE_LOG("enigmail.js: Enigmail.simpleExecCmd: command = "+command+"\n");
-
- var envList = [];
- envList = envList.concat(gEnvList);
-
- var prefix = this.getLogDirectoryPrefix();
- if (prefix && (gLogLevel >= 4)) {
-
- WriteFileContents(prefix+"enigcmd.txt", command.replace(/\\\\/g, "\\")+"\n");
- WriteFileContents(prefix+"enigenv.txt", envList.join(",")+"\n");
-
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: copied command line/env/input to files "+prefix+"enigcmd.txt/enigenv.txt/eniginp.txt\n");
- }
-
- var outObj = new Object();
- var errObj = new Object();
- var outLenObj = new Object();
- var errLenObj = new Object();
-
- CONSOLE_LOG("\nenigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- try {
- var useShell = false;
- exitCodeObj.value = gEnigmailSvc.ipcService.execPipe(command,
- useShell,
- "",
- "", 0,
- envList, envList.length,
- outObj, outLenObj,
- errObj, errLenObj);
- } catch (ex) {
- exitCodeObj.value = -1;
- }
-
- var outputData = "";
- var errOutput = "";
-
- if (outObj.value)
- outputData = outObj.value;
-
- if (errObj.value)
- errorMsgObj.value = errObj.value;
-
- if (prefix && (gLogLevel >= 4)) {
- WriteFileContents(prefix+"enigout.txt", outputData);
- WriteFileContents(prefix+"enigerr.txt", errOutput);
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: copied command out/err data to files "+prefix+"enigout.txt/enigerr.txt\n");
- }
-
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: exitCode = "+exitCodeObj.value+"\n");
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: errOutput = "+errOutput+"\n");
-
- exitCodeObj.value = exitCodeObj.value;
-
- this.stillActive();
-
- return outputData;
-}
-
-
-Enigmail.prototype.execCmd =
-function (command, passphrase, input, exitCodeObj, statusFlagsObj,
- statusMsgObj, errorMsgObj) {
- WRITE_LOG("enigmail.js: Enigmail.execCmd: command = "+command+"\n");
-
- if ((typeof input) != "string") input = "";
- var prependPassphrase = ((typeof passphrase) == "string");
-
- var envList = [];
- envList = envList.concat(gEnvList);
-
- var preInput;
-
- if (prependPassphrase) {
- envList.push("PGPPASSFD=0");
- preInput = passphrase;
- input = "\n" + input;
-
- } else {
- preInput = "";
- }
-
- var prefix = this.getLogDirectoryPrefix();
- if (prefix && (gLogLevel >= 4)) {
-
- if (prependPassphrase) {
- // Obscure passphrase
- WriteFileContents(prefix+"eniginp.txt", "<passphrase>"+input);
- } else {
- WriteFileContents(prefix+"eniginp.txt", input);
- }
-
- WriteFileContents(prefix+"enigcmd.txt", command.replace(/\\\\/g, "\\")+"\n");
- WriteFileContents(prefix+"enigenv.txt", envList.join(",")+"\n");
-
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: copied command line/env/input to files "+prefix+"enigcmd.txt/enigenv.txt/eniginp.txt\n");
- }
-
- var outObj = new Object();
- var errObj = new Object();
- var outLenObj = new Object();
- var errLenObj = new Object();
- var blockSeparationObj = new Object();
-
- CONSOLE_LOG("\nenigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- try {
- var useShell = false;
- exitCodeObj.value = gEnigmailSvc.ipcService.execPipe(command,
- useShell,
- preInput,
- input, input.length,
- envList, envList.length,
- outObj, outLenObj,
- errObj, errLenObj);
- } catch (ex) {
- exitCodeObj.value = -1;
- }
-
- var outputData = "";
- var errOutput = "";
-
- if (outObj.value)
- outputData = outObj.value;
-
- if (errObj.value)
- errOutput = errObj.value;
-
- if (prefix && (gLogLevel >= 4)) {
- WriteFileContents(prefix+"enigout.txt", outputData);
- WriteFileContents(prefix+"enigerr.txt", errOutput);
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: copied command out/err data to files "+prefix+"enigout.txt/enigerr.txt\n");
- }
-
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: exitCode = "+exitCodeObj.value+"\n");
- DEBUG_LOG("enigmail.js: Enigmail.execCmd: errOutput = "+errOutput+"\n");
-
-
- errorMsgObj.value = this.parseErrorOutput(errOutput, statusFlagsObj, statusMsgObj, blockSeparationObj);
- exitCodeObj.value = this.fixExitCode(exitCodeObj.value, statusFlagsObj.value);
-
- if (blockSeparationObj.value.indexOf(" ") > 0) {
- exitCodeObj.value = 2;
- }
-
- CONSOLE_LOG(errorMsgObj.value+"\n");
-
- this.stillActive();
-
- return outputData;
-}
-
-
-Enigmail.prototype.execStart =
-function (command, needPassphrase, domWindow, prompter, listener,
- noProxy, statusFlagsObj) {
- WRITE_LOG("enigmail.js: Enigmail.execStart: command = "+command+", needPassphrase="+needPassphrase+", domWindow="+domWindow+", prompter="+prompter+", listener="+listener+", noProxy="+noProxy+"\n");
-
- statusFlagsObj.value = 0;
-
- var envList = [];
- envList = envList.concat(gEnvList);
-
- var passphrase = null;
- var useAgentObj = {value: false};
-
- if (needPassphrase) {
- command += this.passwdCommand();
-
- var passwdObj = new Object();
-
- if (!GetPassphrase(domWindow, passwdObj, useAgentObj, 0)) {
- ERROR_LOG("enigmail.js: Enigmail.execStart: Error - no passphrase supplied\n");
-
- statusFlagsObj.value |= nsIEnigmail.MISSING_PASSPHRASE;
- return null;
- }
-
- passphrase = passwdObj.value;
- }
-
- var prefix = this.getLogDirectoryPrefix();
- if (prefix && (gLogLevel >= 4)) {
-
- WriteFileContents(prefix+"enigcmd.txt", command.replace(/\\\\/g, "\\")+"\n");
- WriteFileContents(prefix+"enigenv.txt", envList.join(",")+"\n");
-
- DEBUG_LOG("enigmail.js: Enigmail.execStart: copied command line/env to files "+prefix+"enigcmd.txt/enigenv.txt\n");
- }
-
- CONSOLE_LOG("\nenigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- var pipetrans = Components.classes[NS_PIPETRANSPORT_CONTRACTID].createInstance();
-
- pipetrans = pipetrans.QueryInterface(Components.interfaces.nsIPipeTransport);
- DEBUG_LOG("enigmail.js: Enigmail.execStart: pipetrans = " + pipetrans + "\n");
-
- try {
- var ipcBuffer = Components.classes[NS_IPCBUFFER_CONTRACTID].createInstance(Components.interfaces.nsIIPCBuffer);
- ipcBuffer.open(ERROR_BUFFER_SIZE, false);
-
- var mergeStderr = false;
- pipetrans.initCommand(command, envList, envList.length,
- 0, "", noProxy, mergeStderr,
- ipcBuffer);
-
- if (listener) {
- pipetrans.asyncRead(listener, null, 0, -1, 0);
- }
-
- if (needPassphrase && ! useAgentObj.value) {
- // Write to child STDIN
- // (ignore errors, because child may have exited already, closing STDIN)
- try {
- if (passphrase) {
- pipetrans.writeSync(passphrase, passphrase.length);
- }
- pipetrans.writeSync("\n", 1);
- } catch (ex) {}
- }
-
- return pipetrans;
-
- } catch (ex) {
- CONSOLE_LOG("enigmail.js: Enigmail.execStart: Error - Failed to start PipeTransport\n");
- return null;
- }
-}
-
-
-Enigmail.prototype.parseErrorOutput =
-function (errOutput, statusFlagsObj, statusMsgObj, blockSeparationObj) {
-
- WRITE_LOG("enigmail.js: Enigmail.parseErrorOutput:\n");
- var errLines = errOutput.split(/\r?\n/);
-
- // Discard last null string, if any
- if ((errLines.length > 1) && !errLines[errLines.length-1])
- errLines.pop();
-
- var errArray = new Array();
- var statusArray = new Array();
- var errCode = 0;
-
- var statusPat = /^\[GNUPG:\] /;
- var statusFlags = 0;
-
- for (var j=0; j<errLines.length; j++) {
- if (errLines[j].search(statusPat) == 0) {
- var statusLine = errLines[j].replace(statusPat,"");
- statusArray.push(statusLine);
-
- var matches = statusLine.match(/^(\w+)\b/);
-
- if (matches && (matches.length > 1)) {
- var flag = gStatusFlags[matches[1]];
-
- if (flag == nsIEnigmail.NODATA) {
- // Recognize only "NODATA 1"
- if (statusLine.search(/NODATA 1\b/) < 0)
- flag = 0;
- }
- else if (flag == nsIEnigmail.NO_SC_AVAILABLE) {
- var a = statusLine.split(/ +/);
- errCode = Number(a[1]);
- }
-
- if (flag)
- statusFlags |= flag;
-
- //DEBUG_LOG("enigmail.js: Enigmail.parseErrorOutput: status match '+matches[1]+"\n");
- }
-
- } else {
- errArray.push(errLines[j]);
- }
- }
-
- // detect forged message insets
-
- if (! blockSeparationObj) {
- blockSeparationObj = new Object();
- }
- blockSeparationObj.value = "";
-
- var plaintextCount=0;
- var withinCryptoMsg = false;
- var cryptoStartPat = /^BEGIN_DECRYPTION/;
- var cryptoEndPat = /^END_DECRYPTION/;
- var plaintextPat = /^PLAINTEXT /;
- var plaintextLengthPat = /^PLAINTEXT_LENGTH /;
- for (j=0; j<statusArray.length; j++) {
- if (statusArray[j].search(cryptoStartPat) == 0) {
- withinCryptoMsg = true;
- }
- else if (withinCryptoMsg && statusArray[j].search(cryptoEndPat) == 0) {
- withinCryptoMsg = false;
- }
- else if (statusArray[j].search(plaintextPat) == 0) {
- ++plaintextCount;
- if ((statusArray.length > j+1) && (statusArray[j+1].search(plaintextLengthPat) == 0)) {
- matches = statusArray[j+1].match(/(\w+) (\d+)/);
- if (matches.length>=3) {
- blockSeparationObj.value += (withinCryptoMsg ? "1" : "0") + ":"+matches[2]+" ";
- }
- }
- else {
- // strange: we got PLAINTEXT XX, but not PLAINTEXT_LENGTH XX
- blockSeparationObj.value += (withinCryptoMsg ? "1" : "0") + ":0 ";
- }
- }
- }
-
- if (plaintextCount > 1) statusFlags |= (nsIEnigmail.PARTIALLY_PGP | nsIEnigmail.DECRYPTION_FAILED | nsIEnigmail.BAD_SIGNATURE);
-
- blockSeparationObj.value = blockSeparationObj.value.replace(/ $/, "");
- statusFlagsObj.value = statusFlags;
- statusMsgObj.value = statusArray.join("\n");
- var errorMsg = errArray.join("\n");
-
- if ((statusFlags & nsIEnigmail.NO_SC_AVAILABLE) && errCode >0) {
- switch (errCode) {
- case 4:
- errorMsg = EnigGetString("sc.noCardAvailable");
- break;
- case 5:
- errorMsg = EnigGetString("sc.noReaderAvailable");
- break;
- }
- }
-
-
- DEBUG_LOG("enigmail.js: Enigmail.parseErrorOutput: statusFlags = "+bytesToHex(pack(statusFlags,4))+"\n");
- //DEBUG_LOG("enigmail.js: Enigmail.parseErrorOutput: statusMsg = "+statusMsgObj.value+"\n");
-
- return errorMsg;
-}
-
-Enigmail.prototype.execEnd =
-function (pipeTransport, statusFlagsObj, statusMsgObj, cmdLineObj, errorMsgObj, blockSeparationObj) {
-
- WRITE_LOG("enigmail.js: Enigmail.execEnd: \n");
-
- // Extract command line
- try {
- var request = pipeTransport.QueryInterface(Components.interfaces.nsIRequest);
-
- cmdLineObj.value = request.name;
- } catch (ex) {
- cmdLineObj.value = "unknown-command";
- }
-
- // Extract exit code and error output from pipeTransport
- var exitCode = pipeTransport.exitCode();
-
- var errListener = pipeTransport.console.QueryInterface(Components.interfaces.nsIIPCBuffer);
-
- var errOutput = errListener.getData();
-
- // Terminate pipeTransport
- errListener.shutdown();
-
- pipeTransport.terminate();
-
- var prefix = this.getLogDirectoryPrefix();
- if (prefix && (gLogLevel >= 4)) {
- WriteFileContents(prefix+"enigerr.txt", errOutput);
- DEBUG_LOG("enigmail.js: Enigmail.execEnd: copied command err output to file "+prefix+"enigerr.txt\n");
- }
-
- DEBUG_LOG("enigmail.js: Enigmail.execEnd: exitCode = "+exitCode+"\n");
- DEBUG_LOG("enigmail.js: Enigmail.execEnd: errOutput = "+errOutput+"\n");
-
-
- errorMsgObj.value = this.parseErrorOutput(errOutput, statusFlagsObj, statusMsgObj, blockSeparationObj);
-
- if (errOutput.search(/jpeg image of size \d+/)>-1) {
- statusFlagsObj.value |= nsIEnigmail.PHOTO_AVAILABLE;
- }
- if (blockSeparationObj && blockSeparationObj.value.indexOf(" ") > 0) {
- exitCode = 2;
- }
-
- CONSOLE_LOG(errorMsgObj.value+"\n");
-
- //DEBUG_LOG("enigmail.js: Enigmail.execEnd: statusFlags = "+bytesToHex(pack(statusFlags,4))+"\n");
- //DEBUG_LOG("enigmail.js: Enigmail.execEnd: statusMsg = "+statusMsgObj.value+"\n");
-
- this.stillActive();
-
- return exitCode;
-}
-
-
-// Remove all quoted strings (and angle brackets) from a list of email
-// addresses, returning a list of pure email address
-function EnigStripEmail(mailAddrs) {
-
- var qStart, qEnd;
- while ((qStart = mailAddrs.indexOf('"')) != -1) {
- qEnd = mailAddrs.indexOf('"', qStart+1);
- if (qEnd == -1) {
- ERROR_LOG("enigmail.js: EnigStripEmail: Unmatched quote in mail address: "+mailAddrs+"\n");
- mailAddrs=mailAddrs.replace(/\"/g, "");
- break;
- }
-
- mailAddrs = mailAddrs.substring(0,qStart) + mailAddrs.substring(qEnd+1);
- }
-
- // Eliminate all whitespace, just to be safe
- mailAddrs = mailAddrs.replace(/\s+/g,"");
-
- // Extract pure e-mail address list (stripping out angle brackets)
- mailAddrs = mailAddrs.replace(/(^|,)[^,]*<([^>]+)>[^,]*/g,"$1$2");
-
- return mailAddrs;
-}
-
-
-Enigmail.prototype.stripWhitespace = function(sendFlags) {
- var stripThem=false;
- if ((sendFlags & nsIEnigmail.SEND_SIGNED) &&
- (!(sendFlags & nsIEnigmail.SEND_ENCRYPTED))) {
- if (this.agentVersion >= "1.4.0" && this.agentVersion < "1.4.1") {
- stripThem = true;
- }
- }
-
- return stripThem;
-}
-
-
-Enigmail.prototype.encryptMessage =
-function (parent, uiFlags, hashAlgorithm, plainText, fromMailAddr, toMailAddr,
- sendFlags, exitCodeObj, statusFlagsObj, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.encryptMessage: "+plainText.length+" bytes from "+fromMailAddr+" to "+toMailAddr+" ("+sendFlags+")\n");
-
- exitCodeObj.value = -1;
- statusFlagsObj.value = 0;
- errorMsgObj.value = "";
-
- var hashAlgo = gMimeHashAlgorithms[this.prefBranch.getIntPref("mimeHashAlgorithm")];
-
- if (hashAlgo == null) {
- hashAlgo = hashAlgorithm;
- }
-
- if (!plainText) {
- DEBUG_LOG("enigmail.js: Enigmail.encryptMessage: NO ENCRYPTION!\n");
- exitCodeObj.value = 0;
- return plainText;
- }
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return "";
- }
-
- var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT;
- var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED;
- var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED;
-
- if (encryptMsg) {
- // First convert all linebreaks to newlines
- plainText = plainText.replace(/\r\n/g, "\n");
- plainText = plainText.replace(/\r/g, "\n");
-
- // Using platform-specific linebreaks confuses some windows mail clients,
- // so we convert everything to windows like good old PGP worked anyway.
- plainText = plainText.replace(/\n/g, "\r\n");
- }
-
- var noProxy = true;
- var startErrorMsgObj = new Object();
-
- var ipcBuffer = Components.classes[NS_IPCBUFFER_CONTRACTID].createInstance(Components.interfaces.nsIIPCBuffer);
- var bufferSize = ((plainText.length + 20000)/1024).toFixed(0)*1024;
- if (MSG_BUFFER_SIZE > bufferSize)
- bufferSize=MSG_BUFFER_SIZE;
-
- ipcBuffer.open(bufferSize, false);
-
- var pipeTrans = this.encryptMessageStart(parent, null, uiFlags,
- fromMailAddr, toMailAddr,
- hashAlgo, sendFlags, ipcBuffer,
- noProxy, startErrorMsgObj);
-
- if (!pipeTrans) {
- errorMsgObj.value = startErrorMsgObj.value;
-
- return "";
- }
-
- // Write to child STDIN
- // (ignore errors, because child may have exited already, closing STDIN)
- try {
- pipeTrans.writeSync(plainText, plainText.length);
- } catch (ex) {}
-
- // Wait for child STDOUT to close
- pipeTrans.join();
-
- var cipherText = ipcBuffer.getData();
- ipcBuffer.shutdown();
-
- var exitCode = this.encryptMessageEnd(parent, null, uiFlags, sendFlags,
- plainText.length, pipeTrans,
- statusFlagsObj, errorMsgObj);
-
- exitCodeObj.value = exitCode;
-
- if ((exitCodeObj.value == 0) && !cipherText)
- exitCodeObj.value = -1;
-
- if (exitCodeObj.value == 0) {
- // Normal return
- return cipherText;
- }
-
- // Error processing
- ERROR_LOG("enigmail.js: Enigmail.encryptMessage: Error in command execution\n");
-
- return "";
-}
-
-
-Enigmail.prototype.encryptMessageEnd =
-function (parent, prompter, uiFlags, sendFlags, outputLen, pipeTransport,
- statusFlagsObj, errorMsgObj)
-{
- DEBUG_LOG("enigmail.js: Enigmail.encryptMessageEnd: uiFlags="+uiFlags+", sendFlags="+bytesToHex(pack(sendFlags,4))+", outputLen="+outputLen+", pipeTransport="+pipeTransport+"\n");
-
- var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME;
-
- statusFlagsObj.value = 0;
- errorMsgObj.value = "";
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return -1;
- }
-
- // Terminate job and parse error output
- var statusMsgObj = new Object();
- var cmdLineObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var exitCode = this.execEnd(pipeTransport, statusFlagsObj, statusMsgObj, cmdLineObj, cmdErrorMsgObj);
- var statusMsg = statusMsgObj.value;
- exitCode = this.fixExitCode(exitCode, statusFlagsObj.value);
- if ((exitCode == 0) && !outputLen) {
- exitCode = -1;
- }
-
- if (exitCode == 0) {
- // Normal return
- errorMsgObj.value = cmdErrorMsgObj.value;
- return 0;
- }
-
- // Error processing
- ERROR_LOG("enigmail.js: Enigmail.encryptMessageEnd: Error in command execution\n");
-
- var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT;
- var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED;
- var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED;
-
- if ( (statusFlagsObj.value & nsIEnigmail.BAD_PASSPHRASE) ||
- ((this.agentType == "pgp") && signMsg && (exitCode != 21)) ) {
- // "Unremember" passphrase on error return
- this.clearCachedPassphrase();
- }
-
- if (statusFlagsObj.value & nsIEnigmail.BAD_PASSPHRASE) {
- errorMsgObj.value = EnigGetString("badPhrase");
- }
- else if (statusFlagsObj.value & nsIEnigmail.INVALID_RECIPIENT) {
- errorMsgObj.value = statusMsg;
-
- }
- else {
- errorMsgObj.value = EnigGetString("badCommand");
- }
-
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value += "\n\n" + this.agentType + " "+EnigGetString("cmdLine");
- errorMsgObj.value += "\n" + cmdLineObj.value;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- if (pgpMime && errorMsgObj.value) {
- if (prompter)
- prompter.alert(EnigGetString("enigAlert"), errorMsgObj.value);
- else
- this.alertMsg(parent, errorMsgObj.value);
- }
-
- return exitCode;
-}
-
-var gPGPHashNum = {md5:1, sha1:2, ripemd160:3, sha256:4, sha384:5, sha512:6};
-
-Enigmail.prototype.getEncryptCommand =
-function (fromMailAddr, toMailAddr, hashAlgorithm, sendFlags, isAscii, errorMsgObj) {
- try {
- fromMailAddr = EnigStripEmail(fromMailAddr);
- toMailAddr = EnigStripEmail(toMailAddr);
-
- } catch (ex) {
- errorMsgObj.value = EnigGetString("invalidEmail");
- return null;
- }
-
- var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT;
- var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED;
- var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED;
- var usePgpMime = sendFlags & nsIEnigmail.SEND_PGP_MIME;
-
- var useDefaultComment = false;
- try {
- useDefaultComment = this.prefBranch.getBoolPref("useDefaultComment")
- } catch(ex) { }
-
- var hushMailSupport = false;
- try {
- hushMailSupport = this.prefBranch.getBoolPref("hushMailSupport")
- } catch(ex) { }
-
- var detachedSig = (usePgpMime || (sendFlags & nsIEnigmail.SEND_ATTACHMENT)) && signMsg && !encryptMsg;
-
- var toAddrList = toMailAddr.split(/\s*,\s*/);
- var k;
-
- var encryptCommand = this.getAgentPath();
-
- encryptCommand += GPG_BATCH_OPTS;
-
- if (!useDefaultComment)
- encryptCommand += " --comment "+this.quoteSign+GPG_COMMENT_OPT.replace(/\%s/, this.vendor)+this.quoteSign;
-
- var angledFromMailAddr = ((fromMailAddr.search(/^0x/) == 0) || hushMailSupport)
- ? fromMailAddr : "<" + fromMailAddr + ">";
- angledFromMailAddr = angledFromMailAddr.replace(/([\"\'\`])/g, "\\$1");
-
- if (signMsg && hashAlgorithm) {
- encryptCommand += " --digest-algo "+hashAlgorithm;
- }
-
- if (encryptMsg) {
- switch (isAscii) {
- case ENC_TYPE_MSG:
- encryptCommand += " -a -t";
- break;
- case ENC_TYPE_ATTACH_ASCII:
- encryptCommand += " -a";
- }
-
- encryptCommand += " -e";
-
- if (signMsg)
- encryptCommand += " -s";
-
- if (sendFlags & nsIEnigmail.SEND_ALWAYS_TRUST) {
- if (this.agentVersion >= "1.4") {
- encryptCommand += " --trust-model always"
- }
- else {
- encryptCommand += " --always-trust";
- }
- }
- if ((sendFlags & nsIEnigmail.SEND_ENCRYPT_TO_SELF) && fromMailAddr)
- encryptCommand += " --encrypt-to " + angledFromMailAddr;
-
- for (k=0; k<toAddrList.length; k++) {
- toAddrList[k] = toAddrList[k].replace(/\'/g, "\\'");
- encryptCommand += (hushMailSupport || (toAddrList[k].search(/^0x/) == 0)) ? " -r "+ toAddrList[k]
- :" -r <" + toAddrList[k] + ">";
- }
-
- } else if (detachedSig) {
- encryptCommand += " -s -b";
-
- switch (isAscii) {
- case ENC_TYPE_MSG:
- encryptCommand += " -a -t";
- break;
- case ENC_TYPE_ATTACH_ASCII:
- encryptCommand += " -a";
- }
-
- } else if (signMsg) {
- encryptCommand += " -t --clearsign";
- }
-
- if (fromMailAddr) {
- encryptCommand += " -u " + angledFromMailAddr;
- }
-
- return encryptCommand;
-}
-
-Enigmail.prototype.determineHashAlgorithm =
-function (prompter, uiFlags, fromMailAddr, hashAlgoObj) {
- DEBUG_LOG("enigmail.js: Enigmail.determineHashAlgorithm: from "+fromMailAddr+"\n");
-
- var exitCodeObj = new Object();
- var statusFlagsObj = new Object();
- var errorMsgObj = new Object();
-
- var sendFlags = nsIEnigmail.SEND_TEST | nsIEnigmail.SEND_SIGNED;
-
- var hashAlgo = gMimeHashAlgorithms[this.prefBranch.getIntPref("mimeHashAlgorithm")];
-
- if (!this.initialized) {
- DEBUG_LOG("enigmail.js: Enigmail.determineHashAlgorithm: Enigmail not initialized\n")
- this.alertMsg(null, EnigGetString("notInit"));
- return 2;
- }
-
- var passwdObj = new Object();
- var useAgentObj = new Object();
- // Get the passphrase and remember it for the next 2 subsequent calls to gpg
- if (!GetPassphrase(null, passwdObj, useAgentObj, 2)) {
- ERROR_LOG("enigmail.js: Enigmail.determineHashAlgorithm: Error - no passphrase supplied\n");
-
- return 3;
- }
-
- var noProxy = true;
- var testUiFlags = nsIEnigmail.UI_TEST;
-
- var ipcBuffer = Components.classes[NS_IPCBUFFER_CONTRACTID].createInstance(Components.interfaces.nsIIPCBuffer);
- var bufferSize = 10240;
-
- ipcBuffer.open(bufferSize, false);
-
- var pipeTrans = this.encryptMessageStart(null, prompter, testUiFlags,
- fromMailAddr, "",
- hashAlgo, sendFlags, ipcBuffer,
- noProxy, errorMsgObj);
- if (!pipeTrans) {
- return 1;
- }
-
- var plainText = "Dummy Test";
-
- // Write to child STDIN
- // (ignore errors, because child may have exited already, closing STDIN)
- try {
- pipeTrans.writeSync(plainText, plainText.length);
- } catch (ex) {}
-
- // Wait for child STDOUT to close
- pipeTrans.join();
-
- var msgText = ipcBuffer.getData();
- ipcBuffer.shutdown();
-
- var exitCode = this.encryptMessageEnd(null, prompter, testUiFlags, sendFlags,
- plainText.length, pipeTrans,
- statusFlagsObj, errorMsgObj);
-
- if ((exitCode == 0) && !msgText) exitCode = 1;
- // if (exitCode > 0) exitCode = -exitCode;
-
- if (exitCode != 0) {
- // Abormal return
- if (statusFlagsObj.value & nsIEnigmail.BAD_PASSPHRASE) {
- // "Unremember" passphrase on error return
- this.clearCachedPassphrase();
- errorMsgObj.value = EnigGetString("badPhrase");
- }
- this.alertMsg(null, errorMsgObj.value);
- return exitCode;
- }
-
- var m = msgText.match(/^(Hash: )(.*)$/m);
- if (m.length > 2 && m[1] == "Hash: ") {
- var hashAlgorithm = m[2].toLowerCase();
- for (var i=1; i < gMimeHashAlgorithms.length; i++) {
- if (gMimeHashAlgorithms[i] == hashAlgorithm) {
- DEBUG_LOG("enigmail.js: Enigmail.determineHashAlgorithm: found hashAlgorithm "+hashAlgorithm+"\n");
- hashAlgoObj.value = hashAlgorithm;
- return 0;
- }
- }
- }
-
- return 2;
-}
-
-
-Enigmail.prototype.encryptMessageStart =
-function (parent, prompter, uiFlags, fromMailAddr, toMailAddr,
- hashAlgorithm, sendFlags, listener, noProxy, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.encryptMessageStart: prompter="+prompter+", uiFlags="+uiFlags+", from "+fromMailAddr+" to "+toMailAddr+", hashAlgorithm="+hashAlgorithm+" ("+bytesToHex(pack(sendFlags,4))+")\n");
-
- var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME;
-
- errorMsgObj.value = "";
-
- if (!sendFlags) {
- DEBUG_LOG("enigmail.js: Enigmail.encryptMessageStart: NO ENCRYPTION!\n");
- errorMsgObj.value = EnigGetString("notRequired");
- return null;
- }
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return null;
- }
-
- if (this.keygenProcess) {
- errorMsgObj.value = EnigGetString("notComplete");
- return null;
- }
-
- var encryptCommand = this.getEncryptCommand(fromMailAddr, toMailAddr, hashAlgorithm, sendFlags, ENC_TYPE_MSG, errorMsgObj);
- if (! encryptCommand)
- return null;
-
- var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED;
-
- var statusFlagsObj = new Object();
- var pipetrans = this.execStart(encryptCommand, signMsg, parent, prompter,
- listener, noProxy, statusFlagsObj);
-
- if (statusFlagsObj.value & nsIEnigmail.MISSING_PASSPHRASE) {
- ERROR_LOG("enigmail.js: Enigmail.encryptMessageStart: Error - no passphrase supplied\n");
-
- errorMsgObj.value = null;
- }
-
- if (pgpMime && errorMsgObj.value) {
- if (prompter)
- prompter.alert(EnigGetString("enigAlert"), errorMsgObj.value);
- else
- this.alertMsg(parent, errorMsgObj.value);
- }
-
- return pipetrans;
-}
-
-
-// Locates STRing in TEXT occurring only at the beginning of a line
-function IndexOfArmorDelimiter(text, str, offset) {
- //DEBUG_LOG("enigmail.js: IndexOfArmorDelimiter: "+str+", "+offset+"\n");
-
- while (offset < text.length) {
-
- var loc = text.indexOf(str, offset);
-
- if ((loc < 1) || (text.charAt(loc-1) == "\n"))
- return loc;
-
- offset = loc + str.length;
- }
-
- return -1;
-}
-
-// Locates offsets bracketing PGP armored block in text,
-// starting from given offset, and returns block type string.
-// beginIndex = offset of first character of block
-// endIndex = offset of last character of block (newline)
-// If block is not found, the null string is returned;
-
-Enigmail.prototype.locateArmoredBlock =
-function (text, offset, indentStr, beginIndexObj, endIndexObj,
- indentStrObj) {
- DEBUG_LOG("enigmail.js: Enigmail.locateArmoredBlock: "+offset+", '"+indentStr+"'\n");
-
- beginIndexObj.value = -1;
- endIndexObj.value = -1;
-
- var beginIndex = IndexOfArmorDelimiter(text, indentStr+"-----BEGIN PGP ", offset);
-
- if (beginIndex == -1) {
- var blockStart=text.indexOf("-----BEGIN PGP ")
- if (blockStart>=0) {
- var indentStart=text.search(/\n.*\-\-\-\-\-BEGIN PGP /)+1;
- indentStrObj.value=text.substring(indentStart, blockStart);
- indentStr=indentStrObj.value;
- beginIndex = IndexOfArmorDelimiter(text, indentStr+"-----BEGIN PGP ", offset);
- }
- }
-
- if (beginIndex == -1)
- return "";
-
- // Locate newline at end of armor header
- offset = text.indexOf("\n", beginIndex);
-
- if (offset == -1)
- return "";
-
- var endIndex = IndexOfArmorDelimiter(text, indentStr+"-----END PGP ", offset);
-
- if (endIndex == -1)
- return "";
-
- // Locate newline at end of PGP block
- endIndex = text.indexOf("\n", endIndex);
-
- if (endIndex == -1) {
- // No terminating newline
- endIndex = text.length - 1;
- }
-
- var blockHeader = text.substr(beginIndex, offset-beginIndex+1);
-
- var blockRegex = new RegExp("^" + indentStr +
- "-----BEGIN PGP (.*)-----\\s*\\r?\\n");
-
- var matches = blockHeader.match(blockRegex);
-
- var blockType = "";
- if (matches && (matches.length > 1)) {
- blockType = matches[1];
- DEBUG_LOG("enigmail.js: Enigmail.locateArmoredBlock: blockType="+blockType+"\n");
- }
-
- if (blockType == "UNVERIFIED MESSAGE") {
- // Skip any unverified message block
- return this.locateArmoredBlock(text, endIndex+1, indentStr,
- beginIndexObj, endIndexObj, indentStrObj);
- }
-
- beginIndexObj.value = beginIndex;
- endIndexObj.value = endIndex;
-
- return blockType;
-}
-
-
-Enigmail.prototype.extractSignaturePart =
-function (signatureBlock, part) {
- DEBUG_LOG("enigmail.js: Enigmail.extractSignaturePart: part="+part+"\n");
-
- // Search for blank line
- var offset = signatureBlock.search(/\n\s*\r?\n/);
- if (offset == -1)
- return "";
-
- offset = signatureBlock.indexOf("\n", offset+1);
- if (offset == -1)
- return "";
-
- var beginIndex = signatureBlock.indexOf("-----BEGIN PGP SIGNATURE-----",
- offset+1);
- if (beginIndex == -1)
- return "";
-
- if (part == nsIEnigmail.SIGNATURE_TEXT) {
- var signedText = signatureBlock.substr(offset+1, beginIndex-offset-1);
-
- // Unescape leading dashes
- signedText = signedText.replace(/^- -/, "-");
- signedText = signedText.replace(/\n- -/g, "\n-");
- signedText = signedText.replace(/\r- -/g, "\r-");
-
- return signedText;
- }
-
- // Locate newline at end of armor header
- offset = signatureBlock.indexOf("\n", beginIndex);
-
- if (offset == -1)
- return "";
-
- var endIndex = signatureBlock.indexOf("-----END PGP SIGNATURE-----", offset);
- if (endIndex == -1)
- return "";
-
- var signBlock = signatureBlock.substr(offset, endIndex-offset);
-
- // Search for blank line
- var armorIndex = signBlock.search(/\n\s*\r?\n/);
- if (armorIndex == -1)
- return "";
-
- if (part == nsIEnigmail.SIGNATURE_HEADERS) {
- return signBlock.substr(1, armorIndex);
- }
-
- armorIndex = signBlock.indexOf("\n", armorIndex+1);
- if (armorIndex == -1)
- return "";
-
- if (part == nsIEnigmail.SIGNATURE_ARMOR) {
- var armorData = signBlock.substr(armorIndex, endIndex-armorIndex);
- armorData = armorData.replace(/\s*/g, "");
- return armorData;
- }
-
- return "";
-}
-
-
-Enigmail.prototype.decryptMessage =
-function (parent, uiFlags, cipherText, signatureObj, exitCodeObj,
- statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj,
- blockSeparationObj) {
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessage: "+cipherText.length+" bytes, "+uiFlags+"\n");
-
- if (! cipherText)
- return "";
-
- var interactive = uiFlags & nsIEnigmail.UI_INTERACTIVE;
- var allowImport = uiFlags & nsIEnigmail.UI_ALLOW_KEY_IMPORT;
- var unverifiedEncryptedOK = uiFlags & nsIEnigmail.UI_UNVERIFIED_ENC_OK;
- var oldSignature = signatureObj.value;
-
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessage: oldSignature="+oldSignature+"\n");
-
- signatureObj.value = "";
- exitCodeObj.value = -1;
- statusFlagsObj.value = 0;
- keyIdObj.value = "";
- userIdObj.value = "";
- errorMsgObj.value = "";
-
- var beginIndexObj = new Object();
- var endIndexObj = new Object();
- var indentStrObj = new Object();
- var blockType = this.locateArmoredBlock(cipherText, 0, "",
- beginIndexObj, endIndexObj, indentStrObj);
-
- if (!blockType || blockType == "SIGNATURE") {
- errorMsgObj.value = EnigGetString("noPGPblock");
- statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE;
- return "";
- }
-
- var publicKey = (blockType == "PUBLIC KEY BLOCK");
-
- var verifyOnly = (blockType == "SIGNED MESSAGE");
-
- var pgpBlock = cipherText.substr(beginIndexObj.value,
- endIndexObj.value - beginIndexObj.value + 1);
-
- if (indentStrObj.value) {
- RegExp.multiline = true;
- var indentRegexp = new RegExp("^"+indentStrObj.value, "g");
- pgpBlock = pgpBlock.replace(indentRegexp, "");
- RegExp.multiline = false;
- }
-
- var head = cipherText.substr(0, beginIndexObj.value);
- var tail = cipherText.substr(endIndexObj.value+1,
- cipherText.length - endIndexObj.value - 1);
-
- if (publicKey) {
- if (!allowImport) {
- errorMsgObj.value = EnigGetString("decryptToImport");
- statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE;
- statusFlagsObj.value |= nsIEnigmail.INLINE_KEY;
-
- return "";
- }
-
- // Import public key
- var importFlags = nsIEnigmail.UI_INTERACTIVE;
- exitCodeObj.value = this.importKey(parent, importFlags, pgpBlock, "",
- errorMsgObj);
- if (exitCodeObj.value == 0) {
- statusFlagsObj.value |= nsIEnigmail.IMPORTED_KEY;
- }
- return "";
- }
-
- var newSignature = "";
-
- if (verifyOnly) {
- newSignature = this.extractSignaturePart(pgpBlock,
- nsIEnigmail.SIGNATURE_ARMOR);
-
- if (oldSignature && (newSignature != oldSignature)) {
- ERROR_LOG("enigmail.js: Enigmail.decryptMessage: Error - signature mismatch "+newSignature+"\n");
- errorMsgObj.value = EnigGetString("sigMismatch");
- statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE;
-
- return "";
- }
- }
-
- var noOutput = false;
- var noProxy = true;
- var startErrorMsgObj = new Object();
-
- var readBytes = MSG_BUFFER_SIZE;
- if (verifyOnly && pgpBlock.length > MSG_BUFFER_SIZE) {
- readBytes = ((pgpBlock.length+1500)/1024).toFixed(0)*1024;
- }
- if (readBytes > MAX_MSG_BUFFER_SIZE) {
- errorMsgObj.value = EnigGetString("messageSizeError");
- statusFlagsObj.value |= nsIEnigmail.OVERFLOWED;
- exitCodeObj.value = 1;
- return "";
- }
-
- const maxTries = 2;
- var tryCount = 0;
- while (tryCount < maxTries) {
- tryCount++;
-
- var ipcBuffer = Components.classes[NS_IPCBUFFER_CONTRACTID].createInstance(Components.interfaces.nsIIPCBuffer);
- ipcBuffer.open(readBytes, false);
-
- var pipeTrans = this.decryptMessageStart(parent, null, verifyOnly, noOutput,
- ipcBuffer, noProxy, startErrorMsgObj);
-
- if (!pipeTrans) {
- errorMsgObj.value = startErrorMsgObj.value;
- statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE;
-
- return "";
- }
-
- // Write to child STDIN
- // (ignore errors, because child may have exited already, closing STDIN)
- try {
- pipeTrans.writeSync(pgpBlock, pgpBlock.length);
- } catch (ex) {}
-
- // Wait for child STDOUT to close
- pipeTrans.join();
-
- var overflowed = ipcBuffer.overflowed;
- var plainText = ipcBuffer.getData();
- if (ipcBuffer.overflowed && plainText.length < ipcBuffer.totalBytes) {
- readBytes = ((ipcBuffer.totalBytes+1500)/1024).toFixed(0)*1024;
- WRITE_LOG("enigmail.js: Enigmail.decryptMessage: decrypted text too big for standard buffer, retrying with buffer size="+readBytes+"\n");
- }
- else {
- tryCount = maxTries;
- }
-
- ipcBuffer.shutdown();
- ipcBuffer = null; // make sure the object gets freed
-
- var exitCode = this.decryptMessageEnd(uiFlags, plainText.length, pipeTrans,
- verifyOnly, noOutput,
- statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj,
- errorMsgObj, blockSeparationObj);
- exitCodeObj.value = exitCode;
- }
-
- if ((head.search(/\S/) >= 0) ||
- (tail.search(/\S/) >= 0)) {
- statusFlagsObj.value |= nsIEnigmail.PARTIALLY_PGP;
- }
-
-
- if (exitCodeObj.value == 0) {
- // Normal return
-
- var doubleDashSeparator = false;
- try {
- doubleDashSeparator = this.prefBranch.getBoolPref("doubleDashSeparator")
- } catch(ex) { }
-
- if (doubleDashSeparator && (plainText.search(/(\r|\n)-- +(\r|\n)/) < 0) ) {
- // Workaround for MsgCompose stripping trailing spaces from sig separator
- plainText = plainText.replace(/(\r|\n)--(\r|\n)/, "$1-- $2");
- }
-
- statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE;
-
- if (verifyOnly && indentStrObj.value) {
- RegExp.multiline = true;
- plainText = plainText.replace(/^/g, indentStrObj.value)
- RegExp.multiline = false;
- }
- return plainText;
- }
-
- var pubKeyId = keyIdObj.value;
-
- if (statusFlagsObj.value & nsIEnigmail.BAD_SIGNATURE) {
- if (verifyOnly && indentStrObj.value) {
- // Probably replied message that could not be verified
- errorMsgObj.value = EnigGetString("unverifiedReply")+"\n\n"+errorMsgObj.value;
- return "";
- }
-
- // Return bad signature (for checking later)
- signatureObj.value = newSignature;
-
- } else if (pubKeyId &&
- (statusFlagsObj.value & nsIEnigmail.UNVERIFIED_SIGNATURE)) {
-
- var innerKeyBlock;
- if (verifyOnly) {
- // Search for indented public key block in signed message
- var innerBlockType = this.locateArmoredBlock(pgpBlock, 0, "- ",
- beginIndexObj, endIndexObj,
- indentStrObj);
-
- if (innerBlockType == "PUBLIC KEY BLOCK") {
-
- innerKeyBlock = pgpBlock.substr(beginIndexObj.value,
- endIndexObj.value - beginIndexObj.value + 1);
-
- innerKeyBlock = innerKeyBlock.replace(/- -----/g, "-----");
-
- statusFlagsObj.value |= nsIEnigmail.INLINE_KEY;
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessage: innerKeyBlock found\n");
- }
- }
-
- if (allowImport) {
-
- var importedKey = false;
-
- if (innerKeyBlock) {
- var importErrorMsgObj = new Object();
- var importFlags2 = nsIEnigmail.UI_INTERACTIVE;
- var exitStatus = this.importKey(parent, importFlags2, innerKeyBlock,
- pubKeyId, importErrorMsgObj);
-
- importedKey = (exitStatus == 0);
-
- if (exitStatus > 0) {
- this.alertMsg(parent, EnigGetString("cantImport")+importErrorMsgObj.value);
- }
- }
-
- if (importedKey) {
- // Recursive call; note that nsIEnigmail.UI_ALLOW_KEY_IMPORT is unset
- // to break the recursion
- var uiFlagsDeep = interactive ? nsIEnigmail.UI_INTERACTIVE : 0;
- signatureObj.value = "";
- return this.decryptMessage(parent, uiFlagsDeep, pgpBlock,
- signatureObj, exitCodeObj, statusFlagsObj,
- keyIdObj, userIdObj, sigDetailsObj, errorMsgObj);
- }
-
- }
-
- if (plainText && !unverifiedEncryptedOK) {
- // Append original PGP block to unverified message
- plainText = "-----BEGIN PGP UNVERIFIED MESSAGE-----\r\n" + plainText +
- "-----END PGP UNVERIFIED MESSAGE-----\r\n\r\n" + pgpBlock;
- }
-
- }
-
- return verifyOnly ? "" : plainText;
-}
-
-
-Enigmail.prototype.decryptMessageStart =
-function (parent, prompter, verifyOnly, noOutput,
- listener, noProxy, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessageStart: prompter="+prompter+", verifyOnly="+verifyOnly+", noOutput="+noOutput+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return null;
- }
-
- if (this.keygenProcess) {
- errorMsgObj.value = EnigGetString("notComplete");
- return null;
- }
-
- var decryptCommand = this.getAgentPath() + GPG_BATCH_OPTS;
-
- var keyserver = this.prefBranch.getCharPref("autoKeyRetrieve");
- if (keyserver != "") {
- decryptCommand += " --keyserver-options auto-key-retrieve";
- var srvProxy = this.getHttpProxy(keyserver);
- if (srvProxy && this.agentVersion>="1.4" ) {
- decryptCommand += ",http-proxy="+srvProxy;
- }
- decryptCommand += " --keyserver "+keyserver;
- }
-
- if (noOutput) {
- decryptCommand += " --verify";
-
- } else {
- decryptCommand += " -d";
- }
-
- var statusFlagsObj = new Object();
- var pipetrans = this.execStart(decryptCommand, !verifyOnly, parent, prompter,
- listener, noProxy, statusFlagsObj);
-
- if (statusFlagsObj.value & nsIEnigmail.MISSING_PASSPHRASE) {
- ERROR_LOG("enigmail.js: Enigmail.decryptMessageStart: Error - no passphrase supplied\n");
-
- errorMsgObj.value = EnigGetString("noPassphrase");
- return null;
- }
-
- return pipetrans;
-}
-
-
-Enigmail.prototype.decryptMessageEnd =
-function (uiFlags, outputLen, pipeTransport, verifyOnly, noOutput,
- statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj, blockSeparationObj) {
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessageEnd: uiFlags="+uiFlags+", outputLen="+outputLen+", pipeTransport="+pipeTransport+", verifyOnly="+verifyOnly+", noOutput="+noOutput+"\n");
-
- var interactive = uiFlags & nsIEnigmail.UI_INTERACTIVE;
- var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME;
- var allowImport = uiFlags & nsIEnigmail.UI_ALLOW_KEY_IMPORT;
- var unverifiedEncryptedOK = uiFlags & nsIEnigmail.UI_UNVERIFIED_ENC_OK;
- var j;
-
- statusFlagsObj.value = 0;
- errorMsgObj.value = "";
- blockSeparationObj.value = "";
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return -1;
- }
-
- // Terminate job and parse error output
- var statusMsgObj = new Object();
- var cmdLineObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var exitCode = this.execEnd(pipeTransport, statusFlagsObj, statusMsgObj, cmdLineObj, cmdErrorMsgObj, blockSeparationObj);
-
- if (pgpMime) {
- statusFlagsObj.value |= verifyOnly ? nsIEnigmail.PGP_MIME_SIGNED
- : nsIEnigmail.PGP_MIME_ENCRYPTED;
- }
-
- var statusMsg = statusMsgObj.value;
- exitCode = this.fixExitCode(exitCode, statusFlagsObj.value);
- if ((exitCode == 0) && !noOutput && !outputLen &&
- ((statusFlagsObj.value & (gStatusFlags.DECRYPTION_OKAY | gStatusFlags.GOODSIG)) == 0)) {
- exitCode = -1;
- }
-
- if (exitCode == 0) {
- // Normal return
- var errLines, goodSignPat, badSignPat, keyExpPat;
-
- if (statusMsg) {
- errLines = statusMsg.split(/\r?\n/);
-
- goodSignPat = /GOODSIG (\w{16}) (.*)$/i;
- badSignPat = /BADSIG (\w{16}) (.*)$/i;
- keyExpPat = /EXPKEYSIG (\w{16}) (.*)$/i
- revKeyPat = /REVKEYSIG (\w{16}) (.*)$/i;
- validSigPat = /VALIDSIG (\w+) (.*) (\d+) (.*)/i;
-
- } else {
- errLines = cmdErrorMsgObj.value.split(/\r?\n/);
-
- goodSignPat = /Good signature from (user )?"(.*)"\.?/i;
- badSignPat = /BAD signature from (user )?"(.*)"\.?/i;
- keyExpPat = /This key has expired/i;
- revKeyPat = /This key has been revoked/i;
- validSigPat = /dummy-not-used/i;
- }
-
- errorMsgObj.value = "";
-
- var matches;
-
- var signed = false;
- var goodSignature;
-
- var userId = "";
- var keyId = "";
- var sigDetails = "";
-
- for (j=0; j<errLines.length; j++) {
- matches = errLines[j].match(badSignPat);
-
- if (matches && (matches.length > 2)) {
- signed = true;
- goodSignature = false;
- userId = matches[2];
- keyId = matches[1];
- break;
- }
-
- matches = errLines[j].match(revKeyPat);
-
- if (matches && (matches.length > 2)) {
- signed = true;
- goodSignature = true;
- userId = matches[2];
- keyId = matches[1];
- break;
- }
-
- matches = errLines[j].match(goodSignPat);
-
- if (matches && (matches.length > 2)) {
- signed = true;
- goodSignature = true;
- userId = matches[2];
- keyId = matches[1];
- break;
- }
-
- matches = errLines[j].match(keyExpPat);
-
- if (matches && (matches.length > 2)) {
- signed = true;
- goodSignature = true;
- userId = matches[2];
- keyId = matches[1];
-
- break;
- }
- }
-
- if (goodSignature) {
- for (var j=0; j<errLines.length; j++) {
- matches = errLines[j].match(validSigPat);
-
- if (matches && (matches.length > 2)) {
- sigDetails = errLines[j].substr(9);
- break;
- }
- }
- }
-
- try {
- if (userId && keyId && this.prefBranch.getBoolPref("displaySecondaryUid")) {
- uids = this.getKeyDetails(keyId, true);
- if (uids) {
- userId = uids;
- }
- }
- }
- catch (ex) {}
-
- if (userId) {
- userId = EnigConvertToUnicode(userId, "UTF-8");
- }
-
- userIdObj.value = userId;
- keyIdObj.value = keyId;
- sigDetailsObj.value = sigDetails;
-
- if (signed) {
- var trustPrefix = "";
-
- if (statusFlagsObj.value & nsIEnigmail.UNTRUSTED_IDENTITY) {
- trustPrefix += EnigGetString("prefUntrusted")+" ";
- }
-
- if (statusFlagsObj.value & nsIEnigmail.REVOKED_KEY) {
- trustPrefix += EnigGetString("prefRevoked")+" ";
- }
-
- if (statusFlagsObj.value & nsIEnigmail.EXPIRED_KEY_SIGNATURE) {
- trustPrefix += EnigGetString("prefExpiredKey")+" ";
-
- } else if (statusFlagsObj.value & nsIEnigmail.EXPIRED_SIGNATURE) {
- trustPrefix += EnigGetString("prefExpired")+" ";
- }
-
- if (goodSignature) {
- errorMsgObj.value = trustPrefix + EnigGetString("prefGood",userId) /* + ", " +
- EnigGetString("keyId") + " 0x" + keyId.substring(8,16); */
-
- if (this.agentType != "gpg") {
- // Trust all good signatures, if not GPG
- statusFlagsObj.value |= nsIEnigmail.GOOD_SIGNATURE | nsIEnigmail.TRUSTED_IDENTITY;
- }
-
- } else {
- errorMsgObj.value = trustPrefix + EnigGetString("prefBad",userId) /*+ ", " +
- EnigGetString("keyId") + " 0x" + keyId.substring(8,16); */
- if (!exitCode)
- exitCode = 1;
-
- if (this.agentType != "gpg")
- statusFlagsObj.value |= nsIEnigmail.BAD_SIGNATURE;
- }
- }
-
- if (!verifyOnly && (this.agentType != "gpg")) {
- statusFlagsObj.value |= nsIEnigmail.DECRYPTION_OKAY;
- }
-
- return exitCode;
- }
-
- if ((statusFlagsObj.value & nsIEnigmail.BAD_PASSPHRASE) ||
- ((this.agentType == "pgp") && !verifyOnly && (exitCode != 30)) ) {
- // "Unremember" passphrase on decryption failure
- this.clearCachedPassphrase();
- }
-
- var pubKeyId;
-
- if (statusFlagsObj.value & nsIEnigmail.UNVERIFIED_SIGNATURE) {
- // Unverified signature
- var matchb = statusMsg.match(/(^|\n)NO_PUBKEY (\w{8})(\w{8})/);
-
- if (matchb && (matchb.length > 3)) {
- pubKeyId = "0x" + matchb[3];
- DEBUG_LOG("enigmail.js: Enigmail.decryptMessageEnd: NO_PUBKEY "+pubKeyId+"\n");
- keyIdObj.value = matchb[2]+matchb[3];
- }
- if (statusFlagsObj.value & nsIEnigmail.DECRYPTION_OKAY) {
- exitCode=0;
- }
-
- }
-
- if (this.agentType != "gpg") {
- // Not GPG
-
- if (verifyOnly) {
- // Assume bad signature is reason for failure
- statusFlagsObj.value |= nsIEnigmail.BAD_SIGNATURE;
-
- } else {
- statusFlagsObj.value |= outputLen ? nsIEnigmail.DECRYPTION_OKAY
- : nsIEnigmail.DECRYPTION_FAILED;
- }
- }
-
- if (exitCode != 0) {
- // Error processing
- ERROR_LOG("enigmail.js: Enigmail.decryptMessageEnd: Error in command execution\n");
- }
-
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value = this.agentType + " " + EnigGetString("cmdLine");
- errorMsgObj.value += "\n" + cmdLineObj.value;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- return exitCode;
-}
-
-
-// ExitCode == 0 => success
-// ExitCode > 0 => error
-// ExitCode == -1 => Cancelled by user
-Enigmail.prototype.receiveKey =
-function (recvFlags, keyserver, keyId, requestObserver, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.receiveKey: "+keyId+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return null;
- }
-
- if (this.agentType != "gpg") {
- errorMsgObj.value = EnigGetString("failOnlyGPG");
- return null;
- }
-
- if (!keyserver) {
- errorMsgObj.value = EnigGetString("failNoServer");
- return null;
- }
-
- if (!keyId && ! (recvFlags & nsIEnigmail.REFRESH_KEY)) {
- errorMsgObj.value = EnigGetString("failNoID");
- return null;
- }
-
- var envList = [];
- envList = envList.concat(gEnvList);
-
- var proxyHost = this.getHttpProxy(keyserver);
- var command = this.getAgentPath();
-
- if (! (recvFlags & nsIEnigmail.SEARCH_KEY)) command += GPG_BATCH_OPTS;
-
- if (proxyHost) {
- command += " --keyserver-options honor-http-proxy";
- envList.push("http_proxy="+proxyHost);
- }
- command += " --keyserver " + keyserver;
-
- if (recvFlags & nsIEnigmail.DOWNLOAD_KEY) {
- command += " --recv-keys " + keyId;
- }
- else if (recvFlags & nsIEnigmail.SEARCH_KEY) {
- command += " --search-keys " + keyId;
- }
- else if (recvFlags & nsIEnigmail.UPLOAD_KEY) {
- command += " --send-keys " + keyId;
- }
- else if (recvFlags & nsIEnigmail.REFRESH_KEY) {
- command += " --refresh-keys";
- }
-
- var exitCodeObj = new Object();
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
- var cmdLineObj = new Object();
-
- CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
- var pipeConsole = Components.classes[NS_PIPECONSOLE_CONTRACTID].createInstance(Components.interfaces.nsIPipeConsole);
- // Create joinable console
- pipeConsole.open(20, 80, true);
-
- var ipcRequest = null;
- try {
- ipcRequest = gEnigmailSvc.ipcService.execAsync(command,
- false,
- "",
- "",
- 0,
- envList, envList.length,
- pipeConsole,
- pipeConsole,
- requestObserver);
- } catch (ex) {
- ERROR_LOG("enigmail.js: Enigmail.receiveKey: execAsync failed\n");
- }
-
- if (!ipcRequest) {
- ERROR_LOG("enigmail.js: Enigmail.receiveKey: execAsync failed somehow\n");
- return null;
- }
-
- return ipcRequest;
-}
-
-
-function GetPasswdForHost(hostname, userObj, passwdObj) {
- return -1;
- var passwordmanager = Components.classes["@mozilla.org/passwordmanager;1"].getService(Components.interfaces.nsIPasswordManager);
- var enumerator = passwordmanager.enumerator;
-
- while (enumerator.hasMoreElements()) {
- var nextPassword;
- try {
- nextPassword = enumerator.getNext();
- } catch(e) {
- // user supplied invalid database key
- return -1;
- }
- nextPassword = nextPassword.QueryInterface(Components.interfaces.nsIPassword);
- // try/catch in case decryption fails (invalid signon entry)
- try {
- var passwdHost = nextPassword.host.replace(/^.*:\/\//, "");
- if (passwdHost == hostname) {
- userObj.value = nextPassword.user;
- passwdObj.value = nextPassword.password;
- return 0;
- }
- } catch (e) {
- // password cannot be decrypted
- }
- }
- return 1;
-}
-
-
-
-Enigmail.prototype.getHttpProxy =
-function (hostName) {
- var proxyHost = null;
- //try {
- if (this.prefBranch.getBoolPref("respectHttpProxy")) {
- // determine proxy host
- var prefsSvc = Components.classes[NS_PREFS_SERVICE_CID].getService(Components.interfaces.nsIPrefService);
- var prefRoot = prefsSvc.getBranch(null);
- var useProxy = prefRoot.getIntPref("network.proxy.type");
- if (useProxy==1) {
- var proxyHostName = prefRoot.getCharPref("network.proxy.http");
- var proxyHostPort = prefRoot.getIntPref("network.proxy.http_port");
- var noProxy = prefRoot.getCharPref("network.proxy.no_proxies_on").split(/[ ,]/);
- for (var i=0; i<noProxy.length; i++) {
- var proxySearch=new RegExp(noProxy[i].replace(/\./, "\\.")+"$", "i");
- if (noProxy[i] && hostName.search(proxySearch)>=0) {
- i=noProxy.length+1;
- proxyHostName=null;
- }
- }
-
- if (proxyHostName) {
- var userObj = new Object();
- var passwdObj = new Object();
- if (GetPasswdForHost(proxyHostName, userObj, passwdObj) == 0) {
- proxyHostName = userObj.value+":"+passwdObj.value+"@"+proxyHostName;
- }
- }
- if (proxyHostName && proxyHostPort) {
- proxyHost="http://"+proxyHostName+":"+proxyHostPort;
- }
- }
- }
- //}
- //catch (ex) {}
- return proxyHost;
-}
-
-Enigmail.prototype.searchKey =
-function (recvFlags, protocol, keyserver, port, keyValue, requestObserver, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.searchKey: "+keyValue+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return null;
- }
-
- if (this.agentType != "gpg") {
- errorMsgObj.value = EnigGetString("failOnlyGPG");
- return null;
- }
-
- if (!keyserver) {
- errorMsgObj.value = EnigGetString("failNoServer");
- return null;
- }
-
- if (!keyValue) {
- errorMsgObj.value = EnigGetString("failNoID");
- return null;
- }
-
- var envList = [];
- envList = envList.concat(gEnvList);
-
- var proxyHost = null;
- if (protocol=="hkp") {
- proxyHost = this.getHttpProxy(keyserver);
- }
-
- if (this.agentVersion < "1.4") {
- var baseCommand = "gpgkeys_" + protocol;
- if (this.isDosLike) {
- baseCommand+=".exe";
- }
-
- var baseDir = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(nsILocalFile);
- baseDir.initWithPath(this.agentPath);
- var command = null;
-
- // try to locate gpgkeys_*
- if (baseDir)
- baseDir = baseDir.parent;
- if (baseDir) {
- var theCommand=baseDir.clone();
-
- // first the same dir as gpg executable
- theCommand.append(baseCommand);
- if (theCommand.exists() && theCommand.isExecutable())
- command = theCommand.path;
-
- if (! command) {
- // then lib
- theCommand.append("lib");
- theCommand.append(baseCommand);
- if (theCommand.exists() && theCommand.isExecutable())
- command = theCommand.path;
- }
-
- if (!command) {
- if (baseDir.parent) {
- baseDir=baseDir.parent;
- theCommand=baseDir.clone();
- // then ..\lib\gnupg or ../lib/gnupg
- theCommand.append("lib");
- theCommand.append("gnupg");
- theCommand.append(baseCommand);
- if (theCommand.exists() && theCommand.isExecutable()) {
- command = theCommand.path;
- }
- else {
- theCommand=baseDir.clone();
- // then ..\libexec\gnupg or ../libexec/gnupg
- theCommand.append("libexec");
- theCommand.append("gnupg");
- theCommand.append(baseCommand);
- if (theCommand.exists() && theCommand.isExecutable())
- command = theCommand.path;
- }
- }
- }
- }
-
- if (! command) {
- // no gpgkeys_* found
- return null;
- }
-
- command=command.replace(/\\\\/g, "\\").replace(/\\/g, "\\\\");
-
- // call gpgkeys to check the version number
-
- var outObj = new Object();
- var outLenObj = new Object();
- var errObj = new Object();
- var errLenObj = new Object();
- var testCmd = command + " -V"
-
- CONSOLE_LOG("\nenigmail> "+testCmd.replace(/\\\\/g, "\\")+"\n");
-
- try {
- var exitCode = this.ipcService.execPipe(testCmd,
- false,
- "",
- "", 0,
- envList, envList.length,
- outObj, outLenObj,
- errObj, errLenObj);
- }
- catch (ex) {
- CONSOLE_LOG(testCmd.replace(/\\\\/g, "\\")+" failed\n");
- return null;
- }
-
- if (exitCode !=0) {
- CONSOLE_LOG(testCmd.replace(/\\\\/g, "\\")+" not found\n");
- return null;
- }
-
- CONSOLE_LOG(outObj.value+"\n");
-
- var ver = outObj.value.split(/[\n\r]+/);
- if (Number(ver[0])==0 || Number(ver[0])==1) {
- var inputData="VERSION "+ver[0]+"\nHOST "+keyserver+"\nPORT "+port+"\n";
- }
- else {
- return null;
- }
- if (proxyHost) {
- inputData+="OPTION honor-http-proxy\n";
- envList.push("http_proxy="+proxyHost);
- }
-
- if (recvFlags & nsIEnigmail.SEARCH_KEY) {
- inputData+="COMMAND search\n\n"+keyValue+"\n\n";
- }
- else if (recvFlags & nsIEnigmail.DOWNLOAD_KEY) {
- inputData+="COMMAND get\n\n+"+keyValue+"\n\n";
- }
- }
- else {
- // GnuPG >= v1.4.0
- command = this.getAgentPath() + " --command-fd 0 --no-tty --batch --fixed-list --with-colons"
- if (proxyHost) command+=" --keyserver-options http-proxy="+proxyHost
- command +=" --keyserver ";
- if (! protocol) protocol="hkp";
- command += protocol + "://" + keyserver;
- if (port) command += ":"+port;
-
- if (recvFlags & nsIEnigmail.SEARCH_KEY) {
- command += " --search-keys ";
- inputData = "quit\n";
- }
- else if (recvFlags & nsIEnigmail.DOWNLOAD_KEY) {
- command+=" --status-fd 1 --recv-keys ";
- inputData = "";
- }
- command += keyValue
- }
-
- var pipeConsole = Components.classes[NS_PIPECONSOLE_CONTRACTID].createInstance(Components.interfaces.nsIPipeConsole);
- // Create joinable console
- pipeConsole.open(5000, 0, true);
-
- var errorConsole = Components.classes[NS_PIPECONSOLE_CONTRACTID].createInstance(Components.interfaces.nsIPipeConsole);
- errorConsole.open(20, 0, true);
-
- CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
-
-
- var ipcRequest = null;
- try {
- ipcRequest = gEnigmailSvc.ipcService.execAsync(command,
- false,
- "",
- inputData,
- inputData.length,
- envList, envList.length,
- pipeConsole,
- errorConsole,
- requestObserver);
- } catch (ex) {
- ERROR_LOG("enigmail.js: Enigmail.searchKey: execAsync failed\n");
- }
-
- if (!ipcRequest) {
- ERROR_LOG("enigmail.js: Enigmail.searchKey: execAsync failed somehow\n");
- return null;
- }
-
- return ipcRequest;
-}
-
-
-Enigmail.prototype.extractKey =
-function (parent, exportFlags, userId, outputFile, exitCodeObj, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.extractKey: "+userId+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return "";
- }
-
- var command = this.getAgentPath();
- command += GPG_BATCH_OPTS + " -a --export ";
- command += userId;
-
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var keyBlock = this.execCmd(command, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
-
- if ((exitCodeObj.value == 0) && !keyBlock)
- exitCodeObj.value = -1;
-
- if (exitCodeObj.value != 0) {
- errorMsgObj.value = EnigGetString("failKeyExtract");
-
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value += "\n" + command;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- return "";
- }
-
- if (exportFlags & nsIEnigmail.EXTRACT_SECRET_KEY) {
- command = this.getAgentPath();
- command += GPG_BATCH_OPTS + " -a --export-secret-keys ";
- command += userId;
-
- var secKeyBlock = this.execCmd(command, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
-
- if ((exitCodeObj.value == 0) && !secKeyBlock)
- exitCodeObj.value = -1;
-
- if (exitCodeObj.value != 0) {
- errorMsgObj.value = EnigGetString("failKeyExtract");
-
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value += "\n" + command;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- return "";
- }
-
- if (keyBlock.substr(-1,1).search(/[\r\n]/)<0) keyBlock += "\n"
- keyBlock+=secKeyBlock;
- }
-
- if (outputFile) {
- if (! WriteFileContents(outputFile, keyBlock, DEFAULT_FILE_PERMS)) {
- exitCodeObj.value = -1;
- errorMsgObj.value = EnigGetString("fileWriteFailed", outputFile);
- }
- return "";
- }
- return keyBlock;
-}
-
-
-// ExitCode == 0 => success
-// ExitCode > 0 => error
-// ExitCode == -1 => Cancelled by user
-Enigmail.prototype.importKey =
-function (parent, uiFlags, msgText, keyId, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.importKey: id="+keyId+", "+uiFlags+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return 1;
- }
-
- var beginIndexObj = new Object();
- var endIndexObj = new Object();
- var indentStrObj = new Object();
- var blockType = this.locateArmoredBlock(msgText, 0, "",
- beginIndexObj, endIndexObj,
- indentStrObj);
-
- if (!blockType) {
- errorMsgObj.value = EnigGetString("noPGPblock");
- return 1;
- }
-
- if (blockType != "PUBLIC KEY BLOCK") {
- errorMsgObj.value = EnigGetString("notFirstBlock");
- return 1;
- }
-
- var pgpBlock = msgText.substr(beginIndexObj.value,
- endIndexObj.value - beginIndexObj.value + 1);
-
- var interactive = uiFlags & nsIEnigmail.UI_INTERACTIVE;
-
- if (interactive) {
- var confirmMsg = EnigGetString("importKeyConfirm");
-
- if (!this.confirmMsg(parent, confirmMsg)) {
- errorMsgObj.value = EnigGetString("failCancel");
- return -1;
- }
- }
-
- var command = this.getAgentPath();
-
- if (this.agentType == "pgp") {
- command += PGP_BATCH_OPTS + " -ft -ka";
-
- } else {
- command += GPG_BATCH_OPTS + " --import";
- }
-
- var exitCodeObj = new Object();
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
-
- var output = this.execCmd(command, null, pgpBlock,
- exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj);
-
- var statusMsg = statusMsgObj.value;
-
- var pubKeyId;
-
- if (exitCodeObj.value == 0) {
- // Normal return
- this.invalidateUserIdList();
- if (statusMsg && (statusMsg.search("IMPORTED ") > -1)) {
- var matches = statusMsg.match(/(^|\n)IMPORTED (\w{8})(\w{8})/);
-
- if (matches && (matches.length > 3)) {
- pubKeyId = "0x" + matches[3];
- DEBUG_LOG("enigmail.js: Enigmail.importKey: IMPORTED "+pubKeyId+"\n");
- }
- }
- }
-
- return exitCodeObj.value;
-}
-
-Enigmail.prototype.importKeyFromFile =
-function (parent, fileName, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.importKeyFromFile: fileName="+fileName+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return 1;
- }
-
- fileName=fileName.replace(/\\/g, "\\\\");
-
- var command = this.getAgentPath();
-
- command += GPG_BATCH_OPTS + " --import '"+fileName+"'";
-
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
- var exitCodeObj = new Object();
-
- var output = this.execCmd(command, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj);
-
- var statusMsg = statusMsgObj.value;
-
- var pubKeyId;
-
- if (exitCodeObj.value == 0) {
- // Normal return
- this.invalidateUserIdList();
- if (statusMsg && (statusMsg.search("IMPORTED ") > -1)) {
- var matches = statusMsg.match(/(^|\n)IMPORTED (\w{8})(\w{8})/);
-
- if (matches && (matches.length > 3)) {
- pubKeyId = "0x" + matches[3];
- DEBUG_LOG("enigmail.js: Enigmail.importKey: IMPORTED "+pubKeyId+"\n");
- }
- }
- }
-
- return exitCodeObj.value;
-}
-
-Enigmail.prototype.generateKey =
-function (parent, name, comment, email, expiryDate, keyLength, keyType,
- passphrase, requestObserver) {
- WRITE_LOG("enigmail.js: Enigmail.generateKey: \n");
-
- if (this.keygenProcess || (this.agentType != "gpg"))
- throw Components.results.NS_ERROR_FAILURE;
-
- var pipeConsole = Components.classes[NS_PIPECONSOLE_CONTRACTID].createInstance(Components.interfaces.nsIPipeConsole);
-
- // Create joinable console
- pipeConsole.open(100, 80, true);
-
- var command = this.getAgentPath() + GPG_BATCH_OPTS + " --gen-key";
-
- pipeConsole.write(command.replace(/\\\\/g, "\\")+"\n");
- CONSOLE_LOG(command.replace(/\\\\/g, "\\")+"\n");
-
- var inputData = "%echo Generating key\nKey-Type: "
-
- switch (keyType) {
- case KEYTYPE_DSA:
- inputData += "DSA\nKey-Length: 1024\nSubkey-Type: 16\nSubkey-Length: ";
- break;
- case KEYTYPE_RSA:
- inputData += "RSA\nKey-Usage: sign,auth\nKey-Length: "+keyLength;
- inputData += "\nSubkey-Type: RSA\nSubkey-Usage: encrypt\nSubkey-Length: ";
- break;
- default:
- return null;
- }
-
- inputData += keyLength+"\n";
- inputData += "Name-Real: "+name+"\n";
- if (comment)
- inputData += "Name-Comment: "+comment+"\n";
- inputData += "Name-Email: "+email+"\n";
- inputData += "Expire-Date: "+String(expiryDate)+"\n";
-
- pipeConsole.write(EnigConvertToUnicode(inputData, "utf-8")+"\n");
- CONSOLE_LOG(inputData+" \n");
-
- if (passphrase.length)
- inputData += "Passphrase: "+passphrase+"\n";
-
- inputData += "%commit\n%echo done\n";
-
- var ipcRequest = null;
- try {
- var useShell = false;
- ipcRequest = gEnigmailSvc.ipcService.execAsync(command,
- useShell,
- "",
- inputData,
- inputData.length,
- [], 0,
- pipeConsole,
- pipeConsole,
- requestObserver);
- } catch (ex) {
- }
-
- if (!ipcRequest) {
- ERROR_LOG("enigmail.js: Enigmail.generateKey: execAsync failed\n");
- return null;
- }
-
- this.keygenRequest = ipcRequest;
-
- DEBUG_LOG("enigmail.js: Enigmail.generateKey: ipcRequest = "+ipcRequest+"\n");
-
- return ipcRequest;
-}
-
-
-Enigmail.prototype.createMessageURI =
-function (originalUrl, contentType, contentCharset, contentData, persist) {
- DEBUG_LOG("enigmail.js: Enigmail.createMessageURI: "+originalUrl+
- ", "+contentType+", "+contentCharset+"\n");
-
- var messageId = "msg" + Math.floor(Math.random()*1.0e9);
-
- this._messageIdList[messageId] = {originalUrl:originalUrl,
- contentType:contentType,
- contentCharset:contentCharset,
- contentData:contentData,
- persist:persist};
-
- return "enigmail:message?id="+messageId;
-}
-
-
-function ExtractMessageId(uri) {
- var messageId = "";
-
- var matches = uri.match(/^enigmail:message\?id=(.+)/);
-
- if (matches && (matches.length > 1)) {
- messageId = matches[1];
- }
-
- return messageId;
-}
-
-
-Enigmail.prototype.deleteMessageURI =
-function (uri) {
- DEBUG_LOG("enigmail.js: Enigmail.deleteMessageURI: "+uri+"\n");
-
- var messageId = ExtractMessageId(uri);
-
- if (!messageId)
- return false;
-
- return (delete this._messageIdList[messageId]);
-}
-
-
-function IPCContext()
-{
-}
-
-IPCContext.prototype = {
-
- command: "",
- pipeTransport: null,
- stdoutConsole: null,
- stderrConsole: null,
-
- QueryInterface: function (iid) {
- if (!iid.equals(Components.interfaces.nsIIPCContext) &&
- !iid.equals(Components.interfaces.nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- }
-}
-
-const ENIGMAIL_PANEL_URL = "chrome://enigmail/content/enigmailPanel.xul";
-
-Enigmail.prototype.selectPanel =
-function (url) {
- WRITE_LOG("enigmail.js: Enigmail.selectPanel: "+url+"\n");
-
- var wm = Components.classes[WMEDIATOR_CONTRACTID].getService(Components.interfaces.nsIWindowMediator);
- var navWindowList = wm.getEnumerator("navigator:browser");
-
- var retval = false;
- while (navWindowList.hasMoreElements()) {
-
- var navWindow =navWindowList.getNext();
- DEBUG_LOG("enigmail.js: navWindow="+navWindow+"\n");
-
- var href = navWindow._content.location.href;
- DEBUG_LOG("enigmail.js: href="+href+"\n");
-
- if (href.toLowerCase().indexOf(url.toLowerCase()) != 0)
- continue;
-
- var enigmailPanel = navWindow.document.getElementById("urn:sidebar:3rdparty-panel:"+ENIGMAIL_PANEL_URL);
- DEBUG_LOG("enigmail.js: panel="+enigmailPanel+"\n");
-
- if (!enigmailPanel) {
- // Add panel
- enigmailAddPanel();
-
- enigmailPanel = navWindow.document.getElementById("urn:sidebar:3rdparty-panel:"+ENIGMAIL_PANEL_URL);
- DEBUG_LOG("enigmail.js: panel="+enigmailPanel+"\n");
-
- if (!enigmailPanel) {
- DEBUG_LOG("enigmail.js: Added panel not found in document!\n");
- return false;
- }
- }
-
- navWindow.SidebarSelectPanel(enigmailPanel, true, true);
- retval = true;
- }
-
- return retval;
-}
-
-// Chrome sidebar panel adding code
-
-function enigmailAddPanel() {
- DEBUG_LOG("enigmail.js: Adding Enigmail panel\n");
- var sidebarObj = new chromeSidebar();
- sidebarObj.addPanel("Enigmail", ENIGMAIL_PANEL_URL, "");
-}
-
-const PANELS_RDF_FILE = "UPnls"; /* directory services property to find panels.rdf */
-
-const CONTAINER_CONTRACTID = "@mozilla.org/rdf/container;1";
-const DIR_SERV_CONTRACTID = "@mozilla.org/file/directory_service;1"
-const NETSEARCH_CONTRACTID = "@mozilla.org/rdf/datasource;1?name=internetsearch"
-const RDF_CONTRACTID = "@mozilla.org/rdf/rdf-service;1";
-
-const nsIRDFService = Components.interfaces.nsIRDFService;
-const nsIRDFContainer = Components.interfaces.nsIRDFContainer;
-const nsIRDFRemoteDataSource = Components.interfaces.nsIRDFRemoteDataSource;
-
-function chromeSidebar()
-{
- this.rdf = Components.classes[RDF_CONTRACTID].getService(nsIRDFService);
- this.datasource_uri = getSidebarDatasourceURI(PANELS_RDF_FILE);
- DEBUG_LOG("enigmail.js: datasource_uri is" + this.datasource_uri + "\n");
- this.resource = 'urn:sidebar:current-panel-list';
- this.datasource = this.rdf.GetDataSource(this.datasource_uri);
-}
-
-chromeSidebar.prototype.nc = "http://home.netscape.com/NC-rdf#";
-
-function sidebarURLSecurityCheck(url)
-{
- if (url.search(/(^chrome:|^http:|^ftp:|^https:)/) == -1)
- throw "Script attempted to add sidebar panel from illegal source";
-}
-
-chromeSidebar.prototype.isPanel =
-function (aContentURL)
-{
- var container =
- Components.classes[CONTAINER_CONTRACTID].createInstance(nsIRDFContainer);
-
- /* Create a resource for the new panel and add it to the list */
- var panel_resource =
- this.rdf.GetResource("urn:sidebar:3rdparty-panel:" + aContentURL);
-
- return (container.IndexOf(panel_resource) != -1);
-}
-
-/* decorate prototype to provide ``class'' methods and property accessors */
-chromeSidebar.prototype.addPanel =
-function (aTitle, aContentURL, aCustomizeURL)
-{
- DEBUG_LOG("enigmail.js: addPanel(" + aTitle + ", " + aContentURL + ", " +
- aCustomizeURL + ")" + "\n");
-
- sidebarURLSecurityCheck(aContentURL);
-
- // Create a "container" wrapper around the current panels to
- // manipulate the RDF:Seq more easily.
- var panel_list = this.datasource.GetTarget(this.rdf.GetResource(this.resource), this.rdf.GetResource(chromeSidebar.prototype.nc+"panel-list"), true);
- if (panel_list) {
- panel_list.QueryInterface(Components.interfaces.nsIRDFResource);
- } else {
- // Datasource is busted. Start over.
- DEBUG_LOG("enigmail.js: Sidebar datasource is busted\n");
- }
-
- var container = Components.classes[CONTAINER_CONTRACTID].createInstance(nsIRDFContainer);
- container.Init(this.datasource, panel_list);
-
- /* Create a resource for the new panel and add it to the list */
- var panel_resource =
- this.rdf.GetResource("urn:sidebar:3rdparty-panel:" + aContentURL);
- var panel_index = container.IndexOf(panel_resource);
- if (panel_index != -1)
- {
- DEBUG_LOG("enigmail.js: addPanel(): panel already in list"+"\n");
- return;
- }
-
- /* Now make some sidebar-ish assertions about it... */
- this.datasource.Assert(panel_resource,
- this.rdf.GetResource(this.nc + "title"),
- this.rdf.GetLiteral(aTitle),
- true);
- this.datasource.Assert(panel_resource,
- this.rdf.GetResource(this.nc + "content"),
- this.rdf.GetLiteral(aContentURL),
- true);
- if (aCustomizeURL)
- this.datasource.Assert(panel_resource,
- this.rdf.GetResource(this.nc + "customize"),
- this.rdf.GetLiteral(aCustomizeURL),
- true);
-
- container.AppendElement(panel_resource);
-
- // Use an assertion to pass a "refresh" event to all the sidebars.
- // They use observers to watch for this assertion (in sidebarOverlay.js).
- this.datasource.Assert(this.rdf.GetResource(this.resource),
- this.rdf.GetResource(this.nc + "refresh"),
- this.rdf.GetLiteral("true"),
- true);
- this.datasource.Unassert(this.rdf.GetResource(this.resource),
- this.rdf.GetResource(this.nc + "refresh"),
- this.rdf.GetLiteral("true"));
-
- /* Write the modified panels out. */
- this.datasource.QueryInterface(nsIRDFRemoteDataSource).Flush();
-
- DEBUG_LOG("enigmail.js: Panel successfully added to sidebar\n");
-}
-
-function getSidebarDatasourceURI(panels_file_id)
-{
- try
- {
- /* use the fileLocator to look in the profile directory
- * to find 'panels.rdf', which is the
- * database of the user's currently selected panels. */
- var directory_service = Components.classes[DIR_SERV_CONTRACTID].getService();
- if (directory_service)
- directory_service = directory_service.QueryInterface(Components.interfaces.nsIProperties);
-
- /* if <profile>/panels.rdf doesn't exist, get will copy
- *bin/defaults/profile/panels.rdf to <profile>/panels.rdf */
- var sidebar_file = directory_service.get(panels_file_id, Components.interfaces.nsIFile);
-
- if (!sidebar_file.exists())
- {
- /* this should not happen, as GetFileLocation() should copy
- * defaults/panels.rdf to the users profile directory */
- DEBUG_LOG("enigmail.js: sidebar file does not exist" + "\n");
- return null;
- }
-
- DEBUG_LOG("enigmail.js: sidebar uri is " + sidebar_file.URL + "\n");
- return sidebar_file.URL;
- }
- catch (ex)
- {
- /* this should not happen */
- DEBUG_LOG("enigmail.js: caught " + ex + " getting sidebar datasource uri" + "\n");
- return null;
- }
-}
-
-// retrieves a localized string from the enigmail.properties stringbundle
-function EnigGetString(aStr) {
- var restCount = arguments.length - 1;
- if(!gEnigStrBundle) {
- try {
- var strBundleService = Components.classes[ENIG_STRINGBUNDLE_CONTRACTID].getService();
- strBundleService = strBundleService.QueryInterface(nsIEnigStrBundle);
- gEnigStrBundle = strBundleService.createBundle("chrome://enigmail/locale/enigmail.properties");
- } catch (ex) {
- ERROR_LOG("enigmailCommon.js: Error in instantiating stringBundleService\n");
- }
- }
- if(gEnigStrBundle) {
- try {
- if(restCount > 0) {
- var subPhrases = new Array();
- for (var i = 1; i < arguments.length; i++) {
- subPhrases.push(arguments[i]);
- }
- return gEnigStrBundle.formatStringFromName(aStr, subPhrases, subPhrases.length);
- }
- else {
- return gEnigStrBundle.GetStringFromName(aStr);
- }
- } catch (ex) {
- ERROR_LOG("enigmailCommon.js: Error in querying stringBundleService for string '"+aStr+"'\n");
- }
- }
- return null;
-}
-
-Enigmail.prototype.invalidateUserIdList =
-function () {
- // clean the userIdList to force reloading the list at next usage
- this.userIdList= null;
-}
-
-// returns the output of -with-colons --list[-secret]-keys
-Enigmail.prototype.getUserIdList =
-function (secretOnly, refresh, exitCodeObj, statusFlagsObj, errorMsgObj) {
-
- if (secretOnly || refresh || this.userIdList == null) {
- var gpgCommand = this.getAgentPath() + GPG_BATCH_OPTS;
-
- if (secretOnly) {
- gpgCommand += " --with-fingerprint --fixed-list-mode --with-colons --list-secret-keys"; }
- else {
- gpgCommand += " --with-fingerprint --fixed-list-mode --with-colons --list-keys";
- }
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return "";
- }
-
- statusFlagsObj.value = 0;
-
- var statusMsgObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var listText = this.execCmd(gpgCommand, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
-
- if (exitCodeObj.value != 0) {
- errorMsgObj.value = EnigGetString("badCommand");
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value += "\n" + gpgCommand;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- return "";
- }
-
- listText=listText.replace(/(\r\n|\r)/g, "\n");
- if (secretOnly) {
- return listText;
- }
- this.userIdList = listText;
- }
- else {
- exitCodeObj.value=0;
- statusFlagsObj.value=0;
- errorMsgObj.value="";
- }
-
- return this.userIdList;
-}
-
-// returns the output of -with-colons --list-sig
-Enigmail.prototype.getKeySig =
-function (keyId, exitCodeObj, errorMsgObj) {
-
- var gpgCommand = this.getAgentPath() + GPG_BATCH_OPTS + " --fixed-list-mode --with-colons --with-fingerprint --list-sig "+keyId;
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return "";
- }
-
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var listText = this.execCmd(gpgCommand, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
-
- if (exitCodeObj.value != 0) {
- errorMsgObj.value = EnigGetString("badCommand");
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value += "\n" + gpgCommand;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
-
- return "";
- }
- return listText;
-}
-
-// get key details.
-// if uidOnly is true, returns just a list of uid's
-Enigmail.prototype.getKeyDetails = function (keyId, uidOnly) {
- var gpgCommand = this.getAgentPath() + GPG_BATCH_OPTS
- gpgCommand += " --fixed-list-mode --with-colons --list-keys " + keyId;
- var statusMsgObj = new Object();
- var cmdErrorMsgObj = new Object();
- var statusFlagsObj = new Object();
- var exitCodeObj = new Object();
-
- var listText = this.execCmd(gpgCommand, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
- if (exitCodeObj.value != 0) {
- return "";
- }
- listText=listText.replace(/(\r\n|\r)/g, "\n");
-
- if (uidOnly) {
- var userList="";
- var keyArr=listText.split(/\n/);
- for (var i=0; i<keyArr.length; i++) {
- switch (keyArr[i].substr(0,4)) {
- case "uid:" :
- userList += keyArr[i].split(/:/)[9] + "\n";
- }
- }
- return userList;
- }
-
- return listText;
-}
-
-Enigmail.prototype.encryptAttachment =
-function (parent, fromMailAddr, toMailAddr, sendFlags, inFile, outFile,
- exitCodeObj, statusFlagsObj, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.encryptAttachment\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return "";
- }
-
- statusFlagsObj.value = 0;
- sendFlags |= nsIEnigmail.SEND_ATTACHMENT;
-
- var asciiArmor = false;
- try {
- asciiArmor = this.prefBranch.getBoolPref("inlineAttachAsciiArmor");
- } catch (ex) {}
- var asciiFlags = (asciiArmor ? ENC_TYPE_ATTACH_ASCII : ENC_TYPE_ATTACH_BINARY);
-
- var gpgCommand = this.getEncryptCommand(fromMailAddr, toMailAddr, "", sendFlags, asciiFlags, errorMsgObj);
-
- if (! gpgCommand)
- return null;
-
- var passphrase = null;
- var signMessage = (sendFlags & nsIEnigmail.SEND_SIGNED);
-
- if (signMessage ) {
- gpgCommand += this.passwdCommand();
-
- var passwdObj = new Object();
- var useAgentObj = new Object();
-
- if (!GetPassphrase(parent, passwdObj, useAgentObj, 0)) {
- ERROR_LOG("enigmail.js: Enigmail.encryptAttachment: Error - no passphrase supplied\n");
-
- statusFlagsObj.value |= nsIEnigmail.MISSING_PASSPHRASE;
- return null;
- }
-
- passphrase = passwdObj.value;
- }
-
- // escape the backslashes (mainly for Windows) and the ' character
- inFile = inFile.replace(/([\\\"\'\`])/g, "\\$1");
- outFile = outFile.replace(/([\\\"\'\`])/g, "\\$1");
-
- gpgCommand += " --yes -o " + this.quoteSign + outFile + this.quoteSign;
- gpgCommand += " "+this.quoteSign + inFile + this.quoteSign;
-
- var statusMsgObj = new Object();
- var cmdErrorMsgObj = new Object();
-
- var msg = this.execCmd(gpgCommand, passphrase, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj);
-
- if (exitCodeObj.value != 0) {
-
- if (cmdErrorMsgObj.value) {
- errorMsgObj.value = gpgCommand;
- errorMsgObj.value += "\n" + cmdErrorMsgObj.value;
- }
- else {
- errorMsgObj.value = "An unknown error has occurred";
- }
-
- return "";
- }
-
- return msg;
-}
-
-
-Enigmail.prototype.decryptAttachment =
-function (parent, outFileName, displayName, inputBuffer,
- exitCodeObj, statusFlagsObj, errorMsgObj) {
- WRITE_LOG("enigmail.js: Enigmail.decryptAttachment: parent="+parent+", outFileName="+outFileName+"\n");
-
- var dataLength = new Object();
- var byteData = inputBuffer.getByteData(dataLength);
- var attachmentHead = byteData.substr(0,200);
- if (attachmentHead.match(/\-\-\-\-\-BEGIN PGP \w+ KEY BLOCK\-\-\-\-\-/)) {
- // attachment appears to be a PGP key file
-
- if (this.confirmMsg(parent, EnigGetString("attachmentPgpKey", displayName))) {
- exitCodeObj.value = this.importKey(parent, 0, byteData, "", errorMsgObj);
- statusFlagsObj.value = gStatusFlags.IMPORTED;
- }
- else {
- exitCodeObj.value = 0;
- statusFlagsObj.value = nsIEnigmail.DISPLAY_MESSAGE;
- }
- return true;
- }
-
- var command = this.getAgentPath();
-
- outFileName = outFileName.replace(/([\\\"\'\`])/g, "\\$1");
- //replace(/\\/g, "\\\\").replace(/'/g, "\\'");;
-
- command += GPG_BATCH_OPTS + " -o " + this.quoteSign + outFileName + this.quoteSign;
- command+= " --yes " + this.passwdCommand() + " -d ";
-
-
- statusFlagsObj.value = 0;
-
- var passphrase = null;
- var passwdObj = new Object();
- var useAgentObj = new Object();
-
- if (!GetPassphrase(parent, passwdObj, useAgentObj, 0)) {
- ERROR_LOG("enigmail.js: Enigmail.decryptAttachment: Error - no passphrase supplied\n");
-
- statusFlagsObj.value |= nsIEnigmail.MISSING_PASSPHRASE;
- return null;
- }
-
- passphrase = passwdObj.value;
-
- var noProxy = true;
-
- var ipcBuffer = Components.classes[NS_IPCBUFFER_CONTRACTID].createInstance(Components.interfaces.nsIIPCBuffer);
- ipcBuffer.open(MSG_BUFFER_SIZE, false);
-
- var pipeTrans = this.execStart(command, false, parent, 0,
- ipcBuffer, noProxy, statusFlagsObj);
-
-
- if (!pipeTrans) {
- return false;
- }
-
- try {
- if (! useAgentObj.value) {
- if (passphrase.length > 0) {
- pipeTrans.writeSync(passphrase, passphrase.length);
- }
-
- pipeTrans.writeSync("\n", 1);
- }
- pipeTrans.writeSync(byteData, dataLength.value);
-
- }
- catch (ex) {
- return false;
- }
- // Wait for child STDOUT to close
- pipeTrans.join();
-
- exitCodeObj.value = pipeTrans.exitCode();
-
- var statusMsgObj = new Object();
- var cmdLineObj = new Object();
-
- try {
- this.execEnd(pipeTrans, statusFlagsObj, statusMsgObj, cmdLineObj, errorMsgObj);
- }
- catch (ex) {};
-
- return true;
-
-}
-
-Enigmail.prototype.getCardStatus =
-function(exitCodeObj, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.getCardStatus\n");
- var command = this.getAgentPath();
-
- command += " --status-fd 2 --fixed-list-mode --with-colons --card-status";
- var statusMsgObj = new Object();
- var statusFlagsObj = new Object();
-
- var outputTxt = this.execCmd(command, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj);
-
- if ((exitCodeObj.value == 0) && !outputTxt) {
- exitCodeObj.value = -1;
- return "";
- }
-
- return outputTxt;
-}
-
-Enigmail.prototype.showKeyPhoto =
-function(keyId, photoNumber, exitCodeObj, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.showKeyPhoto, keyId="+keyId+" photoNumber="+photoNumber+"\n");
- var command = this.getAgentPath();
-
- command += " --no-secmem-warning --no-verbose --no-auto-check-trustdb --batch --no-tty --status-fd 1 --attribute-fd 2";
- command += " --fixed-list-mode --list-keys "+keyId;
-
- var photoDataObj = new Object();
-
- var outputTxt = this.simpleExecCmd(command, exitCodeObj, photoDataObj);
-
- if ((exitCodeObj.value == 0) && !outputTxt) {
- exitCodeObj.value = -1;
- return "";
- }
-
- if (/*this.agentVersion<"1.5" &&*/ this.isDosLike) {
- // workaround for error in gpg
- photoDataObj.value=photoDataObj.value.replace(/\r\n/g, "\n");
- }
-
-// [GNUPG:] ATTRIBUTE A053069284158FC1E6770BDB57C9EB602B0717E2 2985
- var foundPicture = -1;
- var skipData = 0;
- var imgSize = -1;
- var statusLines = outputTxt.split(/[\n\r+]/);
-
- for (var i=0; i < statusLines.length; i++) {
- var matches = statusLines[i].match(/\[GNUPG:\] ATTRIBUTE ([A-F\d]+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+)/)
- if (matches && matches[3]=="1") {
- // attribute is an image
- ++foundPicture;
- if (foundPicture == photoNumber) {
- imgSize = Number(matches[2]);
- break;
- }
- else {
- skipData += Number(matches[2]);
- }
- }
- }
-
- if (foundPicture>=0 && foundPicture == photoNumber) {
- var pictureData = photoDataObj.value.substr(16+skipData, imgSize);
- if (! pictureData.length)
- return "";
- try {
- var flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE;
-
- var ds = Components.classes[DIR_SERV_CONTRACTID].getService();
- var dsprops = ds.QueryInterface(Components.interfaces.nsIProperties);
- var picFile = dsprops.get("TmpD", Components.interfaces.nsIFile);
-
- picFile.append(keyId+".jpg");
- picFile.createUnique(picFile.NORMAL_FILE_TYPE, DEFAULT_FILE_PERMS);
-
- var fileStream = Components.classes[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Components.interfaces.nsIFileOutputStream);
- fileStream.init(picFile, flags, DEFAULT_FILE_PERMS, 0);
- if (fileStream.write(pictureData, pictureData.length) != pictureData.length)
- throw Components.results.NS_ERROR_FAILURE;
-
- fileStream.flush();
- fileStream.close();
- }
- catch (ex) {
- exitCodeObj.value = -1;
- return "";
- }
- }
- return picFile.path;
-}
-
-
-// Methods for handling Per-Recipient Rules
-
-Enigmail.prototype.getRulesFile = function () {
- DEBUG_LOG("enigmail.js: getRulesFile\n");
- var ds = Components.classes[DIR_SERV_CONTRACTID].getService();
- var dsprops = ds.QueryInterface(Components.interfaces.nsIProperties);
- var rulesFile = dsprops.get("ProfD", Components.interfaces.nsILocalFile);
- rulesFile.append("pgprules.xml");
- return rulesFile;
-}
-
-Enigmail.prototype.loadRulesFile = function () {
- DEBUG_LOG("enigmail.js: loadRulesFile\n");
- var flags = NS_RDONLY;
- var rulesFile = this.getRulesFile();
- if (rulesFile.exists()) {
- fileContents = EnigReadFile(rulesFile);
-
- if (fileContents.length==0 || fileContents.search(/^\s*$/)==0) {
- return false;
- }
-
- var domParser=Components.classes[NS_DOMPARSER_CONTRACTID].createInstance(Components.interfaces.nsIDOMParser);
- this.rulesList = domParser.parseFromString(fileContents, "text/xml");
-
- return true;
- }
- return false;
-}
-
-Enigmail.prototype.saveRulesFile = function () {
- DEBUG_LOG("enigmail.js: saveRulesFile\n");
-
- var flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE;
- var domSerializer=Components.classes[NS_DOMSERIALIZER_CONTRACTID].createInstance(Components.interfaces.nsIDOMSerializer);
- var rulesFile = this.getRulesFile();
- if (rulesFile) {
- if (this.rulesList) {
- // the rule list is not empty -> write into file
- return WriteFileContents(rulesFile.path,
- domSerializer.serializeToString(this.rulesList.firstChild),
- DEFAULT_FILE_PERMS);
- }
- else {
- // empty rule list -> delete rules file
- try {
- rulesFile.remove(false);
- }
- catch (ex) {}
- return true;
- }
- }
- else
- return false;
-}
-
-Enigmail.prototype.getRulesData = function (rulesListObj) {
- DEBUG_LOG("enigmail.js: getRulesData\n");
- var ret=true;
- if (! this.rulesList) {
- ret=this.loadRulesFile();
- }
- if (this.rulesList) {
- rulesListObj.value = this.rulesList;
- return ret;
- }
-
- rulesListObj.value = null;
- return false;
-}
-
-Enigmail.prototype.addRule = function (appendToEnd, toAddress, keyList, sign, encrypt, pgpMime, flags) {
- DEBUG_LOG("enigmail.js: addRule\n");
- if (! this.rulesList) {
- var domParser=Components.classes[NS_DOMPARSER_CONTRACTID].createInstance(Components.interfaces.nsIDOMParser);
- this.rulesList = domParser.parseFromString("<pgpRuleList/>", "text/xml");
- }
- var negate = (flags & 1);
- var rule=this.rulesList.createElement("pgpRule");
- rule.setAttribute("email", toAddress);
- rule.setAttribute("keyId", keyList);
- rule.setAttribute("sign", sign);
- rule.setAttribute("encrypt", encrypt);
- rule.setAttribute("pgpMime", pgpMime);
- rule.setAttribute("negateRule", flags);
- var origFirstChild = this.rulesList.firstChild.firstChild;
-
- if (origFirstChild && (! appendToEnd)) {
- this.rulesList.firstChild.insertBefore(rule, origFirstChild);
- this.rulesList.firstChild.insertBefore(this.rulesList.createTextNode(this.isDosLike ? "\r\n" : "\n"), origFirstChild);
- }
- else {
- this.rulesList.firstChild.appendChild(rule);
- this.rulesList.firstChild.appendChild(this.rulesList.createTextNode(this.isDosLike ? "\r\n" : "\n"));
- }
-
-}
-
-Enigmail.prototype.clearRules = function () {
- this.rulesList = null;
-}
-
-
-
-function KeyEditor(pipeTrans, reqObserver) {
- this._pipeTrans = pipeTrans;
- this._reqObserver = reqObserver;
-}
-
-KeyEditor.prototype = {
- _pipeTrans: null,
- _txt: null,
- _req: null,
-
- nextLine: function() {
- return this._txt;
- },
-
- writeLine: function (inputData) {
- this._pipeTrans.writeSync(inputData+"\n", inputData.length+1);
- },
-
- nextLine: function() {
- var txt="";
- while (txt.indexOf("[GNUPG:]") < 0) {
- txt = this._pipeTrans.readLine(-1);
- if (this._reqObserver) {
- var newTxt = this._reqObserver.onDataAvailable(txt);
- if (newTxt) {
- txt = newTxt;
- }
- }
- }
- this._txt = txt;
- return this._txt;
- },
-
- doCheck: function(inputType, promptVal) {
- var a=this._txt.split(/ /);
- return ((a[1] == inputType) && (a[2] == promptVal))
- },
-
- getText: function() {
- return this._txt;
- },
-
- keyEditorMainLoop: function (callbackFunc, inputData, errorMsgObj) {
- // main method that loops over the requests & responses of the
- // GnuPG key editor
- var txt="";
- var r = { quitNow: false,
- exitCode: -1 };
- errorMsgObj.value=EnigGetString("undefinedError");
-
- while (! r.quitNow) {
- while ((txt.indexOf("[GNUPG:] GET_") < 0) && (! r.quitNow)) {
- try {
- txt = this.nextLine();
- DEBUG_LOG(txt+"\n");
- if (txt.indexOf("KEYEXPIRED") > 0) {
- errorMsgObj.value=EnigGetString("noSignKeyExpired");
- r.exitCode=-1;
- }
- if (txt.indexOf("[GNUPG:] BAD_PASSPHRASE")>=0) {
- r.exitCode=-2;
- }
- if (txt.indexOf("[GNUPG:] NO_CARD_AVAILABLE")>=0) {
- errorMsgObj.value=EnigGetString("noCardAvailable");
- r.exitCode=-3;
- }
- if (txt.indexOf("[GNUPG:] ENIGMAIL_FAILURE")==0) {
- r.exitCode = -3;
- r.quitNow = true;
- errorMsgObj.value = txt.substr(26);
- }
- if (txt.indexOf("[GNUPG:] ALREADY_SIGNED")>=0) {
- errorMsgObj.value=EnigGetString("keyAlreadySigned");
- r.exitCode=-1;
- }
- }
- catch (ex) {
- txt="";
- r.quitNow=true;
- }
- }
-
- if (! r.quitNow) {
- if (callbackFunc) {
- callbackFunc(inputData, this, r);
- if (r.exitCode == 0) {
- this.writeLine(r.writeTxt);
- }
- else {
- errorMsgObj.value = r.errorMsg;
- }
- }
- else {
- r.quitNow=true;
- r.exitCode = 0;
- }
- }
- if (! r.quitNow) {
- try{
- txt = this.nextLine();
- DEBUG_LOG(txt+"\n");
- }
- catch(ex) {
- r.quitNow=true;
- }
- }
- }
-
- try {
- this.writeLine("save");
- txt = this.nextLine();
- DEBUG_LOG(txt+"\n");
- }
- catch (ex) {
- DEBUG_LOG("no more data\n");
- }
-
- return r.exitCode;
- },
-
- QueryInterface: function (iid) {
- if (!iid.equals(Components.interfaces.nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- }
-}
-
-Enigmail.prototype.signKey =
-function (parent, userId, keyId, signLocally, trustLevel, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.signKey: trustLevel="+trustLevel+", userId="+userId+", keyId="+keyId+"\n");
- var r = this.editKey(parent, true, userId, keyId,
- (signLocally ? "lsign" : "sign"),
- { trustLevel: trustLevel},
- signKeyCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-Enigmail.prototype.setKeyTrust =
-function (parent, keyId, trustLevel, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.setKeyTrust: trustLevel="+trustLevel+", keyId="+keyId+"\n");
-
- return this.editKey(parent, false, null, keyId, "trust",
- { trustLevel: trustLevel},
- keyTrustCallback,
- null,
- errorMsgObj);
-}
-
-Enigmail.prototype.genRevokeCert =
-function (parent, keyId, outFile, reasonCode, reasonText, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.genRevokeCert: keyId="+keyId+"\n");
-
- var r= this.editKey(parent, true, null, keyId, "revoke",
- { outFile: outFile,
- reasonCode: reasonCode,
- reasonText: EnigConvertFromUnicode(reasonText) },
- revokeCertCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-Enigmail.prototype.addUid =
-function (parent, keyId, name, email, comment, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.addUid: keyId="+keyId+", name="+name+", email="+email+"\n");
- var r= this.editKey(parent, true, null, keyId, "adduid",
- { email: email,
- name: name,
- comment: comment,
- nameAsked: 0,
- emailAsked: 0 },
- addUidCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-Enigmail.prototype.deleteKey =
-function (parent, keyId, deleteSecretKey, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.addUid: keyId="+keyId+", deleteSecretKey="+deleteSecretKey+"\n");
-
- var cmd = (deleteSecretKey ? "--delete-secret-and-public-key" : "--delete-key");
- var r= this.editKey(parent, false, null, keyId, cmd,
- {},
- deleteKeyCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-Enigmail.prototype.changePassphrase =
-function (parent, keyId, oldPw, newPw, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.changePassphrase: keyId="+keyId+"\n");
-
- var pwdObserver = new enigChangePasswdObserver();
- var r= this.editKey(parent, false, null, keyId, "passwd",
- { oldPw: oldPw,
- newPw: newPw,
- step: 0,
- observer: pwdObserver },
- changePassphraseCallback,
- pwdObserver,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-
-Enigmail.prototype.simpleChangePassphrase =
-function (parent, keyId, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.simpleChangePassphrase: keyId="+keyId+"\n");
-
- var command = this.getAgentPath();
-
- command += GPG_BATCH_OPTS + " --edit-key " + keyId +" passwd"
-
- var exitCodeObj = new Object();
- var statusFlagsObj = new Object();
- var statusMsgObj = new Object();
-
- var msg = this.execCmd(command, null, "",
- exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj);
-
- if (statusFlagsObj.value & (gStatusFlags.BAD_PASSPHRASE |
- gStatusFlags.SC_OP_FAILURE |
- gStatusFlags.NODATA |
- gStatusFlags.MISSING_PASSPHRASE |
- gStatusFlags.CARDCTRL)) {
- exitCodeObj.value = 1;
- }
-
- return exitCodeObj.value;
-}
-
-Enigmail.prototype.revokeSubkey =
-function (parent, keyId, subkeys, reasonCode, reasonText, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.revokeSubkey: keyId="+keyId+"\n");
-
- var r= this.editKey(parent, true, null, keyId, "",
- { step: 0,
- subkeys: subkeys.split(/,/),
- reasonCode: reasonCode,
- reasonText: EnigConvertFromUnicode(reasonText) },
- revokeSubkeyCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-
-Enigmail.prototype.enableDisableKey =
-function (parent, keyId, disableKey, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.addUid: keyId="+keyId+", disableKey="+disableKey+"\n");
-
- var cmd = (disableKey ? "disable" : "enable");
- var r= this.editKey(parent, false, null, keyId, cmd,
- {},
- null,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-Enigmail.prototype.setPrimaryUid =
-function (parent, keyId, idNumber, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.setPrimaryUid: keyId="+keyId+", idNumber="+idNumber+"\n");
- var r = this.editKey(parent, true, null, keyId, "",
- { idNumber: idNumber,
- step: 0 },
- setPrimaryUidCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-
-Enigmail.prototype.deleteUid =
-function (parent, keyId, idNumber, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.deleteUid: keyId="+keyId+", idNumber="+idNumber+"\n");
- var r = this.editKey(parent, true, null, keyId, "",
- { idNumber: idNumber,
- step: 0 },
- deleteUidCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-
-Enigmail.prototype.revokeUid =
-function (parent, keyId, idNumber, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.revokeUid: keyId="+keyId+", idNumber="+idNumber+"\n");
- var r = this.editKey(parent, true, null, keyId, "",
- { idNumber: idNumber,
- step: 0 },
- revokeUidCallback,
- null,
- errorMsgObj);
- this.stillActive();
-
- return r;
-}
-
-
-function enigCardAdminObserver(guiObserver, isDosLike) {
- this._guiObserver = guiObserver;
- this.isDosLike = isDosLike;
-}
-
-enigCardAdminObserver.prototype =
-{
- _guiObserver: null,
- _failureCode: 0,
-
- QueryInterface : function(iid)
- {
- if (iid.equals(Components.interfaces.nsIEnigMimeReadCallback) ||
- iid.equals(Components.interfaces.nsISupports) )
- return this;
-
- throw Components.results.NS_NOINTERFACE;
- },
-
- onDataAvailable: function (data) {
- var ret="";
- DEBUG_LOG("enigmail.js: enigCardAdminObserver.onDataAvailable: data="+data+"\n");
- if (this.isDosLike && data.indexOf("[GNUPG:] BACKUP_KEY_CREATED") == 0) {
- data=data.replace(/\//g, "\\");
- }
- if (this._failureCode) {
- ret = "[GNUPG:] ENIGMAIL_FAILURE "+data;
- }
- if (data.indexOf("[GNUPG:] SC_OP_FAILURE")>=0) {
- this._failureCode = 1;
- }
- if (this._guiObserver) {
- this._guiObserver.onDataAvailable(data);
- }
- return ret;
- }
-}
-
-function enigChangePasswdObserver() {}
-
-enigChangePasswdObserver.prototype =
-{
- _failureCode: 0,
- passphraseStatus: 0,
-
- QueryInterface : function(iid)
- {
- if (iid.equals(Components.interfaces.nsIEnigMimeReadCallback) ||
- iid.equals(Components.interfaces.nsISupports) )
- return this;
-
- throw Components.results.NS_NOINTERFACE;
- },
-
- onDataAvailable: function (data) {
- var ret="";
- DEBUG_LOG("enigmail.js: enigChangePasswdObserver.onDataAvailable: data="+data+"\n");
- if (this._failureCode) {
- ret = "[GNUPG:] ENIGMAIL_FAILURE "+data;
- }
- if (data.indexOf("[GNUPG:] GOOD_PASSPHRASE")>=0) {
- this.passphraseStatus = 1;
- }
- else if (data.indexOf("[GNUPG:] BAD_PASSPHRASE")>=0) {
- this.passphraseStatus = -1;
- }
- return ret;
- }
-}
-
-Enigmail.prototype.genCardKey =
-function (parent, name, email, comment, expiry, backupPasswd, requestObserver, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.genCardKey: \n");
- var generateObserver = new enigCardAdminObserver(requestObserver, this.isDosLike);
- var r = this.editKey(parent, false, null, "", "--with-colons --card-edit",
- { step: 0,
- name: EnigConvertFromUnicode(name),
- email: email,
- comment: EnigConvertFromUnicode(comment),
- expiry: expiry,
- backupPasswd: backupPasswd,
- backupKey: (backupPasswd.length > 0 ? "Y" : "N"),
- parent: parent },
- genCardKeyCallback,
- generateObserver,
- errorMsgObj);
- return r;
-}
-
-Enigmail.prototype.cardAdminData =
-function (parent, name, firstname, lang, sex, url, login, forcepin, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.cardAdminData: parent="+parent+", name="+name+", firstname="+firstname+", lang="+lang+", sex="+sex+", url="+url+", login="+login+", forcepin="+forcepin+"\n");
- var adminObserver = new enigCardAdminObserver(null, this.isDosLike);
- var r = this.editKey(parent, false, null, "", "--with-colons --card-edit",
- { step: 0,
- name: name,
- firstname: firstname,
- lang: lang,
- sex: sex,
- url: url,
- login: login,
- forcepin: forcepin },
- cardAdminDataCallback,
- adminObserver,
- errorMsgObj);
- return r;
-}
-
-Enigmail.prototype.cardChangePin =
-function (parent, action, oldPin, newPin, adminPin, pinObserver, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.cardChangePin: parent="+parent+", action="+action+"\n");
- var adminObserver = new enigCardAdminObserver(pinObserver, this.isDosLike);
- var r = this.editKey(parent, false, null, "", "--with-colons --card-edit",
- { step: 0,
- pinStep: 0,
- action: action,
- oldPin: oldPin,
- newPin: newPin,
- adminPin: adminPin },
- cardChangePinCallback,
- adminObserver,
- errorMsgObj);
- return r;
-}
-
-
-Enigmail.prototype.editKey =
-function (parent, needPassphrase, userId, keyId, editCmd, inputData, callbackFunc, requestObserver, errorMsgObj) {
- DEBUG_LOG("enigmail.js: Enigmail.editKey: parent="+parent+", editCmd="+editCmd+"\n");
-
- if (!this.initialized) {
- errorMsgObj.value = EnigGetString("notInit");
- return -1;
- }
-
- if (this.agentType != "gpg") {
- errorMsgObj.value = EnigGetString("failOnlyGPG");
- return -1;
- }
-
- errorMsgObj.value = "";
- var command = this.getAgentPath();
-
- var statusFlags = new Object();
-
- var passphrase = "";
- var useAgentObj = new Object();
-
- if (needPassphrase) {
- command += this.passwdCommand();
-
- var passwdObj = new Object();
-
- if (!GetPassphrase(parent, passwdObj, useAgentObj, 0)) {
- ERROR_LOG("enigmail.js: Enigmail.execStart: Error - no passphrase supplied\n");
-
- errorMsgObj.value = EnigGetString("noPassphrase");
- return -1;
- }
-
- passphrase = passwdObj.value;
- }
- else
- {
- useAgentObj.value = true;
- }
-
- command += " --no-tty --status-fd 1 --logger-fd 1 --command-fd 0"
- if (userId) command += " -u " + userId;
- if (editCmd == "revoke") {
- // escape backslashes and ' characters
- command += " -a -o "+this.quoteSign;
- command += inputData.outFile.replace(/([\\\"\'\`])/g, "\\$1");
- //replace(/\\/g, "\\\\").replace(/'/g, "\\'");
- command += this.quoteSign+" --gen-revoke " + keyId;
- }
- else if (editCmd.indexOf("--")==0) {
- command += " "+editCmd + " " + keyId;
- }
- else {
- command += " --ask-cert-level --edit-key " + keyId + " " + editCmd;
- }
- command = command.replace(/ *$/, "");
- var pipeTrans = this.execStart(command, false, parent, null, null,
- true, statusFlags);
- if (! pipeTrans) return -1;
-
- if (! useAgentObj.value) {
- try {
- if (passphrase) {
- pipeTrans.writeSync(passphrase, passphrase.length);
- }
- pipeTrans.writeSync("\n", 1);
- } catch (ex) {}
- }
-
-
- var returnCode=-1;
- try {
- var keyEdit = new KeyEditor(pipeTrans, requestObserver);
- returnCode = keyEdit.keyEditorMainLoop(callbackFunc, inputData, errorMsgObj);
- } catch (ex) {
- DEBUG_LOG("enigmail.js: Enigmail.editKey: caught exception from writing to pipeTrans\n");
- }
-
- var mimeSvc = Components.classes[NS_ENIGMIMESERVICE_CONTRACTID].getService(Components.interfaces.nsIEnigMimeService);
-
- var exitCode = -1;
- switch(returnCode) {
- case 0:
- for (var retryCount = 100; retryCount > 0; retryCount--) {
- if (pipeTrans.isAttached()) {
- DEBUG_LOG("enigmail.js: Enigmail.editKey: sleeping 100 ms\n");
- mimeSvc.sleep(100);
- }
- else {
- retryCount = -1;
- }
- }
- try{
- exitCode = pipeTrans.exitCode();
- } catch (ex) {
- DEBUG_LOG("enigmail.js: Enigmail.editKey: caught exception from pipeTrans\n");
- }
- break;
- case -2:
- errorMsgObj.value=EnigGetString("badPhrase");
- this.clearCachedPassphrase();
- default:
- exitCode = returnCode;
- }
-
- DEBUG_LOG("enigmail.js: Enigmail.editKey: GnuPG terminated with code="+exitCode+"\n");
- return exitCode;
-}
-
-
-function signKeyCallback(inputData, keyEdit, ret) {
-
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_BOOL, "sign_uid.okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_BOOL, "keyedit.sign_all.okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_LINE, "sign_uid.expire" )) {
- ret.exitCode = 0;
- ret.writeTxt = "0";
- }
- else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_value" )) {
- ret.exitCode = 0;
- ret.writeTxt = "0";
- }
- else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_depth" )) {
- ret.exitCode = 0;
- ret.writeTxt = "";}
- else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_regexp" )) {
- ret.exitCode = 0;
- ret.writeTxt = "0";}
- else if (keyEdit.doCheck(GET_LINE, "siggen.valid" )) {
- ret.exitCode = 0;
- ret.writeTxt = "0";
- }
- else if (keyEdit.doCheck(GET_BOOL, "sign_uid.local_promote_okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_LINE, "sign_uid.class" )) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.trustLevel;
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- ret.quitNow = true;
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function keyTrustCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "edit_ownertrust.value" )) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.trustLevel;
- }
- else if (keyEdit.doCheck(GET_BOOL, "edit_ownertrust.set_ultimate.okay")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- ret.quitNow = true;
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function addUidCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "keygen.name" )) {
- ++inputData.nameAsked;
- if (inputData.nameAsked==1) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.name;
- }
- else {
- ret.exitCode=-1;
- ret.quitNow=true;
- ret.errorMsg="Invalid name (too short)";
- }
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.email")) {
- ++inputData.emailAsked;
- if (inputData.emailAsked==1) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.email;
- }
- else {
- ret.exitCode=-1;
- ret.quitNow=true;
- ret.errorMsg="Invalid email";
- }
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.comment")) {
- ret.exitCode = 0;
- if (inputData.comment) {
- ret.writeTxt = inputData.comment;
- }
- else {
- ret.writeTxt="";
- }
- }
- else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- ret.quitNow = true;
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function revokeCertCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.code" )) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.reasonCode;
- }
- else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.text" )) {
- ret.exitCode = 0;
- ret.writeTxt = "";
- }
- else if (keyEdit.doCheck(GET_BOOL, "gen_revoke.okay")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_BOOL, "ask_revocation_reason.okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_BOOL, "openfile.overwrite.okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- ret.quitNow = true;
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function revokeSubkeyCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- if (inputData.step < inputData.subkeys.length) {
- ret.exitCode = 0;
- ret.writeTxt = "key "+inputData.subkeys[inputData.step];
- ++inputData.step;
- }
- else if (inputData.step == inputData.subkeys.length) {
- ret.exitCode = 0;
- ret.writeTxt = "revkey";
- ++inputData.step;
- }
- else {
- if (inputData.step == (inputData.subkeys.length+1)) {
- ret.exitCode = 0;
- }
- else {
- ret.exitCode = -1;
- }
- ret.quitNow = true;
- }
- }
- else if (keyEdit.doCheck(GET_BOOL, "keyedit.revoke.subkey.okay")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.code" )) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.reasonCode;
- }
- else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.text" )) {
- ret.exitCode = 0;
- ret.writeTxt = "";
- }
- else if (keyEdit.doCheck(GET_BOOL, "ask_revocation_reason.okay" )) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function setPrimaryUidCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "keyedit.prompt" )) {
- ++inputData.step;
- switch (inputData.step) {
- case 1:
- ret.exitCode = 0;
- ret.writeTxt = "uid "+inputData.idNumber;
- break;
- case 2:
- ret.exitCode = 0;
- ret.writeTxt = "primary";
- break;
- case 3:
- ret.exitCode = 0;
- ret.quitNow=true;
- break;
- default:
- ret.exitCode = -1;
- ret.quitNow=true;
- }
-
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function changePassphraseCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_HIDDEN, "passphrase.enter")) {
- switch (inputData.observer.passphraseStatus) {
- case 0:
- ret.writeTxt = inputData.oldPw;
- ret.exitCode = 0;
- break;
- case 1:
- ret.writeTxt = inputData.newPw;
- ret.exitCode = 0;
- break;
- case -1:
- ret.exitCode = -2;
- ret.quitNow=true;
- break;
- }
- }
- else if (keyEdit.doCheck(GET_BOOL, "change_passwd.empty.okay")) {
- ret.writeTxt = "Y";
- ret.exitCode = 0;
- }
- else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) {
- ret.quitNow = true;
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function deleteUidCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "keyedit.prompt" )) {
- ++inputData.step;
- switch (inputData.step) {
- case 1:
- ret.exitCode = 0;
- ret.writeTxt = "uid "+inputData.idNumber;
- break;
- case 2:
- ret.exitCode = 0;
- ret.writeTxt = "deluid";
- break;
- case 4:
- ret.exitCode = 0;
- ret.quitNow=true;
- break;
- default:
- ret.exitCode = -1;
- ret.quitNow=true;
- }
- }
- else if (keyEdit.doCheck(GET_BOOL, "keyedit.remove.uid.okay" )) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function revokeUidCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "keyedit.prompt" )) {
- ++inputData.step;
- switch (inputData.step) {
- case 1:
- ret.exitCode = 0;
- ret.writeTxt = "uid "+inputData.idNumber;
- break;
- case 2:
- ret.exitCode = 0;
- ret.writeTxt = "revuid";
- break;
- case 7:
- ret.exitCode = 0;
- ret.quitNow=true;
- break;
- default:
- ret.exitCode = -1;
- ret.quitNow=true;
- }
- }
- else if (keyEdit.doCheck(GET_BOOL, "keyedit.revoke.uid.okay" )) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.code")) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "0"; // no reason specified
- }
- else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.text")) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "";
- }
- else if (keyEdit.doCheck(GET_BOOL, "ask_revocation_reason.okay")) {
- ++inputData.step;
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-
-function deleteKeyCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_BOOL, "delete_key.secret.okay")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_BOOL, "keyedit.remove.subkey.okay")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_BOOL, "delete_key.okay" )) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function GetPin(domWindow, promptMsg, ret) {
- DEBUG_LOG("enigmail.js: GetPin: \n");
-
- var passwdObj = {value: ""};
- var dummyObj = {};
-
- var success = false;
-
- var promptService = Components.classes[NS_PROMPTSERVICE_CONTRACTID].getService(Components.interfaces.nsIPromptService);
- success = promptService.promptPassword(domWindow,
- EnigGetString("Enigmail"),
- promptMsg,
- passwdObj,
- null,
- dummyObj);
-
- if (!success) {
- ret.errorMsg = EnigGetString("noPassphrase");
- ret.quitNow=true;
- return false;
- }
-
- DEBUG_LOG("enigmail.js: GetPin: got pin\n");
- ret.writeTxt = passwdObj.value;
-
- return true;
-}
-
-function genCardKeyCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- var pinObj={};
-
- if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) {
- if (inputData.step == 0) {
- ret.exitCode = 0;
- ret.writeTxt = "admin";
- }
- else if (inputData.step == 1) {
- ret.exitCode = 0;
- ret.writeTxt = "generate";
- }
- else {
- ret.exitCode = 0;
- ret.quitNow=true;
- ret.writeTxt = "quit";
- }
- ++inputData.step;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardedit.genkeys.backup_enc") ||
- keyEdit.doCheck(GET_BOOL, "cardedit.genkeys.backup_enc")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.backupKey;
- }
- else if (keyEdit.doCheck(GET_BOOL, "cardedit.genkeys.replace_keys")) {
- ret.exitCode = 0;
- ret.writeTxt = "Y";
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.enter")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.backupPasswd;
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.valid")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.expiry;
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.name")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.name;
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.email")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.email;
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.comment")) {
- ret.exitCode = 0;
- if (inputData.comment) {
- ret.writeTxt = inputData.comment;
- }
- else {
- ret.writeTxt="";
- }
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function cardAdminDataCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- var pinObj={};
-
- if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) {
- ++inputData.step;
- ret.exitCode = 0;
- switch(inputData.step) {
- case 1:
- ret.writeTxt = "admin";
- break;
- case 2:
- ret.writeTxt = "name";
- break;
- case 3:
- ret.writeTxt = "lang";
- break;
- case 4:
- ret.writeTxt = "sex";
- break;
- case 5:
- ret.writeTxt = "url";
- break;
- case 6:
- ret.writeTxt = "login";
- break;
- case 7:
- if (inputData.forcepin != 0) {
- ret.writeTxt = "forcesig";
- break;
- }
- default:
- ret.writeTxt = "quit";
- ret.quitNow=true;
- break;
- }
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterAdminPin"), ret);
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- GetPin(inputData.parent, EnigGetString("enterCardPin"), ret);
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.smartcard.surname")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.firstname;
- }
- else if (keyEdit.doCheck(GET_LINE, "keygen.smartcard.givenname")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.name;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardedit.change_sex")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.sex;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardedit.change_lang")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.lang;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardedit.change_url")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.url;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardedit.change_login")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.login;
- }
- else {
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- ret.exitCode=-1;
- }
-}
-
-function cardChangePinCallback(inputData, keyEdit, ret) {
- ret.writeTxt = "";
- ret.errorMsg = "";
-
- if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) {
- ++inputData.step;
- ret.exitCode=0;
- switch (inputData.step) {
- case 1:
- ret.writeTxt = "admin";
- break;
- case 2:
- ret.writeTxt = "passwd";
- break;
- default:
- ret.writeTxt = "quit";
- ret.exitCode = 0;
- ret.quitNow=true;
- break;
- }
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) {
- ret.exitCode=0;
- ret.writeTxt = inputData.adminPin;
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) {
- ret.exitCode=0;
- ret.writeTxt = inputData.oldPin;
- }
- else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.new.ask") ||
- keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.repeat") ||
- keyEdit.doCheck(GET_HIDDEN, "passphrase.ask") ||
- keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.new.ask")) {
- ret.exitCode = 0;
- ret.writeTxt = inputData.newPin;
- }
- else if (keyEdit.doCheck(GET_LINE, "cardutil.change_pin.menu")) {
- ret.exitCode=0;
- ++inputData.pinStep;
- if (inputData.pinStep == 1) {
- ret.writeTxt = inputData.action.toString();
- }
- else {
- ret.writeTxt = "Q";
- }
- }
- else {
- ret.exitCode=-1;
- ret.quitNow=true;
- ERROR_LOG("Unknown command prompt: "+keyEdit.getText()+"\n");
- }
-}
-
-const EnigCmdLineHandler = {
- /* nsISupports */
- QueryInterface: function (iid) {
- if (iid.equals(nsICommandLineHandler) ||
- iid.equals(Components.interfaces.nsIFactory) ||
- iid.equals(nsISupports))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- /* nsICommandLineHandler */
- handle: function(cmdLine) {
- if (cmdLine.handleFlag("pgpkeyman", false)) {
- cmdLine.preventDefault = true; // do not open main app window
-
- var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
- .getService(Components.interfaces.nsIWindowWatcher);
- wwatch.openWindow(null, "chrome://enigmail/content/enigmailKeyManager.xul", "_blank",
- "chrome,dialog=no,all", cmdLine);
- }
- },
-
- helpInfo: " -pgpkeyman Open the OpenPGP key management.\n",
-
- /* nsIFactory */
-
- createInstance: function (outer, iid) {
- if (outer != null)
- throw Components.results.NS_ERROR_NO_AGGREGATION;
-
- return this.QueryInterface(iid);
- },
-
- lockFactory: function (lock) {}
-};
-
-
-function enigExtractHashAlgo(msgTxt) {
- DEBUG_LOG("enigmailMsgComposeOverlay.js: enigExtractHashAlgo\n");
-
- var m = msgTxt.match(/^(Hash: )(.*)$/m);
- if (m.length > 2 && m[1] == "Hash: ") {
- var hashAlgorithm = m[2].toLowerCase();
- for (var i=1; i < gMimeHashAlgorithms.length; i++) {
- if (gMimeHashAlgorithms[i] == hashAlgorithm) {
- DEBUG_LOG("enigmailMsgComposeOverlay.js: enigExtractHashAlgo: found hashAlgorithm "+hashAlgorithm+"\n");
- return hashAlgorithm;
- }
- }
- }
-
- DEBUG_LOG("enigmailMsgComposeOverlay.js: enigExtractHashAlgo: no hashAlgorithm found\n");
- return null;
-}
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/Makefile.in
^
|
@@ -32,7 +32,7 @@
#
XPI_MODULE = enigmail
-XPI_MODULE_VERS = 0.95.6
+XPI_MODULE_VERS = 0.95.7
DEPTH = ../../..
topsrcdir = @top_srcdir@
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/Makefile.in
^
|
@@ -38,7 +38,7 @@
# Specify these as parameters to the make command
XPI_MODULE = enigmime
-XPI_MODULE_VERS = 0.95.6.0
+XPI_MODULE_VERS = 0.95.7.0
DEPTH = ../../../..
topsrcdir = @top_srcdir@
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/enigmime.spec
^
|
@@ -1,5 +1,5 @@
Name: mozilla-enigmime
-Version: 0.95.6.0
+Version: 0.95.7.0
Release: 1
Requires: mozilla = 1.0.1, mozilla-mail = 1.0.1, mozilla-psm = 1.0.1
Summary: MIME and Inter-Process Communication for Enigmail/Mozilla
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/install.js
^
|
@@ -2,9 +2,9 @@
var err;
-err = initInstall("Enigmime v0.95.6.0", // name for install UI
+err = initInstall("Enigmime v0.95.7.0", // name for install UI
"/enigmime", // registered name
- "0.95.6.0"); // package version
+ "0.95.7.0"); // package version
logComment("initInstall: " + err);
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/install.rdf
^
|
@@ -5,7 +5,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>{847b3a02-7ab1-11d4-8f02-006008948af5}</em:id>
- <em:version>0.95.6.0</em:version>
+ <em:version>0.95.7.0</em:version>
<!-- Target Applications this extension can install into,
with minimum and maximum supported versions. -->
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/nsEnigModule.h
^
|
@@ -38,6 +38,6 @@
#ifndef _nsEnigModule_h_
#define _nsEnigModule_h_
-#define ENIGMIME_VERSION "0.95.6.0"
+#define ENIGMIME_VERSION "0.95.7.0"
#endif
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/build/package/contents.rdf
^
|
@@ -9,7 +9,7 @@
<!-- enigmail package information -->
<RDF:Description about="urn:mozilla:package:enigmime"
- chrome:displayName="Enigmime v0.95.6.0"
+ chrome:displayName="Enigmime v0.95.7.0"
chrome:author="Team Enigmail"
chrome:authorURL="http://enigmail.mozdev.org/"
chrome:name="enigmime"
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/genxpi
^
|
@@ -116,7 +116,7 @@
platformNode = APP_PLATFORM_MAC;
else if (!platformStr.search(/^Win/))
platformNode = APP_PLATFORM_WIN;
- else if (!platformStr.search(/Linux/))
+ else if (platformStr.search(/Linux/) >= 0)
platformNode = APP_PLATFORM_LINUX;
else if (!platformStr.search(/^OS\/2/))
platformNode = APP_PLATFORM_OS2;
@@ -171,6 +171,8 @@
case APP_PLATFORM_OS2:
addDirectory("", "platform/"+ABI_PLATFORM_OS2+"/components", fComponents, "");
break;
+ default:
+ addDirectory("", "platform/${platform}/components", fComponents, "");
}
err = getLastError();
@@ -267,6 +269,20 @@
}
EOT
+cat << EOT > ${targetDir}/components/gpg-wrapper.sh
+#!/bin/sh
+
+GPG="\$1"
+shift
+
+\$GPG "\$@"
+exitCode=\$?
+
+sleep 2
+exit $exitCode
+EOT
+
+chmod 755 ${targetDir}/components/gpg-wrapper.sh
cd ${srcDir}/package
enigmimeDll=${libPrefix}enigmime${dllSuffix}
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar
^
|
+(directory)
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/am-enigprefs.properties
^
|
@@ -0,0 +1,2 @@
+# Strings used in the Mozill AccountManager
+prefPanel-enigprefs=خصوصية OpenPGP
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/contents.rdf
^
|
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
+
+ <!-- list all the packages being supplied by this jar -->
+ <RDF:Seq about="urn:mozilla:locale:root">
+ <RDF:li resource="urn:mozilla:locale:ar"/>
+ </RDF:Seq>
+
+ <!-- locale information -->
+ <RDF:Description about="urn:mozilla:locale:ar" chrome:name="ar">
+
+ <chrome:packages>
+ <RDF:Seq about="urn:mozilla:locale:ar:packages">
+ <RDF:li resource="urn:mozilla:locale:ar:enigmail"/>
+ </RDF:Seq>
+ </chrome:packages>
+
+ </RDF:Description>
+
+</RDF:RDF>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/enigmail.dtd
^
|
@@ -0,0 +1,636 @@
+<!ENTITY enigmail.label "Enigmail">
+<!ENTITY enigmail.openpgp.label "OpenPGP">
+
+<!ENTITY enigmail.keyUserId.label "الحساب / هوية المستخدم">
+<!ENTITY enigmail.keygenTitle.label "ولِّد مفتاح OpenPGP">
+<!ENTITY enigmail.useForSigning.label "استخدم المفتاح المُولّد للهوية المختارة">
+<!ENTITY enigmail.keyComment.label "التعليق">
+<!ENTITY enigmail.keyNoPassphrase.label "لا كلمة سر">
+<!ENTITY enigmail.keyPassphrase.label "كلمة السر">
+<!ENTITY enigmail.keyPassphraseRepeat.label "كلمة السر (أعد)">
+<!ENTITY enigmail.generateKey.label "ولِّد المفتاح">
+<!ENTITY enigmail.generateKey.tooltip "يولِّد مفتاحا جديدا متوافقا مع OpenPGP للتعمية و/أو التوقيع">
+<!ENTITY enigmail.cancelKey.label "الغِ">
+<!ENTITY enigmail.cancelKey.tooltip "الغِ توليد المفتاح">
+<!ENTITY enigmail.keyGen.expiry.title "انتهاء المفتاح">
+<!ENTITY enigmail.keyGen.expire.label "تنتهي صلاحية المفتاح بعد">
+<!ENTITY enigmail.keyGen.days.label "أيّام">
+<!ENTITY enigmail.keyGen.months.label "أشهُر">
+<!ENTITY enigmail.keyGen.years.label "سنوات">
+<!ENTITY enigmail.keyGen.noExpiry.label "ليس للمفتاح مدة صلاحية محددة">
+<!ENTITY enigmail.keyGen.keySize.label "طول المفتاح">
+<!ENTITY enigmail.keyGen.console.label "مرقاب توليد المفاتيح">
+<!ENTITY enigmail.keyGen.keyType.label "نوع المفتاح">
+<!ENTITY enigmail.keyGen.keyType.dsa "DSA والجمل">
+<!ENTITY enigmail.keyGen.keyType.rsa "RSA">
+
+<!ENTITY enigmail.preferences.label "تفضيلات OpenPGP">
+
+<!ENTITY enigmail.passwordSettings.label "إعدادات كلمة السر">
+<!ENTITY enigmail.userNoPassphrase.label "لا تسأل أبدا عن كلمة السر">
+<!ENTITY enigmail.userNoPassphrase.tooltip "أشِّره إن كان مفتاح OpenPGP الخاص بك غير محمي بعبارة سر.">
+<!ENTITY enigmail.expertUser.label "اعرض تضبيطات الخبراء">
+<!ENTITY enigmail.expertUser.tooltip "فعّله إن أردت أن ترى عناصر قائمة وخيارات المستخدمين المتقدمين.">
+
+<!ENTITY enigmail.defaultEncryptionOption.label "اضبط خيارات التعمية البدئية">
+<!ENTITY enigmail.usePGPMimeOption.label "اختر خيار PGP/MIME">
+<!ENTITY enigmail.mimeHashAlgorithm.label "خوارزمية التلبيد">
+
+<!ENTITY enigmail.prefs.pathsTitle.label "الملفات والأدلة">
+<!ENTITY enigmail.prefs.overrideGpg.label "افرض">
+<!ENTITY enigmail.prefs.overrideGpg.tooltip "انقر لتحدد مكان GnuPG">
+
+
+<!ENTITY enigmail.agentPath.label "مسار ملف GnuPG التنفيذي">
+<!ENTITY enigmail.agentAdditionalParam.label "معاملات إضافية تمرر إلى GnuPG">
+<!ENTITY enigmail.agentAdditionalParam.tooltip "حدد الخيارات التي سيستخدمها GnuPG.">
+
+<!ENTITY enigmail.mime_parts_on_demand.label "نزِّل المرفقات فقط عند فتحها (IMAP فقط)">
+<!ENTITY enigmail.allowEmptySubject.label "لا تحذّرني عندما يكون حقل الموضوع خاويا">
+<!ENTITY enigmail.allowEmptySubject.tooltip "أشره لتعطيل التنويه عند الإرسال دون ترويسة الموضوع (غير محبذ).">
+
+
+<!ENTITY enigmail.maxIdleMinutesHead.label "تذكر كلمة السر لمدة">
+<!ENTITY enigmail.maxIdleMinutesTail.label "دقائق من السكون">
+<!ENTITY enigmail.maxIdleMinutes.tooltip "يحفظ كلمات السر في الذاكرة لوقت محدود.">
+
+<!ENTITY enigmail.resetPrefsButton.label "صفّر">
+<!ENTITY enigmail.resetPrefs.tooltip "اضبط كل تفضيلات OpenPGP إلى القيم البدئية.">
+<!ENTITY enigmail.prefsHelpButton.label "مساعدة">
+
+<!ENTITY enigmail.upgradeButton.label "حدِّث Enigmail">
+<!ENTITY enigmail.uninstallButton.label "أزِل Enigmail">
+
+<!ENTITY enigmail.basic.label "أساسية">
+<!ENTITY enigmail.sending.label "الإرسال">
+<!ENTITY enigmail.keySel.label "اختيار المفاتيح">
+<!ENTITY enigmail.pgpMime.label "PGP/MIME">
+<!ENTITY enigmail.advancedPrefsButton.label "متقدمة">
+<!ENTITY enigmail.debug.label "التنقيح">
+
+<!ENTITY enigmail.basicPrefs.label "التضبيطات الأساسية">
+
+<!ENTITY enigmail.whenSending.label "عند إرسال البريد">
+<!ENTITY enigmail.moreOptions.label "خيارات أخرى">
+
+<!ENTITY enigmail.encryptToSelf.label "أضف مفتاحي لقائمة المستلمين">
+<!ENTITY enigmail.encryptToSelf.tooltip "بتفعيله سيكون بوسعك دائما تظهير الرسائل التي أرسلتها.">
+<!ENTITY enigmail.alwaysTrustSend.label "ثِق دائما في مفاتيح الآخرين">
+<!ENTITY enigmail.alwaysTrustSend.tooltip "لا تستخدم شبكة الثقة لتحديد صلاحية المفاتيح">
+<!ENTITY enigmail.useNonDefaultComment.label "أضف تعليق Enigmail في توقيع OpenPGP">
+
+<!ENTITY enigmail.keyserver.label "خادوم المفاتيح">
+<!ENTITY enigmail.keyserverDlg.label "اختر خادوم مفاتيح">
+<!ENTITY enigmail.keyservers.label "حدد خادوما للبحث عن المفاتيح وتحديثها">
+<!ENTITY enigmail.keyservers.sample "مثال: sks.dnsalias.net، pgp.mit.edu، ldap://certserver.pgp.com">
+
+<!ENTITY enigmail.searchForKey.label "ابحث عن مفتاح">
+
+
+<!ENTITY enigmail.disableSMIMEui.label "اخفِ أزرار/قوائم SMIME">
+<!ENTITY enigmail.doubleDashSeparator.label "'--' فاصل التوقيع">
+<!ENTITY enigmail.useGpgAgent.label "استخدم gpg-agent لعبارات السر">
+<!ENTITY enigmail.noHushMailSupport.label "ضع '<' و '>' حول عنوان البريد">
+
+<!ENTITY enigmail.keepSettingsForReply.tooltip "عمِّ الردود على البريد المعمّى عند الإمكان">
+<!ENTITY enigmail.doubleDashSeparator.tooltip "وضع شرطتين وحدهما في سطر يعني كتلة توقيع">
+<!ENTITY enigmail.useGpgAgent.tooltip "استخدم gpg-agent جزء من (GnuPG 2) لكل إدخال عبارات السر">
+<!ENTITY enigmail.noHushMailSupport.tooltip "يضع '<' و '>' لتحديد عناوين البريد لأجل GnuPG. عطِّله إذا كان للمستلمين مفاتيح Hushmail قديمة.">
+<!ENTITY enigmail.mime_parts_on_demand.tooltip "عطل هذا إذا كنت تستلم رسائل PGP/MIME في مجلدات IMAP.">
+<!ENTITY enigmail.disableSMIMEui.tooltip "أزل زر S/MIME من شريط أدوات محرر الرسائل">
+
+<!ENTITY enigmail.logdirectory.label "دليل السجل">
+<!ENTITY enigmail.testemail.label "بريد اختبار">
+<!ENTITY enigmail.test.label "اختبر">
+
+<!ENTITY enigmail.decryptbutton.label "ظهِّر">
+<!ENTITY enigmail.decryptbutton.tip "ظهِّر أو تحقق من الرسالة باستخدام OpenPGP (Enigmail)">
+
+<!ENTITY enigmail.messengermenu.accesskey "n">
+
+<!ENTITY enigmail.decryptverify.label "ظهِّر/تحقق">
+<!ENTITY enigmail.importpublickey.label "استورد مفتاحا علنيا">
+<!ENTITY enigmail.savedecrypted.label "احفظ الرسالة المُظهَّرة">
+
+<!ENTITY enigmail.autoDecrypt.label "ظهِّر/تحقق من الرسائل تلقائيا">
+<!ENTITY enigmail.clearPassphrase.label "احذف كلمة السر المحفوظة">
+<!ENTITY enigmail.editRules.label "حرر قواعد المستلمين">
+
+<!ENTITY enigmail.prefs.label "التفضيلات">
+<!ENTITY enigmail.advprefs.label "التفضيلات المتقدمة">
+
+<!ENTITY enigmail.debugMenu.label "تنقيح OpenPGP">
+<!ENTITY enigmail.viewconsole.label "اعرض المرقاب">
+<!ENTITY enigmail.viewdebuglog.label "اعرض ملف السجل">
+
+<!ENTITY enigmail.generatekey.label "ولِّد مفتاحا">
+<!ENTITY enigmail.upgrade.label "حدِّث">
+<!ENTITY enigmail.help.label "مساعدة">
+<!ENTITY enigmail.about.title "عن OpenPGP">
+<!ENTITY enigmail.about.label "عن OpenPGP">
+<!ENTITY enigmail.reload.label "أعد تحميل الرسالة">
+<!ENTITY enigmail.browse.label "تصفّح...">
+<!ENTITY enigmail.sendersKeyMenu.label "مفتاح المُرسِل">
+<!ENTITY enigmail.adminSmartCard.label "أدِر البطاقات الذكية (SmartCard)...">
+
+
+<!ENTITY enigmail.decryptverify.accesskey "س">
+<!ENTITY enigmail.importpublickey.accesskey "و">
+<!ENTITY enigmail.savedecrypted.accesskey "ح">
+<!ENTITY enigmail.reload.accesskey "ح">
+<!ENTITY enigmail.adminSmartCard.accesskey "د">
+
+<!ENTITY enigmail.autoDecrypt.accesskey "ق">
+<!ENTITY enigmail.debugMenu.accesskey "G">
+
+<!ENTITY enigmail.clearPassphrase.accesskey "م">
+<!ENTITY enigmail.editRules.accesskey "ع">
+
+<!ENTITY enigmail.prefs.accesskey "ف">
+<!ENTITY enigmail.viewconsole.accesskey "ك">
+<!ENTITY enigmail.viewdebuglog.accesskey "ج">
+
+<!ENTITY enigmail.generatekey.accesskey "و">
+<!ENTITY enigmail.upgrade.accesskey "ح">
+<!ENTITY enigmail.help.accesskey "م">
+<!ENTITY enigmail.about.accesskey "ع">
+<!ENTITY enigmail.sendersKeyMenu.accesskey "م">
+
+<!ENTITY enigmail.securitybutton.label "OpenPGP">
+<!ENTITY enigmail.securitybutton.tip "إعدادات خصوصية OpenPGP (Enigmail)">
+
+<!ENTITY enigmail.signedsend.label "وقّع الرسالة">
+<!ENTITY enigmail.encryptedsend.label "عمِّ الرسالة">
+<!ENTITY enigmail.disableRules.label "تجاهل قواعد المستلمين">
+
+<!ENTITY enigmail.composeOptionsMenu.label "خيارات التحرير البدئية">
+
+<!ENTITY enigmail.pgpAccountSettings.label "خيارات التوقيع/التعمية...">
+<!ENTITY enigmail.mimeOptionsMenu.label "خيارات PGP/MIME...">
+<!ENTITY enigmail.sendOptionsMenu.label "خيارات الإرسال...">
+<!ENTITY enigmail.defaultKeySelOpts.label "خيارات اختيار المفتاح...">
+<!ENTITY enigmail.sendPGPMime.label "استخدم PGP/MIME لهذه الرسالة">
+
+<!ENTITY enigmail.undoencryption.label "تراجع عن التعمية">
+<!ENTITY enigmail.insertkey.label "أدرج مفتاحا علنيا">
+<!ENTITY enigmail.attachkey.label "أرفِق مفتاحا علنيا...">
+<!ENTITY enigmail.attachmykey.label "أرفِق مفتاحي العلني">
+
+<!ENTITY enigmail.composemenu.accesskey "n">
+
+<!ENTITY enigmail.signedsend.accesskey "ق">
+<!ENTITY enigmail.signedsend.key "S">
+<!ENTITY enigmail.encryptedsend.accesskey "ع">
+<!ENTITY enigmail.encryptedsend.key "P">
+<!ENTITY enigmail.disableRules.accesskey "ت">
+
+<!ENTITY enigmail.composeOptionsMenu.accesskey "ت">
+<!ENTITY enigmail.sendOptionsMenu.accesskey "س">
+<!ENTITY enigmail.defaultKeySelOpts.accesskey "ف">
+<!ENTITY enigmail.pgpAccountSettings.accesskey "ق">
+<!ENTITY enigmail.mimeOptionsMenu.accesskey "P">
+<!ENTITY enigmail.sendPGPMime.accesskey "P">
+
+<!ENTITY enigmail.undoencryption.accesskey "ع">
+<!ENTITY enigmail.insertkey.accesskey "ف">
+<!ENTITY enigmail.attachkey.accesskey "ر">
+<!ENTITY enigmail.attachmykey.accesskey "ي">
+
+<!ENTITY enigmail.defaultEncryption.label "عمِّ الرسائل بدئيا">
+<!ENTITY enigmail.defaultEncryptionSign.label "وقع بدئيا الرسائل المعماة">
+<!ENTITY enigmail.defaultSignPlainMsg.label "وقع بدئيا الرسائل غير المعماة">
+
+<!ENTITY enigmail.defaultEncryptionNone.label "لا تعمّ بدئيا">
+<!ENTITY enigmail.defaultNotSignedsend.label "لا توقع الرسائل بدئيا">
+
+<!ENTITY enigmail.recipientsSelectionOption.label "كيف تُختار المفاتيح؟">
+<!ENTITY enigmail.perRecipientRules.label "بالقواعد المحددة مسبقا فقط">
+<!ENTITY enigmail.perRecipientRules.tooltip "اختر المفاتيح طبقا للقواعد؛ واعرض انشاء قواعد للمستلمين الذين لا قواعد لهم.">
+<!ENTITY enigmail.perRecipientRulesAndEmail.label "بالقواعد وعناوين البريد">
+<!ENTITY enigmail.perRecipientRulesAndEmail.tooltip "اختر المفاتيح يدويا إن لم يستطع OpenPGP أن يحدد بعد تطبيق القواعد وفحص عناوين البريد.">
+<!ENTITY enigmail.perEmailAddress.label "بعناوين البريد">
+<!ENTITY enigmail.perEmailAddress.tooltip "اختر المفاتيح يدويا إن لم يستطع OpenPGP أن يحدد بعد فحص عناوين البريد (لن تُطبق أي قواعد).">
+<!ENTITY enigmail.askRecipientsAlways.label "يدويّا">
+<!ENTITY enigmail.askRecipientsAlways.tooltip "لن يحاول OpenPGP أبدا تحديد لأي المفاتيح يعمي. القرار راجع لك دائما.">
+<!ENTITY enigmail.neverAsk.label "لا اختيار يدوي للمفاتيح">
+<!ENTITY enigmail.neverAsk.tooltip "إذا لم يُعثر على مفاتيح مناسبة لكل المُستلمين، أرسل تلقائيا الرسائل بغير تعمية (خطر).">
+<!ENTITY enigmail.defineRules.label "حرر القواعد...">
+<!ENTITY enigmail.defineRules.tooltip "انقر لتستعرض أو تضيف أو تحذف أو تحرر قواعد اختيار المفاتيح.">
+
+<!ENTITY enigmail.usePGPMimeAlways.label "استخدم PGP/MIME دائما">
+<!ENTITY enigmail.usePGPMimePossible.label "اسمح باستخدام PGP/MIME">
+<!ENTITY enigmail.usePGPMimeNever.label "لا تستخدم PGP/MIME أبدا">
+
+<!ENTITY enigmail.keepSettingsForReply.label "عمِّ الردود على الرسائل المعماة">
+<!ENTITY enigmail.confirmBeforeSend.label "أكِّد دائما قبل الإرسال">
+<!ENTITY enigmail.confirmBeforeSend.tooltip "اشّره لتستعرض معلومات عن التوقيع/التعمية قبل إرسال أي رسالة">
+<!ENTITY enigmail.wrapHtmlBeforeSend.label "أعد تسطير رسائل HTML الموقعة قبل الإرسال">
+<!ENTITY enigmail.wrapHtmlBeforeSend.tooltip "يعيد ترتيب النص للتأكد أن التوقيع سيظل سليما.">
+<!ENTITY enigmail.autoKeyRetrieve.label "نزِّل تلقائيا المفاتيح المطلوبة للتحقق من التوقيعات">
+<!ENTITY enigmail.autoKeyRetrieve2.label "من خادوم المفاتيح التالي:">
+<!ENTITY enigmail.resetRememberedValues.label "صفّر التحذيرات">
+<!ENTITY enigmail.resetRememberedValues.tooltip "يعيد عرض كل حوارات التحذير والأسئلة التي صُرفت في الماضي">
+
+<!ENTITY enigmail.defaultEncryptionSign.accesskey "ع">
+<!ENTITY enigmail.defaultEncryptionOnly.accesskey "c">
+<!ENTITY enigmail.defaultEncryptionNone.accesskey "ل">
+
+<!ENTITY enigmail.usePGPMimeAlways.accesskey "د">
+<!ENTITY enigmail.usePGPMimePossible.accesskey "س">
+<!ENTITY enigmail.usePGPMimeNever.accesskey "ب">
+
+<!ENTITY enigmail.defaultSignMsg.accesskey "S">
+<!ENTITY enigmail.defaultNotSignedsend.accesskey "ع">
+<!ENTITY enigmail.confirmBeforeSend.accesskey "د">
+
+<!ENTITY enigmail.keygen.desc "<a class='enigmailStrong'> ملاحظة: قد يستغرق توليد المفتاح بضع دقائق ليتم.</a> لا تغلق التطبيق أثناء توليد المفتاح. التصفح بنشاط أو إجراء عمليات تستخدم القرص بكثافة مفيد لملئ 'وعاء العشوائية' وسيُسرِّع التوليد. ستبلّغ عندما يتم التوليد.">
+
+<!ENTITY enigmail.console.label "اعرض مرقاب OpenPGP">
+<!ENTITY enigmail.console.tooltip "يعرض مرقاب OpenPGP">
+
+<!ENTITY enigmail.uninstall.label "أزِل Enigmail">
+<!ENTITY enigmail.uninstall.tooltip "يزيل Enigmail">
+
+<!ENTITY enigmail.selectpanel.label "اختر لسان OpenPGP">
+<!ENTITY enigmail.selectpanel.tooltip "يختار لسان OpenPGP">
+
+<!ENTITY enigmail.userSelectionList.label "اختيار مفتاح OpenPGP">
+<!ENTITY enigmail.usersNotFound.label "المستلمون غير صحيحون أو غير موثوق بهم أو لم يُعثر عليهم">
+<!ENTITY enigmail.keyExpiry.label "الانتهاء">
+<!ENTITY enigmail.keyTrust.label "الثقة">
+<!ENTITY enigmail.keySelection.label "الاختيار">
+<!ENTITY enigmail.keyId.label "معرِّف (ID) المفتاح">
+<!ENTITY enigmail.userSelPlainText.label "أرسل البريد غير معمّى">
+<!ENTITY enigmail.userSelPlainTextNotSigned.label "أرسل البريد غير معمّى وغير موقّع">
+<!ENTITY enigmail.userSelPlainText.accesskey "س">
+<!ENTITY enigmail.displayNoLonger.label "لا تعرض هذا التنويه ثانية في حال كون التعمية غير ممكنة">
+<!ENTITY enigmail.importMissingKeys.label "نزِّل المفاتيح المطلوبة">
+<!ENTITY enigmail.importMissingKeys.accesskey "D">
+<!ENTITY enigmail.importMissingKeys.tooltip "يحاول استيراد المفاتيح المطلوبة من خادوم المفاتيح">
+<!ENTITY enigmail.importMissingKeys.accesskey "م">
+<!ENTITY enigmail.refreshKeys.label "أنعش قائمة المفاتيح">
+<!ENTITY enigmail.refreshKeys.accesskey "ع">
+<!ENTITY enigmail.perRecipientsOption.label "ولّد قواعد المُستلمين">
+
+<!ENTITY enigmail.experimental.label "استخدم التوقيع/التعمية في المتن الاختبارية في PGP/MIME">
+
+<!ENTITY enigmail.enigmailAttachDesc.label "مع هذه الرسالة مرفقات. كيف تريد تعميتها/توقيعها؟">
+<!ENTITY enigmail.enigEncryptAttachNone.label "وقِّع/عمِّ نص الرسالة فقط، وليس المرفقات">
+<!ENTITY enigmail.enigEncryptAttachInline.label "عمِّ كل مرفقة على حدى وأرسل الرسالة مستخدما PGP في المتن">
+<!ENTITY enigmail.enigEncryptAttachPgpMime.label "عمِّ/وقِّع الرسالة بمرفقاتها أرسلها مستخدما PGP/MIME">
+<!ENTITY enigmail.encryptAttachSkipDlg.label "استخدم هذه الطريقة لكل المرفقات لاحقا">
+
+<!ENTITY enigmail.ctxDecryptOpen.label "ظهِّر وافتح">
+<!ENTITY enigmail.ctxDecryptSave.label "ظهِّر واحفظ باسم...">
+<!ENTITY enigmail.ctxImportKey.label "استورد مفتاح OpenPGP">
+<!ENTITY enigmail.ctxDecryptOpen.accesskey "ح">
+<!ENTITY enigmail.ctxDecryptSave.accesskey "س">
+<!ENTITY enigmail.ctxImportKey.accesskey "و">
+
+<!ENTITY enigmail.amPrefTitle.label "خيارات OpenPGP (Enigmail)">
+<!ENTITY enigmail.amPrefDesc.label "يدعم Enigmail تعمية وتوقيع الرسائل باستخدام OpenPGP. ينبغي تثبيت GnuPG (gpg) لتستخدم هذه الخاصية.">
+<!ENTITY enigmail.amPrefEnablePgp.label "فعِّل دعم OpenPGP (Enigmail) لهذه الهوية">
+<!ENTITY enigmail.amPrefUseFromAddr.label "استخدم عنوان بريد هذه الهوية لتَعرُّف مفتاح OpenPGP">
+<!ENTITY enigmail.amPrefUseKeyId.label "استخدم معرِّف مفتاح OpenPGP محدد (0x1234ABCD):">
+<!ENTITY enigmail.amPrefSelectKey.label "اختر مفتاحا...">
+<!ENTITY enigmail.amPrefDefaultEncrypt.label "الخيارات البدئية لتحرير الرسائل">
+<!ENTITY enigmail.encryptionDlg.label "إعدادات تعمية وتوقيع OpenPGP">
+<!ENTITY enigmail.encDlgEncrypt.label "عمِّ الرسالة">
+<!ENTITY enigmail.encDlgEncrypt.accesskey "ع">
+<!ENTITY enigmail.encDlgSign.label "وقّع الرسالة">
+<!ENTITY enigmail.encDlgSign.accesskey "ق">
+<!ENTITY enigmail.encDlgPgpMime.label "استخدم PGP/MIME">
+<!ENTITY enigmail.encDlgPgpMime.accesskey "خ">
+<!ENTITY enigmail.amPrefPgpHeader.label "أرسل ترويسة 'OpenPGP'">
+<!ENTITY enigmail.amPrefPgpHeader.none.label "لا ترسل أي ترويسة 'OpenPGP'">
+<!ENTITY enigmail.amPrefPgpHeader.id.label "أرسِل معرِّف مفتاح OpenPGP">
+<!ENTITY enigmail.amPrefPgpHeader.url.label "أرسل مسار جلب المفتاح:">
+
+<!ENTITY enigmail.retrieveKey.label "يجري جلب المفاتيح">
+<!ENTITY enigmail.progressText.label "التّقدّم:">
+<!ENTITY enigmail.retrieveKey.retrieveMsg.label "يجري جلب المفتاح، انتظر...">
+
+<!ENTITY enigmail.editPgpSecurity.label "خصوصية OpenPGP...">
+<!ENTITY enigmail.editPgpSecurity.accesskey "O">
+
+<!ENTITY enigmail.openPgpSecurity.label "خصوصية OpenPGP">
+
+<!ENTITY enigmail.pgpSecurityInfo.label "معلومات خصوصية OpenPGP...">
+<!ENTITY enigmail.copySecurityInfo.label "انسخ معلومات خصوصية OpenPGP">
+<!ENTITY enigmail.showPhoto.label "اعرض هوية OpenPGP الصُوَرة">
+<!ENTITY enigmail.signSenderKey.label "وقِّع المفتاح...">
+<!ENTITY enigmail.trustSenderKey.label "حدد الثقة في المالك...">
+<!ENTITY enigmail.signSenderKeyPopup.label "وقِّع مفتاح المُرسِل...">
+<!ENTITY enigmail.trustSenderKeyPopup.label "حدد الثقة في مالك مفتاح المُرسِل...">
+<!ENTITY enigmail.smimeSecurityInfo.label "معلومات خصوصية S/MIME...">
+<!ENTITY enigmail.createRuleFromAddr.label "ولّد قاعدة OpenPGP من العناوين...">
+<!ENTITY enigmail.keyManWindow.label "إدارة المفاتيح">
+<!ENTITY enigmail.keyManWindow.accesskey "ف">
+
+<!ENTITY enigmail.singleRcptSettings.label "OpenPGP - إعدادات المُستلم">
+<!ENTITY enigmail.keysToUse.label "المفاتيح التي ستُستخدم:">
+<!ENTITY enigmail.selKeysButton.label "اختر المفاتيح...">
+<!ENTITY enigmail.action.label "الإجراء">
+<!ENTITY enigmail.nextRule.label "تابع تطبيق القاعدة التالية على العنوان المُطابق">
+<!ENTITY enigmail.nextAddress.label "لا تطبق المزيد من القواعد على العنوان المُطابق">
+<!ENTITY enigmail.useKeys.label "استخدم OpenPGP مفاتيح التالية:">
+<!ENTITY enigmail.selKeysButton.accesskey "خ">
+<!ENTITY enigmail.setDefaultsFor.label "بدئيا عند...">
+<!ENTITY enigmail.encryption.label "التعمية">
+<!ENTITY enigmail.signing.label "التّوقيع">
+<!ENTITY enigmail.never.label "أبدًا">
+<!ENTITY enigmail.always.label "دائمًا">
+<!ENTITY enigmail.maybe.label "نعم، إن اختير في تحرير الرسائل">
+<!ENTITY enigmail.singleRcptSettings.desc "(لاحظ: عند التضارب، 'أبدًا' تسود على 'دائمًا')">
+<!ENTITY enigmail.ruleEmail.label "اضبط قواعد OpenPGP لأجل">
+<!ENTITY enigmail.ruleEmail.tooltip "املأ فقط عناوين البريد، لا تضع أسماء المستلمين\nمثلا: 'اسم ما <some.name@address.net>' غير مقبول">
+<!ENTITY enigmail.sepratationDesc.label "(افصل ما بين عناوين البريد بمسافات)">
+<!ENTITY enigmail.matchDescStart.label "طبق القاعدة إن كان المستلم">
+<!ENTITY enigmail.matchDescEnd.label "أحد العناوين أعلاه">
+<!ENTITY enigmail.matchExact.label "بالضبط">
+<!ENTITY enigmail.matchContains.label "يحوي">
+<!ENTITY enigmail.matchBegin.label "في أوله">
+<!ENTITY enigmail.matchEnd.label "نهايته هي">
+<!ENTITY enigmail.not.label "ليس">
+
+<!ENTITY enigmail.rulesEditor.label "OpenPGP - محرر قواعد المُستلمين">
+<!ENTITY enigmail.email.label "البريد">
+<!ENTITY enigmail.pgpKeys.label "مفاتيح OpenPGP">
+<!ENTITY enigmail.sign.label "وقّع">
+<!ENTITY enigmail.encrypt.label "عمِّ">
+<!ENTITY enigmail.edit.label "عدِّل">
+<!ENTITY enigmail.edit.accesskey "ع">
+<!ENTITY enigmail.add.label "أضف">
+<!ENTITY enigmail.add.accesskey "ض">
+<!ENTITY enigmail.delete.label "احذِف">
+<!ENTITY enigmail.delete.accesskey "ذ">
+<!ENTITY enigmail.moveUp.label "انقل لأعلى">
+<!ENTITY enigmail.moveUp.accesskey "ع">
+<!ENTITY enigmail.moveDown.label "انقل لأسفل">
+<!ENTITY enigmail.moveDown.accesskey "س">
+<!ENTITY enigmail.searchRule.label "اعرض القواعد ذات عناوين البريد التي تحتوي:">
+<!ENTITY enigmail.clearSearch.label "احذف">
+<!ENTITY enigmail.clearSearch.accesskey "م">
+
+<!ENTITY enigmail.searchKeyDlg.label "نزِّل مفاتيح OpenPGP">
+<!ENTITY enigmail.searchKeyDlgCapt.label "وجدت مفاتيح - اختر لتستورِد">
+<!ENTITY enigmail.created.label "تاريخ الإنشاء">
+<!ENTITY enigmail.valid.label "صالح">
+
+<!ENTITY enigmail.progress.label "التقدُّم">
+
+<!ENTITY enigmail.sKeyDlg.title "OpenPGP - وقَّع المفتاح">
+<!ENTITY enigmail.sKeyDlg.signKey.label "المفتاح الذي سيُوقّع:">
+<!ENTITY enigmail.sKeyDlg.fingerprint.label "البصمة:">
+<!ENTITY enigmail.sKeyDlg.signWithKey.label "مفتاح التوقيع:">
+<!ENTITY enigmail.sKeyDlg.checked.label "إلى أي مدى تحققت من أن المفتاح الذي أنت بصدد توقيعه ينتمي للشخص المذكور أعلاه؟">
+<!ENTITY enigmail.sKeyDlg.noAnswer.label "لن أُجيب">
+<!ENTITY enigmail.sKeyDlg.notChecked.label "لم أتحقق على الإطلاق">
+<!ENTITY enigmail.sKeyDlg.casualCheck.label "قُمت بتحقق عادي">
+<!ENTITY enigmail.sKeyDlg.carefulCheck.label "تحققت بعناية شديدة">
+<!ENTITY enigmail.sKeyDlg.createLocal.label "توقيع محلي (لا يمكن تصديره)">
+<!ENTITY enigmail.sKeyDlg.alreadySigned.label "لاحظ: بعض المفاتيح موقع مسبقا بالمفتاح المختار للتوقيع!">
+
+<!ENTITY enigmail.addUidDlg.title "OpenPGP - أضِف هوية المستخدم">
+<!ENTITY enigmail.addUidDlg.name.label "الاسم">
+<!ENTITY enigmail.addUidDlg.email.label "البريد">
+<!ENTITY enigmail.addUidDlg.comment.label "التعليق (اختياري)">
+
+<!ENTITY enigmail.keyTrust.title "OpenPGP - حدد الثِّقة في المالك">
+<!ENTITY enigmail.keyTrust.trustKey.label "المفتاح الذي ستثِق به:">
+<!ENTITY enigmail.keyTrust.trustLevel.label "كم تثِق بهذا المفتاح؟">
+<!ENTITY enigmail.keyTrust.dontKnow.label "لا أعرف">
+<!ENTITY enigmail.keyTrust.noTrust.label "لا أثق به">
+<!ENTITY enigmail.keyTrust.marginalTrust.label "ثقة هامشية">
+<!ENTITY enigmail.keyTrust.fullTrust.label "ثقة تامة">
+<!ENTITY enigmail.keyTrust.ultimateTrust.label "ثقة مطلقة">
+
+<!ENTITY enigmail.keyMan.title "إدارة مفاتيح OpenPGP">
+<!ENTITY enigmail.keyMan.close.label "أغلق النافذة">
+<!ENTITY enigmail.keyMan.generate.label "زوج مفاتيح جديد">
+<!ENTITY enigmail.keyMan.sign.label "وقِّع المفتاح">
+<!ENTITY enigmail.keyMan.setTrust.label "حدد الثقة في المالك">
+<!ENTITY enigmail.keyMan.genRevoke.label "شهادة نقض">
+<!ENTITY enigmail.keyMan.ctxGenRevoke.label "ولِّد واحفظ شهادة نقض">
+
+<!ENTITY enigmail.keyMan.fileMenu.label "ملف">
+<!ENTITY enigmail.keyMan.editMenu.label "حرّر">
+<!ENTITY enigmail.keyMan.viewMenu.label "اعرض">
+<!ENTITY enigmail.keyMan.keyserverMenu.label "خادوم المفاتيح">
+<!ENTITY enigmail.keyMan.generateMenu.label "ولِّد">
+
+<!ENTITY enigmail.keyMan.fileMenu.accesskey "م">
+<!ENTITY enigmail.keyMan.editMenu.accesskey "ح">
+<!ENTITY enigmail.keyMan.viewMenu.accesskey "ع">
+<!ENTITY enigmail.keyMan.keyserverMenu.accesskey "خ">
+<!ENTITY enigmail.keyMan.generateMenu.accesskey "و">
+
+<!ENTITY enigmail.keyMan.importFromFile.label "استورد مفاتيح من ملف">
+<!ENTITY enigmail.keyMan.importFromServer.label "ابحث عن مفاتيح">
+<!ENTITY enigmail.keyMan.importFromClipbrd.label "استورد مفاتيح من الحافظة">
+<!ENTITY enigmail.keyMan.exportToFile.label "صدِّر المفاتيح إلى ملف">
+<!ENTITY enigmail.keyMan.sendKeys.label "أرسل المفاتيح العلنية بالبريد">
+<!ENTITY enigmail.keyMan.uploadToServer.label "ارفع المفاتيح العلنية">
+<!ENTITY enigmail.keyMan.copyToClipbrd.label "انسخ المفاتيح العلنية إلى الحافظة">
+<!ENTITY enigmail.keyMan.ctxExportToFile.label "صدِّر المفاتيح إلى ملف">
+<!ENTITY enigmail.keyMan.ctxUploadToServer.label "ارفع المفاتيح العلنية إلى خادوم المفاتيح">
+<!ENTITY enigmail.keyMan.ctxCopyToClipbrd.label "انسخ المفاتيح العلنية إلى الحافظة">
+<!ENTITY enigmail.keyMan.refreshKey.label "أنعش المفاتيح العلنية">
+<!ENTITY enigmail.keyMan.refreshSelKeys.label "أنعش المفاتيح العلنية المختارة">
+<!ENTITY enigmail.keyMan.refreshAllKeys.label "أنعش كل المفاتيح العلنية">
+<!ENTITY enigmail.keyMan.ctxRefreshKey.label "حدث المفاتيح العلنية من خادوم المفاتيح">
+
+<!ENTITY enigmail.keyMan.reload.label "أعِد تحميل ذاكرة المفاتيح">
+<!ENTITY enigmail.keyMan.addUid.label "أضِف هوية مستخدم">
+<!ENTITY enigmail.keyMan.manageUid.label "أدِر هويات المستخدمين">
+<!ENTITY enigmail.keyMan.changePwd.label "غير كلمة السر">
+<!ENTITY enigmail.keyMan.delKey.label "احذف المفتاح">
+<!ENTITY enigmail.keyMan.revokeKey.label "انقض المفتاح">
+<!ENTITY enigmail.keyMan.keyProps.label "خصائص المفتاح">
+<!ENTITY enigmail.keyMan.viewPhoto.label "الهوية الصُّورة">
+<!ENTITY enigmail.keyMan.ctxViewPhoto.label "استعرض الهوية الصُّورة">
+<!ENTITY enigmail.keyMan.viewSig.label "التوقيعات">
+<!ENTITY enigmail.keyMan.ctxViewSig.label "استعرض التوقيعات">
+<!ENTITY enigmail.keyMan.keyType.label "النوع">
+<!ENTITY enigmail.keyMan.calcTrust.label "صلاحية المفتاح">
+<!ENTITY enigmail.keyMan.ownerTrust.label "الثقة في المالك">
+<!ENTITY enigmail.keyMan.stopTransfer.label "أوقف النقل">
+<!ENTITY enigmail.keyMan.fingerprint.label "البصمة">
+<!ENTITY enigmail.keyMan.selectAll.label "اختر كل المفاتيح">
+
+<!ENTITY enigmail.keyMan.filter.label "رشّح حسب هويات الملاك أو المفاتيح التي تحوي:">
+<!ENTITY enigmail.keyMan.clearFilter.label "أخلِ">
+<!ENTITY enigmail.keyMan.clearFilter.accesskey "ل">
+
+<!ENTITY enigmail.keyMan.window.accesskey "W">
+<!ENTITY enigmail.keyMan.close.accesskey "غ">
+<!ENTITY enigmail.keyMan.generate.accesskey "ز">
+<!ENTITY enigmail.keyMan.sign.accesskey "ق">
+<!ENTITY enigmail.keyMan.setTrust.accesskey "ث">
+<!ENTITY enigmail.keyMan.genRevoke.accesskey "ح">
+<!ENTITY enigmail.keyMan.delKey.accesskey "ح">
+<!ENTITY enigmail.keyMan.revokeKey.accesskey "س">
+<!ENTITY enigmail.keyMan.importFromFile.accesskey "س">
+<!ENTITY enigmail.keyMan.exportToFile.accesskey "ص">
+<!ENTITY enigmail.keyMan.importFromServer.accesskey "ب">
+<!ENTITY enigmail.keyMan.uploadToServer.accesskey "ف">
+<!ENTITY enigmail.keyMan.reload.accesskey "ع">
+<!ENTITY enigmail.keyMan.addUid.accesskey "ض">
+<!ENTITY enigmail.keyMan.manageUid.accesskey "د">
+<!ENTITY enigmail.keyMan.changePwd.accesskey "ة">
+<!ENTITY enigmail.keyMan.viewSig.accesskey "ت">
+<!ENTITY enigmail.keyMan.showPhoto.accesskey "P">
+<!ENTITY enigmail.keyMan.importMenu.accesskey "I">
+<!ENTITY enigmail.keyMan.exportMenu.accesskey "X">
+<!ENTITY enigmail.keyMan.importFromClipbrd.accesskey "س">
+<!ENTITY enigmail.keyMan.copyToClipbrd.accesskey "ن">
+<!ENTITY enigmail.keyMan.keyDetails.accesskey "K">
+<!ENTITY enigmail.keyMan.enableKey.accesskey "B">
+<!ENTITY enigmail.keyMan.refreshKey.accesskey "ش">
+<!ENTITY enigmail.keyMan.refreshSelKeys.accesskey "م">
+<!ENTITY enigmail.keyMan.refreshAllKeys.accesskey "ك">
+<!ENTITY enigmail.keyMan.selectAll.accesskey "ك">
+<!ENTITY enigmail.keyMan.sendKeys.accesskey "ل">
+
+<!ENTITY enigmail.keyMan.closeWin.key "W">
+<!ENTITY enigmail.keyMan.selectAll.key "A">
+
+<!ENTITY enigmail.viewKeySigDlg.title "قائمة التوقيعات">
+<!ENTITY enigmail.viewKeySigDlg.sigForKey.label "التوقيعات على المفتاح:">
+<!ENTITY enigmail.viewKeySigDlg.sigType.label "نوع التوقيع">
+
+<!ENTITY enigmail.manageUidDlg.title "غير هوية المستخدم الأساسية">
+<!ENTITY enigmail.manageUidDlg.affectedKey.label "المفتاح الذي سيتغير:">
+<!ENTITY enigmail.manageUidDlg.availableUid.label "هويات المستخدم المعروفة:">
+<!ENTITY enigmail.manageUidDlg.addUid.label "أضِفْ">
+<!ENTITY enigmail.manageUidDlg.deleteUid.label "احذف">
+<!ENTITY enigmail.manageUidDlg.revokeUid.label "انقض">
+<!ENTITY enigmail.manageUidDlg.setPrimary.label "حدده كأساسي">
+
+<!ENTITY enigmail.keyDetails.title "خصائص المفتاح">
+<!ENTITY enigmail.keyDetails.userId.label "هوية المستخدم الأساسية">
+<!ENTITY enigmail.keyDetails.keyId.label "هويّة (ID) المفتاح">
+<!ENTITY enigmail.keyDetails.ID.label "الهوية">
+<!ENTITY enigmail.keyDetails.keyType.label "النوع">
+<!ENTITY enigmail.keyDetails.subType.label "مفتاح فرعي">
+<!ENTITY enigmail.keyDetails.algorithm.label "الخوارزميّة">
+<!ENTITY enigmail.keyDetails.size.label "الطول">
+<!ENTITY enigmail.keyDetails.created.label "تاريخ الإنشاء">
+<!ENTITY enigmail.keyDetails.expiry.label "الانتهاء">
+<!ENTITY enigmail.keyDetails.calcTrust.label "صلاحية المفتاح">
+<!ENTITY enigmail.keyDetails.ownerTrust.label "الثقة في المالك">
+<!ENTITY enigmail.keyDetails.fingerprint.label "البصمة">
+
+<!ENTITY enigmail.cardDetails.title "تفاصيل OpenPGP SmartCard">
+<!ENTITY enigmail.cardDetails.cardMenu.label "SmartCard">
+<!ENTITY enigmail.cardDetails.adminPin.label "غيّر PIN">
+<!ENTITY enigmail.cardDetails.genCardKey.label "ولِّد مفتاحا">
+
+<!ENTITY enigmail.cardDetails.vendor.label "الصانع">
+<!ENTITY enigmail.cardDetails.serial.label "الرّقم التّسلسلي">
+<!ENTITY enigmail.cardDetails.name.label "الاسم الأول، الاسم">
+<!ENTITY enigmail.cardDetails.lang.label "اللغة">
+<!ENTITY enigmail.cardDetails.sex.label "الجنس">
+<!ENTITY enigmail.cardDetails.url.label "مسار المفتاح العلني">
+<!ENTITY enigmail.cardDetails.login.label "بيانات الولوج">
+<!ENTITY enigmail.cardDetails.forcepin.label "أجبر توقيع PIN">
+<!ENTITY enigmail.cardDetails.maxpinlen.label "أقصى طول لأجل PIN">
+<!ENTITY enigmail.cardDetails.pinretry.label "عدّاد تكرار محاولات PIN">
+<!ENTITY enigmail.cardDetails.sigcount.label "عداد التوقيعات">
+<!ENTITY enigmail.cardDetails.sigKey.label "مفتاح التوقيع">
+<!ENTITY enigmail.cardDetails.keyCreated.label "تاريخ الإنشاء">
+<!ENTITY enigmail.cardDetails.encKey.label "مفتاح التعمية">
+<!ENTITY enigmail.cardDetails.authKey.label "مفتاح الاستيثاق">
+<!ENTITY enigmail.cardDetails.yes.label "نعم">
+<!ENTITY enigmail.cardDetails.no.label "لا">
+<!ENTITY enigmail.cardDetails.male.label "ذكر">
+<!ENTITY enigmail.cardDetails.female.label "أنثى">
+<!ENTITY enigmail.cardDetails.editData.label "حرر بيانات البظاقة">
+<!ENTITY enigmail.cardDetails.save.label "احفظ">
+<!ENTITY enigmail.cardDetails.reset.label "صفّر">
+<!ENTITY enigmail.cardDetails.closeWindow.label "أغلق">
+
+<!ENTITY enigmail.cardDetails.adminPin.accesskey "P">
+<!ENTITY enigmail.cardDetails.genCardKey.accesskey "د">
+<!ENTITY enigmail.cardDetails.cardMenu.accesskey "S">
+<!ENTITY enigmail.cardDetails.editData.accesskey "ح">
+
+<!ENTITY enigmail.genCardKey.title "ولِّد مفتاح OpenPGP">
+<!ENTITY enigmail.genCardKey.backupKey.label "احفظ نسخة احتياطية من المفتاح خارج البطاقة">
+<!ENTITY enigmail.genCardKey.desc "<a class='enigmailStrong'> ملاحظة: قد يستغرق توليد المفتاح بضع دقائق ليتم.</a> لا تغلق التطبيق أثناء توليد المفتاح. ستبلّغ عند تمام التوليد.">
+
+<!ENTITY enigmail.cardPin.title "غيّر SmartCard PIN">
+<!ENTITY enigmail.cardPin.action.label "ما الذي تريد فعله">
+<!ENTITY enigmail.cardPin.changePin.label "غيّر PIN">
+<!ENTITY enigmail.cardPin.changeAdmPin.label "غيّر PIN المدير">
+<!ENTITY enigmail.cardPin.unblockPin.label "افتح قفل PIN">
+<!ENTITY enigmail.cardPin.currAdmPin.label "PIN المدير الحالي">
+<!ENTITY enigmail.cardPin.newAdminPin.label "PIN المدير الجديد">
+<!ENTITY enigmail.cardPin.adminPinRepeat.label "كرر PIN الجديد">
+<!ENTITY enigmail.cardPin.currPin.label "PIN الحالي">
+<!ENTITY enigmail.cardPin.newPin.label "PIN الجديد">
+<!ENTITY enigmail.cardPin.pinRepeat.label "كرر PIN الجديد">
+
+<!ENTITY enigmail.changePasswd.title "غيّر عبارة سر OpenPGP">
+<!ENTITY enigmail.changePasswd.currPasswd.label "كلمة السر الحالية">
+<!ENTITY enigmail.changePasswd.newPasswd.label "كلمة السر الجدية">
+<!ENTITY enigmail.changePasswd.repeatPasswd.label "كرر كلمة السر">
+
+<!ENTITY enigmail.setupWiz.title "مُرشِد إعداد OpenPGP">
+<!ENTITY enigmail.setupWiz.yes "نعم">
+<!ENTITY enigmail.setupWiz.no "لا، شكرا">
+<!ENTITY enigmail.setupWiz.pgWelcome.desc "سيُساعدك هذا المرشد على البدء في استخدام OpenPGP. خلال الشاشات القليلة التالية سنسألك بضعة أسئلة لإعداد كل شيء. <html:br/><html:br/> لإبقاء كل شيء بسيطا، قمنا ببعض التخمينات حول الإعدادات. تحاول هذا التخمينات توفير مستوى عال من الأمان للمستخدم المتوسط دون إحداث ارتباك. بالطبع يمكنك تغيير كل الإعدادات بعد انتهاء المرشِد. يمكنك معرفة المزيد عن خصائص OpenPGP من قائمة المساعدة أو من <a class='enigmailLink'><html:a href='http://enigmail.mozdev.org/'>موقع Enigmail</html:a></a>. <html:br/><html:br/> إذا واجهتك أية مشاكل في استخدام هذا المرشِد، من فضلك أخبرنا<a class='enigmailLink'><html:a href='mailto:enigmail@mozdev.org'>عبر البريد</html:a></a>. <html:br/><html:br/> يبدأ هذا المرشِد فقط في أول مرّة تُثبِّت Enigmail. لن يُعرض ثانية ولا يُمكن استدعاؤه من القائمة. <html:br/><html:br/> شكرا لاختيارك Enigmail OpenPGP!">
+<!ENTITY enigmail.setupWiz.pgWelcome.startNow "أترغب في استخدام هذا المرشِد الآن؟">
+<!ENTITY enigmail.setupWiz.pgWelcome.yes "نعم، أرغب أن يبدأ معي المرشِد">
+<!ENTITY enigmail.setupWiz.pgWelcome.no "لا، شكرا. أُفضِّل الإعداد يدويًا">
+<!ENTITY enigmail.setupWiz.pgSelectId.title "اختر هوية">
+<!ENTITY enigmail.setupWiz.pgSelectId.subtitle "اختر الحساب أو الهوية التي ترغب أن يعمل OpenPGP معها">
+<!ENTITY enigmail.setupWiz.pgSelectId.desc "إعدادات OpenPGP خاصة بالحسابات أو الهويات. بدئيا سيقوم OpenPGP بإعداد نفسه ليعمل مع كل حساباتك وهوياتك. إذا لم يكن هذا ما تريده فاختر الهوية أو الحساب المحدد الذي تريد أن يعمل معه OpenPGP مما أدناه.">
+<!ENTITY enigmail.setupWiz.pgSelectId.allIds "أرغب بضبط OpenPGP لكل الهويات">
+<!ENTITY enigmail.setupWiz.pgSelectId.selectIds "أرغب بضبط OpenPGP لهذه الهويات فقط:">
+<!ENTITY enigmail.setupWiz.pgSelectId.note "<a class='enigmailStrong'>لاحظ:</a> سيقوم OpenPGP دائما بالتحقق من التوقيعات على البريد لكل حساب أو هوية، بغض النظر عن تفعيلها من عدمه">
+<!ENTITY enigmail.setupWiz.pgSign.title "التّوقيع">
+<!ENTITY enigmail.setupWiz.pgSign.subtitle "وقّع رقميا رسائلك الصادرة">
+<!ENTITY enigmail.setupWiz.pgSign.desc "يُمكّنك OpenPGP من توقيع مراسلاتك رقميا. هذا هو المقابل الرقمي لتوقيع خطاب باليد، ويُمكِّن المتلقين من الاطمئنان إلى أنك حقا المرسل. من المحبذ أمنيا أن توقع مراسلاتك الصادرة. <html:br/><html:br/> للتحقق من البريد الموقع رقميا يحتاج المتلقي إلى استخدام برمجية بريد داعمة لبروتوكول OpenPGP، فإن لم يكن لديهم هذا فسيظل بوسعهم قراءة الرسالة لكن سيظهر التوقيع كمُرفق أو كنص في متن الرسالة. قد يزعج هذا البعض لأنهم لا يعرفون ما هو، لذا فعليك تحديد إذا ما كنت تريد توقيع كل البريد الصادر أو تفادي إرسال بريد مُوقّع لبعض الأشخاص.">
+<!ENTITY enigmail.setupWiz.pgSign.signAllMsg "أتريد توقيع كل البريد الصدر بدئيا؟">
+<!ENTITY enigmail.setupWiz.pgSign.yesSign "نعم، أرغب في توقيع كل مراسلاتي">
+<!ENTITY enigmail.setupWiz.pgSign.noSign "لا، أريد إنشاء قواعد حسب كل مستلم للبريد الذي يحتاج لتوقيع">
+<!ENTITY enigmail.setupWiz.pgEnc.title "التعمية">
+<!ENTITY enigmail.setupWiz.pgEnc.subtitle "عمِّ بريدك الصادر">
+<!ENTITY enigmail.setupWiz.pgEnc.desc "يُمكنك OpenPGP من تعمية رسائل البريد والمرفقات. يُشبه هذا وضع خطاب في مظروف يحمي خصوصية التراسل. ليس فقط للرسائل "السرية"، بل كذلك لكل شيء لم تكن لترسله على بطاقة بريدية. <html:br/><html:br/> على المستوى التقني تعمل التعمية كقفل لا يملك مفتاحه سوى المستلم. على عكس التوقيع، فلاستخدام التعمية سيكون على كل مستلمي البريد استعمال OpenPGP لقراءة الرسالة. ينبغي للآخرين اعطاءك مفاتيحهم العلنية قبل أن ترسل لهم بريدا معمّى (المفتاح العلني هو القفل الذي ذكرناه للتو). <html:br/><html:br/> ما لم يكن لدى أغلب مراسليك مفاتيح علنية فيفضل ألا تُغعِّل التعمية بدئيا، وأن تعمي حسب الحاجة">
+<!ENTITY enigmail.setupWiz.pgEnc.encryptAllMsg "أيجب تعمية بريدك الصادر بدئيا؟">
+<!ENTITY enigmail.setupWiz.pgEnc.yesEncrypt "نعم، لديّ مفاتيح علنية لمُعظم معارفي">
+<!ENTITY enigmail.setupWiz.pgEnc.noEncrypt "لا، سولّد قواعد حسب كل مستلم لمن أرسلوا لي مفاتيحهم العلنية">
+<!ENTITY enigmail.setupWiz.pgSettings.title "التفضيلات">
+<!ENTITY enigmail.setupWiz.pgSettings.subtitle "عدِّل إعدادات بريدك لتجعل OpenPGP يعمل بوثوقية أكبر">
+<!ENTITY enigmail.setupWiz.pgSettings.desc "سيقوم هذا المرشِد بتغيير إعدادات بريدك للتأكد من عدم حدوث مشاكل عند توقيع وتعمية البريد على حاسوبك. أغلب التغييرات أشياء تقنية لا تلحظها إلا أن أحد أهمها هو أن البريد سيُحرر كنص صرف ابتداء.">
+<!ENTITY enigmail.setupWiz.pgSettings.changePref "أتريد تغيير بعض الإعدادات البدئية لتجعل OpenPGP يعمل أفضل على جهازك؟">
+<!ENTITY enigmail.setupWiz.pgSettings.details "التفاصيل ...">
+<!ENTITY enigmail.setupWiz.pgKeySel.title "اختيار المفتاح">
+<!ENTITY enigmail.setupWiz.pgKeySel.subtitle "ولّد مفتاحا لتوقيع وتعمية البريد">
+<!ENTITY enigmail.setupWiz.pgKeySel.desc "لقد تحسسنا أنك لديك مفتاح OpenPGP بالفعل. يمكنك استخدام أحد المفاتيح الموجودة لتوقيع أو تعمية أو تظهير البريد، أو يمكنك إنشاء زوج مفاتيح جديد.">
+<!ENTITY enigmail.setupWiz.pgKeySel.createKey "أتريد إنشاء زوج مفاتيح جديد؟">
+<!ENTITY enigmail.setupWiz.pgKeySel.newKey "أريد إنشاء زوج مفاتيح جديد لتوقيع وتعمية مراسلاتي">
+<!ENTITY enigmail.setupWiz.pgKeySel.useExistingKey "أريد اختيار أحد المفاتيح أدناه لتوقيع وتعمية بريدي:">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.title "ولّد مفتاحا">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.subtitle "ولّد مفتاحا لتوقيع وتعمية البريد">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc1 "تحتاج إلى 'زوج مفاتيح' لتوقيع وتعمية البريد، أو لقراءة البريد المُعمّى. أحد المفتاحين علني والآخر سري.">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc2 "ينبغي لك إعطاء مفتاحك العلني لكل شخص من معارفك يحتاج للتحقق من توقيعك أو تعمية البريد لك. بينما تحتاج لإبقاء مفتاحك السري سريًا. يجب ألا تعطيه لأحد أو تتركه غير محمي. لأن حائزه يمكنه قراءة كل البريد المعمى الذي يرسله الآخرون إليك، كما يمكنه توقيع مراسلات باسمك. المفتاح السري محمي بعبارة سر.">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.passRepeat "من فضلك أكد كلمة السر بإعادة إدخالها">
+<!ENTITY enigmail.setupWiz.pgSummary.title "الملخّص">
+<!ENTITY enigmail.setupWiz.pgSummary.subtitle "صرّح للمرشِد بإحداث هذه التغييرات">
+<!ENTITY enigmail.setupWiz.pgSummary.desc "انتهنا تقريبا! إذا نقرت على زر 'التالي' سيقوم المرشِد بهذه الإجراءات:">
+<!ENTITY enigmail.setupWiz.pgKeygen.title "توليد المفتاح">
+<!ENTITY enigmail.setupWiz.pgKeygen.subtitle "يجري توليد زوج مفاتيحك الآن">
+<!ENTITY enigmail.setupWiz.pgComplete.title "شكرا لك">
+<!ENTITY enigmail.setupWiz.pgComplete.desc "OpenPGP جاهز للاستخدام الآن.<html:br/><html:br/>شكرًا لاستخدامك Enigmail.">
+<!ENTITY enigmail.setupWiz.details.title "التفضيلات">
+<!ENTITY enigmail.setupWiz.details.subtitle "عدِّل إعدادات التطبيق">
+<!ENTITY enigmail.setupWiz.details.imapOnDemand "عطِّل التحميل التصاعدي لأجزاء IMAP">
+<!ENTITY enigmail.setupWiz.details.changingPrefs "التفضيلات التالية عدّلها المرشِد:">
+<!ENTITY enigmail.setupWiz.details.noFlowedMsg "عطِّل النص المنساب (RFC 2646)">
+<!ENTITY enigmail.setupWiz.details.viewAsPlain "اعرض متن الرسالة كنص صِرف">
+<!ENTITY enigmail.setupWiz.details.8bitEncoding "استخدم ترميز 8-بتة لإرسال الرسالة">
+<!ENTITY enigmail.setupWiz.details.noComposeHTML "لا تحرر رسائل HTML">
+<!ENTITY enigmail.setupWiz.pgNoStart.title "اصرف المرشِد">
+<!ENTITY enigmail.setupWiz.pgNoStart.desc "لقد اخترت ألا تستخدم المرشد لإعداد OpenPGP. <html:br/><html:br/> شكرا لاستخدامك Enigmail.">
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/enigmail.properties
^
|
@@ -0,0 +1,432 @@
+Enigmail=Enigmail
+
+# Strings used within enigmailCommon.js
+
+enigAlert=تنبيه OpenPGP
+enigConfirm=تأكيد OpenPGP
+enigError=عطل OpenPGP
+enigPrompt=محث OpenPGP
+
+dlgYes=نعم
+dlgNo=لا
+dlgNever=لا تسألني ثانيا
+dlgKeepSetting=تذكر إجابتي ولا تسألني ثانيا
+dlgNoPrompt=لا ترني هذا الحوار ثانيا
+
+configNow=أتريد إعداد Enigmail للإصدارة %S الآن؟
+configEnigmail=إعداد Enigmail؟
+
+repeatPrefix=\n\nسيتكرر هذا التنبيه %S
+repeatSuffixSingular=مرة أخرى.
+repeatSuffixPlural=مرات أخرى.
+noRepeat=\n\nلن يتكرر هذا التنبيه حتى تقوم بتحديث Enigmail.
+
+noLogDir=من فضلك اضبط خيار التنقيح 'دليل السجل' لإنشاء ملف سجل
+noLogFile=لم يُنشأ ملف السجل بعد!
+restartForLog=من فضلك أعد تشغيل البرمجية لإنشاء ملف سجل
+pgpNotSupported=يبدو أنك تستخدم OpenPGP مع PGP 6.x\n\nللأسف، PGP 6.x به بعض الأمر التي تمنع Enigmail من العمل جيدا. لذا لم يعد Enigmail يدعم PGP 6.x، من فضلك انتقل إلى GnuPG (GPG) كبديل.\n\nإذا احتجت للمساعدة حول الانتقال إلى GnuPG، راجع قسم المساعدة في موقع Enigmail.
+avoidInitErr=لتتفادى هذا التنتبيه دائما، أصلح المشكلة أو أزل Enigmail مستخدما قائمة OpenPGP->تفضيلات
+passphraseCleared=لم تُمح كلمة السر
+keyGeneration=توليد مفتاح OpenPGP
+noPhotoAvailable=لا توجد صور
+
+# Strings in enigmailAbout.js
+usingVersion=يُشغل Enigmail إصدارة %S
+versionWarning=تحذير: إصدارة Enigmime غير متطابقة %S
+enigmimeWarning=تحذير: لم يُعثر على وحدة Enigmime
+
+usingAgent=يستخدم %S التنفيذي %S للتعمية والتظهير
+agentError=عطل: فشلت في النفاذ إلى خدمة Enigmime
+
+# Strings in enigmailKeygen.js
+accessError=عطل أثناء النفاذ لخدمة Enigmime
+onlyGPG=يعمل توليد المفاتيح فقط مع GnuPG (وليس PGP)!
+
+keygenComplete=اكتمل توليد المفتاح! ستُستخدم الهوية <%S> للتوقيع.
+revokeCertRecommended=ننصح بشدة أن تنشئ شهادة نقض لمفتاحك. لتستخدم هذه لشهادة لإبطال مفتاحك، مثلا في حال ضياع المفتاح السري أو انكشافه. أتريد إنشاءها الآن؟
+genCompleteNoSign=تم توليد المفتاح!
+genGoing=توليد المفتاح جار بالفعل!
+
+passNoMatch=عبارتا السر لا تتطابقا، أعد الإدخال من فضلك
+passCheckBox=من فضلك أشّر هذا إن كنت لن تضع عبارة سر للمفتاح (غير محبذ)
+passUserName=من فضلك حدد اسم المستخدم لهذه الهوية
+passCharProblem=يبدو أنك تستخدم بعض المحارف الخاصة في كلمة السر. للأسف، قد يسبب هذا بعض المشاكل للتطبيقات الأخرى. من فضلك اختر عبارة سر تتألف من أي من هذه المحارف:\na-z A-Z 0-9 /.;:-,!?(){}[]%*
+changePassFailed=فشل تغيير كلمة السر.
+removePassphrase=أتريد حذف كلمة السر الحالية دون ضبط أخرى؟
+
+keyConfirm=أأولد مفاتحين لأجل '%S'؟
+keyAbort=أأجهض توليد المفتاح؟
+expiryTooLong=لا يمكنك إنشاء مفتاح تنتهي صلاحيته بعد أكثر من 100 عام.
+expiryTooShort=يجب أن يكون المفتاح صالحا ليوم واحد على الأقل.
+keyGenFailed=فشل توليد المفتاح. من فضلك راجع مرقاب OpenPGP (قائمة OpenPGP > تنقيح OpenPGP) لمزيد من التفاصيل.
+keyGenNoPassphrase=بلا كلمة سر
+
+# Strings in enigmailMessengerOverlay.js
+pubKeyNeeded=تحتاج للمفتاح العلني لتتمكن من التحقق من التوقيع.
+keyImport=\n\nأتريد استيراد المفتاح العلني %S من خادوم المفاتيح؟
+keyImportError=تعذر جلب المفتاح العلني\n\n
+securityInfo=معلومات خصوصية OpenPGP\n\n
+
+enigHeader=Enigmail:
+enigNote=ملحوظة من OpenPGP: مرفقات هذه الرسالة لم تُوقّع أو تُعمّى.
+enigContentNote=OpenPGP: *مرفقات هذه الرسالة لم تُوقّع أو تُعمّى*\r\n\r\n
+possiblyPgpMime=قد تكون رسالة PGP/MIME معماة أو موقّعة؛ انقر 'ظهِّر' للتأكد
+
+noDecrypted=لا توجد رسائل مُظهَّرة لتُحفظ!\nاستخدم أمر 'احفظ' من قائمة ملف
+noMessage=لا رسائل لتُحفظ!
+useButton=من فضلك انقر زر 'ظهِّر' لتظهير الرسالة
+saveHeader=OpenPGP: احفظ الرسالة المُظهَّرة
+saveAttachmentHeader=OpenPGP: احفظ المرفقة المُظهَّرة
+noTempDir=تعذّر العثور على دليل مؤقت للكتابه فيه\nمن فضلك اضبط متغير البيئة TEMP
+attachmentPgpKey=المرفقة '%S' الذي تفتحها تبدو كملف مفاتيح OpenPGP.\n\nانقر 'نعم' لتصدير المفاتيح التي تحتويها أو 'لا' لعرض محتويات الملف في نافذة المتصفح
+
+beginPgpPart=********* *بداية الجزء المعمى أو الموقّع* *********
+endPgpPart=********* *نهاية الجزء المعمى أو الموقّع* *********
+notePartEncrypted=OpenPGP: *تحوي هذه الرسالة أجزاءً لم تُوقّع أو تُعمّى*
+noteCutMessage=OpenPGP: *توجد عدة كتل رسائل -- أُجهض التظهير/التحقق*
+
+decryptOkNoSig=تحذير\n\nكان التظهير ناجحا، لكن تعذر التحقق من التوقيع بشكل صحيح
+contAnyway=أترغب في الاستمرار على أي حال؟
+noPgpMessage=الرسالة ليست مُوقّعة أو معمّاة باستخدام OpenPGP
+
+# Strings in enigmailMsgComposeOverlay.js
+keysToExport=اختر مفتاح OpenPGP لإدراجه
+keysToUse=اختر مفتاح OpenPGP لاستخدامه لأجل %S
+pubKey=مفتاح %S العلني\n
+
+windowLocked=نافذة التحرير مُقفلة؛ أُلغِي الإرسال
+sendUnencrypted=فشل بدء Enigmail.\nأأرسل رسالة غير مُعمّاة؟
+composeSpecifyEmail=من فضلك حدد عنوان بريدك الأساسي الذي سيُستخدم لاختيار مفتاح توقيع الرسائل الصادرة.\n إذا تركته خاويا فسيستخدم عنوان حقل 'مِن' في الرسالة لاختيار مفتاح التوقيع.
+sendingBCC=لهذه الرسالة مستلمين لنسخ عمياء (BCC). إن عُمِّيت هذه الرسالة سيكون بوسع كل المُستلمين تحديد هوية المستلمين الآخرين بفحص قائمة مفاتيح التعمية، مما يضيع السرِّية. \n\nانقر 'نعم' لتواصل التعمية على أي حال، أو 'لا' لإجهاض الإرسال.
+sendingNews=أُجهِضت عمليّة الإرسال المُعمّى.\n\nلا يمكن تعمية هذه الرسالة لوجود مجموعات بريدية ضمن المستلمين. من فضلك أعد إرسال الرسالة بدون تعمية.
+noPGPMIME=PGP/MIME غير متاح!\nأأستخدم PGP في المتن للتوقيع/التعمية؟
+hasHTML=تحذير بريد HTML:\nربما تحتوي هذه الرسالة على رَقْم HTML، مما قد يتسبب في فشل التوقيع/التعمية. لتتفادى هذا في المستقبل، يجب أن تضغط زر SHIFT أثناء النقر على زر حرر/رُد لإرسال بريد مُوقّع.\nإذا كنت توقع البريد بدئيا، يستحسن أن تلغي تفضيل 'حرر رسائل HTML' لتعطيل بريد HTML بشكل دائم لحساب البريد هذا.
+strippingHTML=تحتوي الرسالة على معلومات تنسيق HTML ستُفقد عند تحويلها إلى نص صِرف لتوقيعه/تعميته. أترغب في المتابعة؟
+attachWarning=مرفقات هذه الرسالة ليست محلِّية لذا لا يُمكن تعميتها. لتعمية المرفقات احفظها كملفات محلية أولا ثم أرفق هذه الملفات. أترغب في المتابعة على أي حال؟
+savingMessage=أتريد تعمية الرسالة قبل حفظها؟
+quotedPrintableWarn=لقد فعّلت ترميز 'quoted-printable' للإرسال. قد ينتج عن هذا تظهير و/أو تحقق خاطئ لرسائلك.\nأترغب في تعطيل الإرسال بترميز 'quoted-printable' الآن؟
+minimalLineWrapping=لقد ضبطت طول السطر على %S حرف. لتعمية و/أو توقيع سليمين، ينبغي لهذه القيمة أن تكون 68 على الأقل.\nأتريد تغيير طول السطر إلى 68 حرفا الآن؟
+warning=تحذير
+signIconClicked=لقد قمت يدويا بتغيير تفعيل التوقيع. لذا ففيما يتعلق بهذه الرسالة فإن تفعيل/تعطيل التوقيع لم يعد يعتمد على تفعيل/تعطيل التعمية.
+
+sendAborted=أُجهِضت عملية الإرسال.\n\n
+
+statPGPMIME=PGP/MIME
+statSigned=مُوقّع
+statEncrypted=مُعمّى
+statPlain=نص صريح
+
+offlineSave=أأحفظ الرسالة %S إلى %S في مجلد الرسائل غير المرسلة؟
+
+onlineSend=أأرسل الرسالة %S إلى %S؟
+offlineNote=لا يوجد اتصال حاليا. أتريد حفظ الرسالة في مجلّد الرسائل غير المُرسلة؟
+encryptKeysNote=ملحوظة: لقد عُمّيت الرسالة باستخدام هويات/مفاتيح المستخدمين التالية: %S
+
+signFailed=عطل في OpenPGP؛ فشلت التعمية/التوقيع؛ أأرسل الرسالة غير مُعمّاة؟
+acctNotConfigured=لم تضبط هذه الهوية باستخدام خصوصية OpenPGP.\nأأرسل رسالة غير مُعمّاة؟
+recipientsSelectionHdr=اختر المستلمين للتعمية
+
+configureNow=لم تضبط خصوصية OpenPGP للهوية المختارة. أترغب في فعل هذا الآن؟
+
+signYes=ستُوقّع الرسالة
+signNo=لن تُوقّع الرسالة
+encryptYes=ستُعمّى الرسالة
+encryptNo=لن تُعمّى الرسالة
+rulesConflict=وُجِدت قواعد مستلمين متعارضة\n%S\n\nأأرسل الرسالة بهذه الإعدادات؟
+
+# Strings in enigmailMsgHdrViewOverlay.js
+keyNeeded=المفتاح العلني %S مطلوب للتحقق من التوقيع
+clickDecrypt='؛ انقر زر 'ظهِّر
+clickDecryptRetry=؛ انقر زر 'ظهِّر' لتعيد المحاولة
+clickPen=؛ انقر أيقونة القلم
+clickPenDetails=؛ انقر أيقونة القلم للتفاصيل
+clickQueryPenDetails=؛ انقر أيقونة القلم للتفاصيل
+clickKey=؛ انقر أيقونة المفتاح
+clickQueryKeyDetails=؛ انقر أيقونة المفتاح للتفاصيل
+clickKeyDetails=؛ انقر أيقونة المفتاح للتفاصيل
+clickPenKeyDetails=؛ انقر أيقونة القلم أو المفتاح للتفاصيل
+msgPart=جزة من الرسالة %S
+msgSigned=مُوقّعة
+msgEncrypted=مُعمّاة
+msgSignedAndEnc=مُوقّعة و مُعمّاة
+
+reloadImapMessage=أأعيد تحميل رسالة IMAP كاملة لتظهيرها/التحقق منها؟
+reloadImapError=عُطل - رسالة IMAP أكبر من أن تُظهَّر/يُتحقق منها
+
+unverifiedSig=توقيع غير مُحقق
+incompleteDecrypt=التظهير ناقص
+failedSig=عُطل - فشل التحقق من التوقيع
+needKey=عُطل - بحاجة لمفتاح سري لتعمية الرسالة
+failedDecrypt=عُطل - فشل التظهير
+badPhrase=عُطل - عبارة سر غير صحيحة
+failedDecryptVerify=عُطل - فشل التظهير/التحقق
+viewInfo=؛ اعرض > معلومات خصوصية الرسالة للتفاصيل
+
+decryptedMsg=ظهِّر الرسالة
+
+# Strings in enigmailNavigatorOverlay.js
+navEncryptError=خطأ أثناء تعمية و/أو توقيع الرسالة.\n
+navDecryptError=خطأ أثناء تعمية الرسالة.\n
+
+# Strings in pref-enigmail.js
+uninstallConfirm=أترغب في حذف كل الملفات التي تخص OpenPGP في مجلدات موزيلا component و chrome؟
+uninstallFailOverlay=فشلت إزالة OpenPGP communicator overlay RDF؛ لن أحذف ملف chrome jar
+uninstallFailDelete=خطأ أثناء حذف الملف
+uninstallFail=فشلت إزالة Enigmail
+uninstallSuccess=تمت إزالة Enigmail
+testNoSvc=EnigTest: فشل النفاذ إلى خدمة Enigmail
+testNoEmail=EnigTest: من فضلك حدد عنوان بريد للاختبار
+testSucceeded=يعمل OpenPGP الآن بشكل سليم. للتفاصيل، راجع المرقاب من قائمة OpenPGP
+oldGpgVersion=فشل استبداء OpenPGP.\n\nتستخدمُ OpenPGP إصدارة %S، و هي إصدارة متقادمة. يحتاج Enigmail إلى GnuPG إصدارة 1.2.5 أو أحدث؛ من فضلك حدِّث GnuPG وإلا لن يعمل OpenPGP.
+locateGpg=حدد موضع برمجية GnuPG
+invalidGpgPath=لا يُمكن تنفيذ GnuPG من المسار المُعطى. لذا سيُعطّل OpenPGP حتى تُغيّر المسار إلى GnuPG أو تُعيد تشغيل التطبيق.
+warningsAreReset=تم تصفير كل التحذيرات.
+prefs.gpgFound=وُجِد GnuPG في %S
+prefs.gpgNotFound=لم يُعثر على GnuPG
+prefs.warnAskNever=تحذير: تفعيل هذا الخيار سيؤدي إلى إرسال بغير تعمية دون أي تنويهات إذا لم يوجد مفتاح لأحد المُستلمين -- لن يُنبهك OpenPGP عند حدوث ذلك!
+
+# Strings used in components/enigmail.js
+# (said file also re-uses some strings from above)
+
+enterPass=أدخل عبارة سر OpenPGP
+enterPassOrPin=أدخل عبارة سر OpenPGP أو PIN بطاقتك الذكية (SmartCard)
+repeatPass=كرر عبارة سر OpenPGP
+rememberPass=تذكر لمدة %S دقائق من السكون
+enterAdminPin=من فضلك أدخل PIN المدير لبطاقتك الذكية (SmartCard)
+enterCardPin=من فضلك أدخل PIN بطاقتك الذكية (SmartCard)
+
+notInit=عُطل - لم تستبدأ خدمة Enigmail بعد
+badCommand=عُطل - فشل أمر التعمية
+cmdLine=خرج سطر الأوامر:
+notRequired=عُطل - لا تعمية مطلوبة
+notComplete=عُطل - لم يتم توليد المفتاح
+invalidEmail=عُطل - عنوان بريد غير صحيح
+noPassphrase=عُطل - لم تدخل أية عبارة سر
+noPGPblock=عُطل - لم يُعثر على أي كتل بيانات OpenPGP مدرّع
+unverifiedReply=جزء الرسالة المزاح (الرد) قد تغيير على الأغلب
+decryptToImport=انقر زر 'ظهِّر' لتستورد كتلة المفتاح العلني من الرسالة
+sigMismatch=عُطل - توقيع غير صحيح
+cantImport=خطأ في استيراد المفتاح العلني\n\n
+messageSizeError=الرسالة أكبر من يُتحقق منها
+sc.noCardAvailable=لم يُعثر على بطاقة ذكية في القارئ\nأدخل بطاقتك الذكية ثم أعد العملية
+sc.noReaderAvailable=لا يمكن الوصول إلى قارئ البطاقات الذكية\nأوصل قارئ البطاقات الذكية ثم أدخل بطاقتك ثم أعد العملية
+
+gpgNotFound=تعذر تحديد موضع برمجية GnuPG '%S'.\nتأكد أنك ضبطت مسار ملف GnuPG التنفيذي صحيحا في تفضيلات OpenPGP
+gpgNotInPath=تعذر تحديد موضع برمجية GnuPG في المسار (PATH).\nتأكد أنك ضبطت مسار ملف GnuPG التنفيذي صحيحا في تفضيلات OpenPGP
+enigmimeNotAvail=خدمة Enigmime غير موجودة
+gpgAgentNotStarted=تعذر بدأ برمجية gpg-agent وهو ضروري لإصدارة %S من GnuPG.
+
+prefUntrusted=غير موثوق
+prefRevoked=مفتاح منقوض
+prefExpiredKey=مفتاح منتهي
+prefExpired=منتهي
+prefGood=توقيع صحيح من %S
+prefBad=توقيع غير صحيح من %S
+
+failFingerprint=عُطل - فشل أمر استخراج البصمة
+failMultiple=عُطل - توجدت مفاتيح عديدة تخص %S
+failNoKey=عُطل - لم يُعثر على مفاتيح تخص %S
+failOnlyGPG=عُطل - فقط GnuPG يمكنه جلب مفاتيح من خادوم المفاتيح
+failCancel=عُطل - ألغى المستخدم جلب المفتاح
+failNoServer=عُطل - لم تحدد خادوم مفاتيح لجلب المفاتيح منه
+failNoID=عُطل - لم تحدد هوية لجلب مفتاح لها
+failKeyExtract=عُطل - فشل أمر استخراج المفتاح
+notFirstBlock=عُطل - أول كتلة OpenPGP ليست كتلة مفتاح علني
+importKeyConfirm=أأستورد المفاتيح العلنية المضمنة في الرسالة؟
+failKeyImport=عُطل - فشل استيراد المفتاح
+fileWriteFailed=فشلت الكتابة في الملف %S
+
+successKeyImport=تم استيراد مفتاح/مفاتيح بنجاح
+
+importKey=استورد المفتاح العلني %S من خادوم المفاتيح
+uploadKey=أرسل المفتاح العلني %S إلى الخادوم
+keyId=هويّة المفتاح
+keyAndSigDate=معرِّف المفتاح: 0x%S / مُوقع في: %S
+keyFpr=بصمة المفتاح: %S
+photoFor=هوية OpenPGP صُوّرة %S
+noEmailProvided=لم تُعط عنوان بريد!
+invalidRecp=مستلمون غير صحيحون: %S
+
+# Strings used in enigmailUserSelection.js
+selKeyExpired=انتهى %S
+createdHeader=تاريخ الإنشاء
+keyInvalid=مفتاح غير صحيح
+keyDisabled=مفتاح مُعطّل
+atLeastOneKey=لم تختر أي مفاتيح! ينبغي اختيار مفتاح واحد على الأقل لقبول هذا الحوار
+
+# Strings used in enigmailAttachmentDialog.js
+pgpMimeNote=ملحوظة: برمجيات بريد قليلة تدعم PGP/MIME. على ويندوز فقط موزيلا/ثندربيرد و Sylpheed و Pegasus و Mulberry معروف دعمها لهذا المعيار؛ على لينكس/يونكس و ماك أوإس إكس أغلب البرمجيات المشهورة تدعمه. إذا لم تكن متأكدا اختر %S.
+first=الأوّل
+second=الثّاني
+
+# Strings used in am-enigprefs.js
+encryptKeyHeader=اختر مفتاح OpenPGP للتعمية
+identityName=الهوية: %S
+
+# Strings used in enigmailSingleRcptSettings.js
+noEncryption=لقد فعّلت التعمية لكنك لم تختر مفتاحا. لتعمي الرسائل إلى %S ينبغي لك تحديد مفتاح سليم أو أكثر من قائمة المفاتيح. أترغب في تعطيل التعمية إلى %S؟
+noKeyToUse=(لا شيء - لا تعمية)
+noEmptyRule=لا يمكن أن تكون القاعدة خاوية! من فضلك ضع عنوان بريد في حقل القاعدة.
+invalidAddress=عناوين البريد التي أدخلتها ليست سليمة. يجب ألا تضع أسماء المستلمين؛ فقط عناوين البريد. مثلا:\nغير سليم: اسم ما <some.name@address.net>\nسليم : some.name@address.net
+noCurlyBrackets=الأقواس المعقوفة {} لها معنى خاص و يجب ألا تستخدم في عناوين البريد. إذا أردت تغيير سلوك المطابقة لهذه القاعدة فاستخدم خيار 'طبق القاعدة إن كان المستلم...'.\nالمزيد من المعلومات متوفر عبر زر المساعدة.
+
+# Strings used in enigmailRulesEditor.js
+never=أبدًا
+always=دائمًا
+possible=ممكن
+deleteRule=أأحذف القاعدة المختارة حقا؟
+nextRcpt=(المستلم التالي)
+negateRule=ليس
+
+# Strings used in enigmailSearchKey.js
+needOnline=الخاصية التي اخترتها غير متاحة في طور عدم الاتصال. من فضلك تحول إلى طور الاتصال وحاول مجددا.
+protocolNotSupported=البروتوكول '%S://' الذي اخترته غير مدعوم لجلب مفاتيح OpenPGP.
+gpgkeysDisabled=قد يُساعدك تفعيل الخيار 'extensions.enigmail.useGpgKeysTool'.
+noKeyserverConn=تعذّر الاتصال بخادوم المفاتيح %S.
+keyDownloadFailed=فشل الجلب من خادوم المفاتيح. رسالة الحالة هي:\n%S
+internalError=حدث عطل داخلي. تعذّر جلب المفاتيح أو استيرادها.
+noKeyFound=لم أعثر على أي مفاتيح تتطابق معايير البحث.\nلاحظ أن هويات المفاتيح يجب أن تُسبق ب "0x" (مثلا: 0xABCDEF12).
+
+# gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc.
+gpgKeysFailed=فشل البحث عن أو جلب المفتاح من خادوم المفاتيح: لا يُمكن تنفيذ gpgkeys_%S.
+
+
+# Strings in enigmailEditKeyTrustDlg.xul
+setKeyTrustFailed=فشل ضبط الثقة في المالك
+setKeyTrustOK=تم ضبط الثقة في المالك بنجاح
+
+# Strings in enigmailSignKeyDlg.xul
+signKeyFailed=فشل توقيع المفتاح
+signKeyOK=تم توقيع المفتاح بنجاح
+undefinedError=حدث عطل غير مُعرّف.
+keyAlreadySigned=المفتاح مُوقّع بالفعل، لا يمكنك توقيعه مرتين.
+noSignKeyExpired=المفتاح انتهت صلاحيته. يمكنك فقط توقيع المفاتيح التي ما تزال صالحة.
+
+
+# Strings in enigmailKeyManager.js
+keyMan.loadingKeys=يُحمِّل المفاتيح، من فضلك انتظر...
+keyValid.unknown=مجهول
+keyValid.invalid=غير صحيح
+keyValid.disabled=معطّل
+keyValid.revoked=منقوض
+keyValid.expired=انتهت صلاحيته
+keyValid.noSubkey=لا مفتاح فرعي صالح
+
+keyTrust.untrusted=منعدمة
+keyTrust.marginal=هامشية
+keyTrust.full=تامة
+keyTrust.ultimate=مطلقة
+keyType.public=علني
+keyType.publicAndSec=علني/سري
+keyMan.enableKey=فعّل المفتاح
+keyMan.disableKey=عطّل المفتاح
+userAtt.photo=خصيصة المستخدم (صورة JPEG)
+
+asciiArmorFile=ملفات أسكي (ASCII) مُدرّعة (*.asc)
+gnupgFile=ملفات GnuPG
+saveRevokeCertAs=أنشئ واحفظ شهادة نقض
+revokeCertOK=أُنشأت شهادة النقض بنجاح. يمكن استخدامها لإبطال مفتاحك العلني، مثلا في حال فقدت المفتاح السري.\n\nمن فضلك انقلها إلى وسيط يُمكن حفظه بعيدا بأمان كقرص مدمج أو مرن. إذا حاز أحدهم هذه الشهادة سيكون بإمكانه استخدامها لجعل مفتاحك غير ذي فائدة.
+revokeCertFailed=تعذّر إنشاء شهادة النقض.
+
+addUidOK=تمت إضافة هوية المستخدم بنجاح
+addUidFailed=فشلت إضافة هوية المستخدم
+noKeySelected=يجب أن تختار مفتاحا واحدا على الأقل لإجراء العملية المطلوبة
+exportToFile=صدّر المفتاح العلني إلى ملف
+exportSecretKey=أتريد تضمين المفتاح السري في ملف مفتاح OpenPGP المحفوظ؟
+saveKeysOK=تم حفظ المفاتيح بنجاح
+saveKeysFailed=فشل حفظ المفاتيح
+importKeysFailed=فشل استيراد المفاتيح
+enableKeyFailed=فشل تفعيل/تعطيل المفاتيح
+specificPubKeyFilename=%S (0x%S) pub
+specificPubSecKeyFilename=%S (0x%S) pub-sec
+defaultPubKeyFilename=Exported-public-keys
+defaultPubSecKeyFilename=Exported-public-and-secret-keys
+noSecretKeys=لم يُعثر على مفاتيح سرية.\n\nأتريد توليد مفتاحك الآن؟
+
+sendKeysOk=تم إرسال المفاتيح بنجاح
+sendKeysFailed=فشل إرسال المفاتيح
+receiveKeysOk=تم تحديث المفاتيح بنجاح
+receiveKeysFailed=فشل جلب المفاتيح
+
+importFromClip=أتريد استيراد المفاتيح من الحافظة؟
+copyToClipbrdFailed=تعذر نسخ المفاتيح المختارة إلى الحافظة.
+copyToClipbrdOK=تم نسخ المفاتيح إلى الحافظة
+
+deleteSecretKey=تحذير: أنت بصدد حذف مفتاح سري!\nإذا حذفت مفتاحك السري فلن يعود بوسعك تظهير أية رسالة عُمِّيت لهذا المفتاح، و لن تستطيع نقض المفتاح كذلك.\n\nأترغب حقا في حذف كلا المفتاحين السري و العلني\n'%S'؟
+deleteMix=تحذير: أنت بصدد حذف مفتاح سري!\nإذا حذفت مفتاحك السري فلن يعود بوسعك تظهير أية رسالة عُمِّيت لهذا المفتاح، ولن تستطيع نقض المفتاح كذلك.\n\nأترغب حقا في حذف كلا المفتاحين السري والعلني؟
+deletePubKey=أتريد حذف المفتاح العلني\n'%S'؟
+deleteSelectedPubKey=أتريد حذف المفاتيح العلنية؟
+deleteKeyOk=تم حذف المفتاح بنجاح
+deleteKeyFailed=تعذّر حذف المفتاح.
+revokeKeyAsk=تُنشئ و تستورد هذه الخاصية شهادة نقض. أتريد حقا نقض المفتاح '%S'؟
+revokeKeyOk=لقد تم نقض هذا المفتاح. إذا كان مفتاحك على خادوم مفاتيح فيُفضّل أن تعيد رفعه ليرى الآخرون النقض.
+revokeKeyFailed=تعذّر نقض المفتاح.
+uploadingKey=يجري رفع المفاتيح...
+downloadingKey=يجري جلب المفاتيح...
+keyserverAccessAborted=أُجهِض
+refreshAllQuestion=لم تختر أي مفتاح. أتريد تحديث كل المفاتيح؟
+refreshKey.warn=تحذير: طبقا لعدد المفاتيح وسرعة الاتصال فقد يستغرق تحديث كل المفاتيح وقتا طويلا نوعا ما\nأأتابع؟
+
+# Strings in enigmailViewKeySigDlg.xul
+keySignatureLocal=محلي
+keySignatureExportable=قابل للتصدير
+keySignatureNoKey=لا مفتاح
+userIdNotFound=(لم يُعثر على هوية المستخدم)
+retrieveKeyConfirm=المفتاح غير متوجود - أتريد جلبه من خادوم المفاتيح؟
+
+# Strings in enigmailManageUidDlg.xul
+changePrimUidFailed=فشل تغيير هوية المستخدم الأساسية
+changePrimUidOK=تم تغيير هوية المستخدم الأساسية بنجاح
+deleteUidFailed=فشل حذف هوية المستخدم %S
+deleteUidOK=تم حذف هوية المستخدم %S بنجاح
+revokeUidFailed=فشل سحب هوية المستخدم %S
+revokeUidOK=تم نقض هوية المستخدم %S بنجاح. إذا كان مفتاحك على خادوم مفاتيح فيُفضّل أن تعيد رفعه ليرى الآخرون النقض.
+revokeUidQuestion=أترغب حقا في نقض هوية المستخدم هذه %S؟
+deleteUidQuestion=أترغب حقا في حذف هوية المستخدم هذه %S؟\n\nلاحظ: إذا كنت قد وضعت مفتاحك على خادوم مفاتيح فإن حذف هوية المستخدم لن يُغيّر أي شيء. في هذه الحالة استخدم 'انقض هوية المستخدم'.
+
+# Strings in enigmailKeyDetailsDlg.xul
+keyTypePublic=مفتاح علني
+keyTypeSubkey=مفتاح فرعي
+keyTypePair=زوج مفاتيح
+keyExpiryNever=أبدا
+keyAlgorithm_1=RSA
+keyAlgorithm_2=RSA
+keyAlgorithm_3=RSA
+keyAlgorithm_16=الجمل
+keyAlgorithm_17=DSA
+keyAlgorithm_20=الجمل
+
+# Strings in enigmailGenCardKey.xul
+keygen.started=من فضلك انتظر بينما يجري توليد المفتاح...
+keygen.completed=تم توليد المفتاح. معرِّف المفتاح الجديد هو: 0x%S
+keygen.keyBackup=تم حفظ المفتاح احتياطيا باسم %S
+keygen.passRequired=من فضلك حدد عبارة سر إذا كنت تريد إنشاء نسخة احتياطية من مفتاحك خارج البطاقة الذكية.
+
+# Strings in enigmailSetCardPin.xul
+cardPin.dontMatch=لأن PIN التي أدخلته لا تتطابق، من فضلك أعد الإدخال
+cardPin.minLength=يجب أن يتألف PIN من %S حرف أو رقم على الأقل
+cardPin.processFailed=فشل تغيير PIN
+
+# Strings in enigRetrieveProgress.xul
+keyserverProgress.refreshing=يجري تحديث المفاتيح؛ انتظر...
+keyserverProgress.uploading=يجري رفع المفاتيح؛ انتظر...
+keyserverTitle.refreshing=تم تحديث المفاتيح
+keyserverTitle.uploading=تم تحديث المفتاح
+
+# Strings in enigmailSetupWizard
+setupWizard.gpgNotFound=تعذّر العثور على GnuPG؛ تأكد من المسار
+passphrase.min8keys=يجب أن تتألف كلمة السر من 8 محارف على الأقل
+setupWizard.applyAllId=فعّل GnuPG لكل الهويات
+setupWizard.applySomeId=فعّل GnuPG لكل الهويات: %S
+setupWizard.applySingleId=فعّل GnuPG لحساب بريدك
+setupWizard.setAllPrefs=عدّل كل اعدادات التطبيق المحبّذة
+setupWizard.setSomePrefs=عدّل كل اعدادات التطبيق المحبّذة التي اخترتها
+setupWizard.setNoPrefs=لا تعدّل أيا من إعدادات التطبيق
+setupWizard.createKey=ولّد مفتاح OpenPGP 2048-بتة جديد، صالح ل 5 سنوات
+setupWizard.useKey=استخدم هوية مفتاح OpenPGP الموجودة %S للتوقيع
+setupWizard.encryptAll=عمِّ كل البريد بدئيا
+setupWizard.encryptNone=لا تعمّ البريد بدئيا
+setupWizard.signAll=وقّع كل البريد بدئيا
+setupWizard.signNone=لا توقّع البريد بدئيا
+setupWizard.reallyCancel=أترغب حقا في صرف مرشد إعداد OpenPGP؟
+setupWizard.locateGpg=لم يستطع المرشد العثور على ملف GnuPG التنفيذي، من فضلك حدد موضعه يدويا في الحوار التالي. إذا لم تكن ثبّتّ GnuPG بعد، ننصحك بزيارة http://www.gnupg.org.
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/help
^
|
+(directory)
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/help/compose.html
^
|
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Enigmail Help: Message Composition</title>
+ <style type="text/css">
+ /*<![CDATA[*/
+ dt { font-weight: bold; }
+ /*]]>*/
+ </style>
+</head>
+
+<body>
+ <h1>Enigmail Help</h1>
+
+ <h3>Using Enigmail when composing messages</h3>
+
+ <dl>
+ <dt>Enigmail menu in Mail/Compose window</dt>
+
+ <dd>
+ <dl>
+ <dt>Sign message</dt>
+
+ <dd>Enable/Disable sending signed mail. User is notified, if signing fails.</dd>
+
+ <dt>Encrypt message</dt>
+ <dd>
+ <p>Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.</p>
+
+ <p>If <em>Display selection when necessary</em> is set in <strong>Preferences -> Key Selection tab</strong>, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.</p>
+
+ <p>If <em>Never display OpenPGP key selection dialog</em> is set in <strong>Preferences -> Key Selection tab</strong>, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.</p>
+ </dd>
+
+ <dt>Use PGP/MIME for this message</dt>
+
+ <dd>
+ Enable/Disable the use of <a href="http://community.roxen.com/developers/idocs/rfc/rfc3156.html" target="_blank">PGP/MIME</a> for this message.
+
+ <p>If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.</p>
+
+ <p>This feature is dependent on the settings in <strong>Preferences -> PGP/MIME tab</strong> being set to <em>Allow to use PGP/MIME</em> or <em>Always use PGP/MIME</em>.</p>
+ </dd>
+
+ <dt>Default composition options</dt>
+
+ <dd>
+ <ul>
+ <li><strong>Signing/Encryption Options...</strong>: shortcut to <strong>Account Settings -> OpenPGP Options.</strong></li>
+
+ <li><strong>Send options...</strong>: shortcut to <strong>Preferences -> Send</strong> tab.</li>
+
+ <li><strong>Key selection options...</strong>: shortcut to <strong>Preferences -> Key Selection</strong> tab.</li>
+
+ <li><strong>PGP/MIME options...</strong>: shortcut to <strong>Preferences -> PGP/MIME</strong> tab.</li>
+ </ul>
+ </dd>
+
+ <dt>Undo encryption</dt>
+
+ <dd>
+ <p>If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.</p>
+
+ <p><em>As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.</em></p>
+ </dd>
+
+ <dt>Insert public key</dt>
+
+ <dd>insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.</dd>
+
+ <dt>Clear save passphrase</dt>
+
+ <dd>Clears cached passphrase. Useful if you have multiple passphrases.</dd>
+
+ <dt>Help</dt>
+
+ <dd>Displays Help information from the website (this page).</dd>
+ </dl>
+ </dd>
+ </dl>
+ <hr />
+
+ <p>Further help is available on the <a href="http://enigmail.mozdev.org/help.html">Enigmail Help web page</a></p>
+</body>
+</html>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/help/editRcptRule.html
^
|
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Enigmail Help: Edit OpenPGP Rule</title>
+ <style type="text/css">
+ /*<![CDATA[*/
+ dt { font-weight: bold; }
+ /*]]>*/
+ </style>
+</head>
+
+<body>
+ <h1>Enigmail Help</h1>
+
+ <h3>Using the Enigmail Rules Editor: Edit OpenPGP Rule</h3>
+
+ <p>In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.</p>
+
+ <dl>
+ <dt>Set OpenPGP Rules for</dt>
+
+ <dd>Contains the email addresses of the recipients (without names, i.e. just an address like <tt>somebody@email.domain</tt>). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. <tt>@email.domain will</tt> allow matching to <tt>body@email.domain</tt>, <tt>somebody@email.domain</tt>, <tt>anybody@email.domain</tt>, etc.</dd>
+
+ <dt>Apply rule if recipient ...</dt>
+
+ <dd>
+ This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on <tt>body@email.domain</tt> entered in the <em>OpenPGP Rules</em> field above.
+
+ <ul>
+ <li><em>Is exactly</em>: with this setting, the rule will only trigger on emails to <tt>body@email.domain</tt> (exact, case insensitive matching).</li>
+
+ <li><em>Contains</em>: with this setting, any email address containing the string is matched, e.g. <tt>anybody@email.domain</tt> or <tt>body@email.domain.net</tt></li>
+
+ <li><em>Begins with</em>: with this setting, any email address starting with the string is matched, e.g. <tt>body@email.domain.net</tt>, <tt>body@email.domain-name.com</tt>.</li>
+
+ <li><em>Ends with</em>: with this setting, any email address ending with the string is matched, e.g. <tt>anybody@email.domain</tt> , <tt>somebody@email.domain</tt>.</li>
+ </ul>
+ </dd>
+
+ <dt>Continue with the next rule for the matching address</dt>
+
+ <dd>Enabling this function will allow you to define a rule but not have to specify a KeyID in the <em>Use the following OpenPGP keys:</em> field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.</dd>
+
+ <dt>Do not check further rules for the matching address</dt>
+
+ <dd>Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.</dd>
+
+ <dt>Use the following OpenPGP keys:</dt>
+
+ <dd>Use the <em>Select Key(s)..</em> button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.</dd>
+
+ <dt>Default for Signing</dt>
+
+ <dd>
+ Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
+
+ <ul>
+ <li><em>Never</em>: disable signing, even if it was enabled in the message composition window (overrules the other values)</li>
+
+ <li><em>Yes, if selected from in Message Composition</em>: leave signing as specified in the message composition window</li>
+
+ <li><em>Always</em>: enable signing, even if it was <span style="font-style: italic;">not</span> enabled in the message composition window</li>
+ </ul>These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify <em>Always</em>.
+ </dd>
+
+ <dt>Encryption</dt>
+
+ <dd>Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.</dd>
+
+ <dt>PGP/MIME</dt>
+
+ <dd>Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.</dd>
+ </dl>
+
+ <p>The rules are processed in the order displayed in the list in the <em>OpenPGP Rules Editor</em>. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.</p>
+ <hr />
+
+ <p>Further help is available on the <a href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">Enigmail Per-Recipient Settings page</a></p>
+</body>
+</html>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/help/messenger.html
^
|
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Enigmail Help: Message Reading</title>
+ <style type="text/css">
+ /*<![CDATA[*/
+ dt { font-weight: bold; }
+ /*]]>*/
+ </style>
+</head>
+
+<body>
+ <h1>Enigmail Help</h1>
+
+ <h3>Using Enigmail when reading messages</h3>
+
+ <dl>
+ <dt>Decrypt button in main Mail window</dt>
+
+ <dd>This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.</dd>
+
+ <dt>Pen and Key icons in Message Header display</dt>
+
+ <dd>
+ The <em>Pen</em> and <em>Key</em> icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the <em>Pen</em> icon will change to a <em>Broken Pen</em> to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
+
+ <ul>
+ <li><em>OpenPGP Security info</em>: allows you to view the output status from GnuPG for the message.</li>
+
+ <li><em>Copy OpenPGP Security info</em>: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.</li>
+
+ <li><em>View OpenPGP Photo ID</em>: allows you to view the <em>Photo ID</em> of the person who sent the message, if they have a photo embedded in their Public Key. (<em>This option will only be enabled if a Photo ID exists in their key.)</em></li>
+
+ <li><em>S/MIME Security info</em>: allows you to view the S/MIME Security Info for the message.</li>
+ </ul>
+
+ <p>If you do not have <em>keyserver-options auto-key-retrieve</em> set in your <tt>gpg.conf</tt> file and you read a message which is signed or encrypted, you will see a <em>Pen</em> icon in the headers display area with a <em>Question mark</em> on it, the Enigmail status line in the headers area will say <em>Part of the message signed; click pen icon for details</em> and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.</p>
+
+ <p>You may also see this if you have <em>keyserver-options auto-key-retrieve</em> set in your <tt>gpg.conf</tt> file and the OpenPGP key is not available on the default keyserver.</p>
+
+ <p>Clicking on the <em>Pen and Question mark</em> icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.</p>
+
+ <p>To configure the list of keyservers you wish to use, go to <strong>Enigmail -> Preferences -> Basic</strong> tab and enter the keyserver addresses in the <em>Keyserver(s):</em> box, separated by a comma. <em>The first keyserver in the list will be used as the default.</em></p>
+ </dd>
+
+ <dt>Opening encrypted attachments / importing attached OpenPGP keys</dt>
+
+ <dd>Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: <em>Decrypt and Open</em> and <em>Decrypt and Save</em>. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.</dd>
+ </dl>
+ <hr />
+
+ <p>Further help is available on the <a href="http://enigmail.mozdev.org/help.html">Enigmail Help web page</a></p>
+</body>
+</html>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/help/rulesEditor.html
^
|
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Enigmail Help: Rules Editor</title>
+ <style type="text/css" xml:space="preserve">
+ /*<![CDATA[*/
+ dt { font-weight: bold; }
+ /*]]>*/
+ </style>
+</head>
+
+<body>
+ <h1>Enigmail Help</h1>
+
+ <h3>Using the Enigmail Rules Editor</h3>
+
+ <p>In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:</p>
+
+ <dl>
+ <dt>Email</dt>
+
+ <dd>The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on <span style="font-style: italic;">substrings</span> (Further details can be found in the Edit Rule dialog)</dd>
+
+ <dt>OpenPGP Key(s)</dt>
+
+ <dd>a list of OpenPGP Key ID's to use for the recipient</dd>
+
+ <dt>Sign</dt>
+
+ <dd>
+ enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
+
+ <ul>
+ <li><em>Never</em>: disable signing, even if it was enabled in the message composition window (overrules the other values)</li>
+
+ <li><em>Possible</em>: leave signing as specified in the message composition window</li>
+
+ <li><em>Always</em>: enable signing, even if it was <span style="font-style: italic;">not</span> enabled in the message composition window</li>
+ </ul>
+
+ <p>These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify <em>Always</em>.</p>
+ </dd>
+
+ <dt>Encrypt</dt>
+
+ <dd>enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.</dd>
+
+ <dt>PGP/MIME</dt>
+
+ <dd>enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.</dd>
+ </dl>
+
+ <p>The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.</p>
+
+ <p><em>Note:</em> The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). <a href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">Further information</a> for directly editing the file is available on the Enigmail Homepage</p>
+ <hr />
+
+ <p>Further help is available on the <a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help web page</a></p>
+</body>
+</html>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/ar/upgrade_080.html
^
|
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="ar" dir="rtl">
+<head>
+ <title>معلومات تحديث Enigmail 0.8x</title>
+</head>
+<body>
+<h1>معلومات تحديث Enigmail 0.8x</h1>
+<p>أصبح ل Enigmail 0.8x لثندربيرد على واجهة مستخدم جديدة
+<b>إذا كنت معتادا على إصدارات Enigmail قبل 0.81.0، فمن فضلك اقرأ المعلومات التالية قبل الاستمرار</b>.
+</p>
+<h2>إعداد Enigmail</h2>
+<p>ينقسم إعداد Enigmail الآن إلى جزأين:</p>
+<ul>
+<li>الاعدادات الخاصة بالحساب لهوية مفتاح PGP، التعمية / التوقيع البدئي
+</li>
+<li>التفضيلات المشتركة العامة
+</li>
+</ul>
+<h3>الإعدادات الخاصة بالحساب</h3>
+<p>الإعدادات الخاصة بالحساب موجودة عبر قائمة <em>أدوات -> إعدادات الحساب</em>. يوجد الآن لكل حساب عنصر في قائمة <em>أمن OpenPGP</em> يحتوي الإعدادات الخاصة لكل حساب.
+</p>
+<p>إعدادات مفتاح PGP من Enigmail v0.80.0 أو أقدم
+<b>لن</b> تُحوّل إلى الأعدادات الجديدة لكل حساب.
+Enigmail <b>معطّل</b> بدئيا لكل الحسابات.
+</p>
+<h3>التفضيلات المشتركة العامة</h3>
+<p>التفضيلات المشتركة العامة تم تنقيحها و دمجها في حوار واحد. يمكن الوصول إلى التفضيلات إما من قائمة Enigmail أو بالنقر على زر <em>متقدم</em> في تفضيلات أمن OpenPGP في مدير الحسابات.
+</p>
+<p>أضيف خيار جديد يسمح لك بتفعيل التعمية آليا عند الرد على الرسائل المعمّاة. لاحظ أن هذا لا يؤثر على إعدادات توقيع الرسائل.
+</p>
+
+<h2>تحرير الرسائل</h2>
+<p>ضُبِط سلوك Enigmail ليكون أقرب شبها لسلوك S/MIME. أضيف زر OpenPGP يمكن منه اختيار اعدادات التعمية / التوقيع. لم تعد قائمة Enigmail تعمل لإرسال البريد المعنى أو الموقع، يتم الإرسال سريعا من زر <em>أرسِل</em> العادي أو قائمة ملف -> أرسل. <b>يقترح أن تجرب الإعدادات الجديدة بإرسال بعض الرسائل لنفسك قبل أن تستخدمها جديا</b>، بحيث تستوعب السلوك الجديد.
+</p>
+<p>إعدادات التعمية أو التوقيع تظهر الآن في الزاوية اليمنى بأسفل نافذة التحرير، مع أيقونات صغيرة تظهر عند تفعيل التوقيع أو التعمية.
+</p>
+
+<h2>مشاكل معروفة</h2>
+<ul>
+<li>لا يستطيع Enigmail حاليا تذكر عدة كلمات سر لمفاتيح PGP مختلفة. إما أن تكتب كلمة السر كل مرّة، أو ضع نفس كلمة السر للمفاتيح التي تستخدمها.
+</li>
+</ul>
+</body>
+</html>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/enigmail.dtd
^
|
@@ -1,15 +1,15 @@
<!ENTITY enigmail.label "Enigmail">
<!ENTITY enigmail.openpgp.label "OpenPGP">
-<!ENTITY enigmail.keyUserId.label "Account / User ID">
+<!ENTITY enigmail.keyUserId.label "アカウント / ユーザーID">
<!ENTITY enigmail.keygenTitle.label "OpenPGP鍵の生成">
<!ENTITY enigmail.useForSigning.label "生成した鍵を選択したアカウントに使用する">
<!ENTITY enigmail.keyComment.label "コメント">
<!ENTITY enigmail.keyNoPassphrase.label "パスフレーズ無し">
<!ENTITY enigmail.keyPassphrase.label "パスフレーズ">
-<!ENTITY enigmail.keyPassphraseRepeat.label "パスフレーズ (確認)">
+<!ENTITY enigmail.keyPassphraseRepeat.label "パスフレーズ(確認)">
<!ENTITY enigmail.generateKey.label "キー生成">
-<!ENTITY enigmail.generateKey.tooltip "OpenPGPに則った新しい鍵を暗号化/署名するため生成します">
+<!ENTITY enigmail.generateKey.tooltip "OpenPGP に則った新しい鍵を暗号化/署名するため生成します">
<!ENTITY enigmail.cancelKey.label "中止">
<!ENTITY enigmail.cancelKey.tooltip "鍵生成の中止">
<!ENTITY enigmail.keyGen.expiry.title "鍵の有効期限">
@@ -21,33 +21,33 @@
<!ENTITY enigmail.keyGen.keySize.label "暗号鍵長(bit)">
<!ENTITY enigmail.keyGen.console.label "鍵生成コンソール">
<!ENTITY enigmail.keyGen.keyType.label "暗号化アルゴリズム">
-<!ENTITY enigmail.keyGen.keyType.dsa "DSA & El Gamal">
+<!ENTITY enigmail.keyGen.keyType.dsa "DSA & ElGamal">
<!ENTITY enigmail.keyGen.keyType.rsa "RSA">
-<!ENTITY enigmail.preferences.label "OpenPGP設定">
+<!ENTITY enigmail.preferences.label "OpenPGP 設定">
<!ENTITY enigmail.passwordSettings.label "パスフレーズの設定">
<!ENTITY enigmail.userNoPassphrase.label "パスフレーズの問い合わせをしない">
-<!ENTITY enigmail.userNoPassphrase.tooltip "OpenPGP鍵がパスフレーズで保護されていない場合に、チェックしてください。">
+<!ENTITY enigmail.userNoPassphrase.tooltip "OpenPGP鍵がパスフレーズで保護されていない場合にチェックしてください">
<!ENTITY enigmail.expertUser.label "詳細設定を表示">
-<!ENTITY enigmail.expertUser.tooltip "上級者向けのメニュー項目や設定を行いたい場合に、チェックしてください">
+<!ENTITY enigmail.expertUser.tooltip "上級者向けのメニュー項目や設定を行いたい場合にチェックしてください">
<!ENTITY enigmail.defaultEncryptionOption.label "暗号化のデフォルトオプションの選択">
-<!ENTITY enigmail.usePGPMimeOption.label "PGP/MIMEオプションの選択">
-<!ENTITY enigmail.mimeHashAlgorithm.label "Hashアルゴリズム">
+<!ENTITY enigmail.usePGPMimeOption.label "PGP/MIME オプションの選択">
+<!ENTITY enigmail.mimeHashAlgorithm.label "Hash アルゴリズム">
<!ENTITY enigmail.prefs.pathsTitle.label "ディレクトリとファイル">
<!ENTITY enigmail.prefs.overrideGpg.label "次の設定で上書き">
-<!ENTITY enigmail.prefs.overrideGpg.tooltip "GnuPGの場所を設定したい場合は、クリックしてください">
+<!ENTITY enigmail.prefs.overrideGpg.tooltip "GnuPG の場所を設定したい場合は、クリックしてください">
-<!ENTITY enigmail.agentPath.label "GnuPGの実行パス">
-<!ENTITY enigmail.agentAdditionalParam.label "GnuPGの追加パラメータ">
-<!ENTITY enigmail.agentAdditionalParam.tooltip "GnuPGで使用するオプションを設定します">
+<!ENTITY enigmail.agentPath.label "GnuPG の実行パス">
+<!ENTITY enigmail.agentAdditionalParam.label "GnuPG の追加パラメータ">
+<!ENTITY enigmail.agentAdditionalParam.tooltip "GnuPG で使用するオプションを設定します">
-<!ENTITY enigmail.mime_parts_on_demand.label "開くときに始めて添付ファイルをダウンロード(IMAP専用)">
-<!ENTITY enigmail.allowEmptySubject.label "無題の時に警告しない">
-<!ENTITY enigmail.allowEmptySubject.tooltip "件名をつけずに送信する場合には、チェックしてください">
+<!ENTITY enigmail.mime_parts_on_demand.label "開くときに初めて添付ファイルをダウンロード(IMAP 専用)">
+<!ENTITY enigmail.allowEmptySubject.label "件名なしの時に警告しない">
+<!ENTITY enigmail.allowEmptySubject.tooltip "件名なしのまま送信する場合にはチェックしてください">
<!ENTITY enigmail.maxIdleMinutesHead.label "何もしない間パスフレーズを">
@@ -55,11 +55,11 @@
<!ENTITY enigmail.maxIdleMinutes.tooltip "制限時間だけパスフレーズをメモリ上に一時的に保存します">
<!ENTITY enigmail.resetPrefsButton.label "リセット">
-<!ENTITY enigmail.resetPrefs.tooltip "全てのOpenPGPの設定を初期値に戻します">
+<!ENTITY enigmail.resetPrefs.tooltip "すべての OpenPGP の設定を初期値に戻します">
<!ENTITY enigmail.prefsHelpButton.label "ヘルプ">
-<!ENTITY enigmail.upgradeButton.label "Enigmailのアップグレード">
-<!ENTITY enigmail.uninstallButton.label "Enigmailのアンインストール">
+<!ENTITY enigmail.upgradeButton.label "Enigmail のアップグレード">
+<!ENTITY enigmail.uninstallButton.label "Enigmail のアンインストール">
<!ENTITY enigmail.basic.label "基本">
<!ENTITY enigmail.sending.label "送信">
@@ -74,10 +74,10 @@
<!ENTITY enigmail.moreOptions.label "詳細設定">
<!ENTITY enigmail.encryptToSelf.label "自分の鍵を常に受取人リストに追加">
-<!ENTITY enigmail.encryptToSelf.tooltip "この機能が有効の場合、送信する全てのメッセージを復号化出来るようになります">
+<!ENTITY enigmail.encryptToSelf.tooltip "この機能が有効の場合、送信するすべてのメッセージを復号化できるようになります">
<!ENTITY enigmail.alwaysTrustSend.label "常に他人の鍵を信頼する">
-<!ENTITY enigmail.alwaysTrustSend.tooltip "鍵の有効性を判断するのに「信頼の輪」(Web of Trust)を使わないでください。">
-<!ENTITY enigmail.useNonDefaultComment.label "OpenPGP欄にEngimailのコメントを追加する">
+<!ENTITY enigmail.alwaysTrustSend.tooltip "鍵の有効性を判断するのに「信頼の輪」(Web of Trust)を使いません">
+<!ENTITY enigmail.useNonDefaultComment.label "OpenPGP 欄に Engimail のコメントを追加する">
<!ENTITY enigmail.keyserver.label "鍵サーバ">
<!ENTITY enigmail.keyserverDlg.label "鍵サーバの選択">
@@ -87,47 +87,47 @@
<!ENTITY enigmail.searchForKey.label "鍵の検索">
-<!ENTITY enigmail.disableSMIMEui.label "S/MIMEのボタンおよびメニューを隠す">
-<!ENTITY enigmail.doubleDashSeparator.label "'--'をSignatureの境界とする">
-<!ENTITY enigmail.useGpgAgent.label "gpg-agentでパスフレーズを扱う">
+<!ENTITY enigmail.disableSMIMEui.label "S/MIME のボタンおよびメニューを隠す">
+<!ENTITY enigmail.doubleDashSeparator.label "'--' を署名の境界とする">
+<!ENTITY enigmail.useGpgAgent.label "gpg-agent でパスフレーズを扱う">
<!ENTITY enigmail.noHushMailSupport.label " '<' と '>' を電子メールアドレスを指定するために使用する">
<!ENTITY enigmail.keepSettingsForReply.tooltip "可能であれば、暗号化されたメールには暗号化して返信します">
-<!ENTITY enigmail.doubleDashSeparator.tooltip "一行に二つのハイフンしか無い場合は、Signatureブロックとします">
-<!ENTITY enigmail.useGpgAgent.tooltip "すべてのパスフレーズの入力にgpg-agent (GnuPG 2の機能)を使用します">
-<!ENTITY enigmail.noHushMailSupport.tooltip "GnuPGに対して、'<' と '>' を電子メールアドレスを指定するために使用します。もし、受取人が古いHushmail鍵を使用している場合は無効にしください。">
-<!ENTITY enigmail.mime_parts_on_demand.tooltip "PGP/MIMEメッセージをIMAPフォルダで受信している場合には、無効にしください">
-<!ENTITY enigmail.disableSMIMEui.tooltip "S/MIMEボタンをメッセージ作成ウインドウのツールバーから隠します">
+<!ENTITY enigmail.doubleDashSeparator.tooltip "一行に二つのハイフンしか無い場合は、署名ブロックとします">
+<!ENTITY enigmail.useGpgAgent.tooltip "すべてのパスフレーズの入力に gpg-agent (GnuPG 2 の機能)を使用します">
+<!ENTITY enigmail.noHushMailSupport.tooltip "GnuPG に対して、'<' と '>' を電子メールアドレスを指定するために使用します。もし、受取人が古い Hushmail 鍵を使用している場合は無効にしください">
+<!ENTITY enigmail.mime_parts_on_demand.tooltip "PGP/MIME メッセージを IMAP フォルダで受信している場合には、無効にしてください">
+<!ENTITY enigmail.disableSMIMEui.tooltip "S/MIME ボタンをメッセージ作成ウインドウのツールバーから隠します">
<!ENTITY enigmail.logdirectory.label "ログディレクトリ">
<!ENTITY enigmail.testemail.label "テストメール">
<!ENTITY enigmail.test.label "テスト">
<!ENTITY enigmail.decryptbutton.label "復号">
-<!ENTITY enigmail.decryptbutton.tip "OpenPGP(Enigmail)で復号/検証を行う">
+<!ENTITY enigmail.decryptbutton.tip "OpenPGP (Enigmail)で復号/検証を行う">
<!ENTITY enigmail.messengermenu.accesskey "n">
<!ENTITY enigmail.decryptverify.label "復号/検証">
-<!ENTITY enigmail.importpublickey.label "公開鍵を取り込む">
+<!ENTITY enigmail.importpublickey.label "公開鍵を読み込む">
<!ENTITY enigmail.savedecrypted.label "復号したメッセージを保存">
<!ENTITY enigmail.autoDecrypt.label "メッセージを自動的に復号/検証">
<!ENTITY enigmail.clearPassphrase.label "パスフレーズのクリア">
-<!ENTITY enigmail.editRules.label "受取人毎の設定の編集">
+<!ENTITY enigmail.editRules.label "受取人ごとの設定の編集">
<!ENTITY enigmail.prefs.label "設定">
<!ENTITY enigmail.advprefs.label "詳細設定">
-<!ENTITY enigmail.debugMenu.label "OpenPGPのデバッグ">
+<!ENTITY enigmail.debugMenu.label "OpenPGP のデバッグ">
<!ENTITY enigmail.viewconsole.label "コンソールを表示">
<!ENTITY enigmail.viewdebuglog.label "ログファイルを表示">
<!ENTITY enigmail.generatekey.label "鍵の生成">
<!ENTITY enigmail.upgrade.label "アップグレード">
<!ENTITY enigmail.help.label "ヘルプ">
-<!ENTITY enigmail.about.title "OpenPGPについて">
-<!ENTITY enigmail.about.label "OpenPGPについて">
+<!ENTITY enigmail.about.title "OpenPGP について">
+<!ENTITY enigmail.about.label "OpenPGP について">
<!ENTITY enigmail.reload.label "メッセージを再読込">
<!ENTITY enigmail.browse.label "表示...">
<!ENTITY enigmail.sendersKeyMenu.label "送信者の鍵">
@@ -157,18 +157,19 @@
<!ENTITY enigmail.sendersKeyMenu.accesskey "K">
<!ENTITY enigmail.securitybutton.label "OpenPGP">
-<!ENTITY enigmail.securitybutton.tip "OpenPGP(Enigmail)セキュリティ設定">
+<!ENTITY enigmail.securitybutton.tip "OpenPGP (Enigmail)セキュリティ設定">
<!ENTITY enigmail.signedsend.label "このメッセージに署名">
<!ENTITY enigmail.encryptedsend.label "このメッセージを暗号化">
-<!ENTITY enigmail.disableRules.label "受取人毎のルール設定を無視">
+<!ENTITY enigmail.disableRules.label "受取人ごとのルール設定を無視">
<!ENTITY enigmail.composeOptionsMenu.label "デフォルト作成オプション">
+
<!ENTITY enigmail.pgpAccountSettings.label "署名/暗号化オプション...">
-<!ENTITY enigmail.mimeOptionsMenu.label "PGP/MIMEオプション...">
+<!ENTITY enigmail.mimeOptionsMenu.label "PGP/MIME オプション...">
<!ENTITY enigmail.sendOptionsMenu.label "送信オプション...">
<!ENTITY enigmail.defaultKeySelOpts.label "鍵選択オプション...">
-<!ENTITY enigmail.sendPGPMime.label "PGP/MIMEをこのメッセージに使用">
+<!ENTITY enigmail.sendPGPMime.label "PGP/MIME をこのメッセージに使用">
<!ENTITY enigmail.undoencryption.label "暗号化を元に戻す">
<!ENTITY enigmail.insertkey.label "公開鍵の挿入">
@@ -204,33 +205,32 @@
<!ENTITY enigmail.recipientsSelectionOption.label "鍵の選択方法の指定">
<!ENTITY enigmail.perRecipientRules.label "プリセットのルールにのみ従う">
-<!ENTITY enigmail.perRecipientRules.tooltip "ルールに従って鍵を選択します。ルールがない受取人には新しいルールを作る表示が出ます。">
+<!ENTITY enigmail.perRecipientRules.tooltip "ルールに従って鍵を選択します。ルールがない受取人には新しいルールを作る表示が出ます">
<!ENTITY enigmail.perRecipientRulesAndEmail.label "ルールとメールアドレスに従う">
-<!ENTITY enigmail.perRecipientRulesAndEmail.tooltip "ルールとメールアドレスをチェックしてもOpenPGPが鍵を決定出来なかった場合には、手動で選択します。">
+<!ENTITY enigmail.perRecipientRulesAndEmail.tooltip "ルールとメールアドレスをチェックしても OpenPGP が鍵を決定できなかった場合には、手動で選択します">
<!ENTITY enigmail.perEmailAddress.label "メールアドレスに従う">
-<!ENTITY enigmail.perEmailAddress.tooltip "メールアドレスをチェックしてもOpenPGPが鍵を決定出来なかった場合には、手動で選択します。ルールは使用されません。">
+<!ENTITY enigmail.perEmailAddress.tooltip "メールアドレスをチェックしても OpenPGP が鍵を決定できなかった場合には、手動で選択します。ルールは使用されません">
<!ENTITY enigmail.askRecipientsAlways.label "手動で設定">
-<!ENTITY enigmail.askRecipientsAlways.tooltip "OpenPGPはどの鍵を使うか決定致しません。常に問い合わせます。">
+<!ENTITY enigmail.askRecipientsAlways.tooltip "OpenPGP はどの鍵を使うか決定しません。常に問い合わせます">
<!ENTITY enigmail.neverAsk.label "手動では設定しない">
-<!ENTITY enigmail.neverAsk.tooltip "もし、全ての受取人について有効な鍵が見つからなかった場合には、自動的に暗号化しないで送信します。">
+<!ENTITY enigmail.neverAsk.tooltip "すべての受取人について有効な鍵が見つからなかった場合には、自動的に暗号化しないで送信します">
<!ENTITY enigmail.defineRules.label "ルールの設定 ...">
-<!ENTITY enigmail.defineRules.tooltip "鍵の選択ルールを表示、追加、削除および修正する場合は、クリックしてください。">
+<!ENTITY enigmail.defineRules.tooltip "鍵の選択ルールを表示、追加、削除および修正する場合はクリックしてください">
-<!ENTITY enigmail.usePGPMimeAlways.label "常にPGP/MIMEを使用">
-<!ENTITY enigmail.usePGPMimePossible.label "可能ならPGP/MIMEを使用">
-<!ENTITY enigmail.usePGPMimeNever.label "PGP/MIMEは使用しない">
+<!ENTITY enigmail.usePGPMimeAlways.label "常に PGP/MIME を使用">
+<!ENTITY enigmail.usePGPMimePossible.label "可能なら PGP/MIME を使用">
+<!ENTITY enigmail.usePGPMimeNever.label "PGP/MIME は使用しない">
<!ENTITY enigmail.keepSettingsForReply.label "暗号化メッセージには暗号化して返信">
<!ENTITY enigmail.confirmBeforeSend.label "送信する前に常に確認">
-<!ENTITY enigmail.confirmBeforeSend.tooltip "送信前の署名・暗号化に関する情報を表示します">
-<!ENTITY enigmail.wrapHtmlBeforeSend.label "送信する前にHTMLテキストを再度ラップ">
+<!ENTITY enigmail.confirmBeforeSend.tooltip "送信前の署名/暗号化に関する情報を表示します">
+<!ENTITY enigmail.wrapHtmlBeforeSend.label "送信する前に HTML テキストを再度ラップ">
<!ENTITY enigmail.wrapHtmlBeforeSend.tooltip "署名が損なわれないように再度テキストを整形します">
<!ENTITY enigmail.autoKeyRetrieve.label "署名を検証するために自動的に鍵を">
<!ENTITY enigmail.autoKeyRetrieve2.label "以下のサーバからダウンロードする:">
<!ENTITY enigmail.resetRememberedValues.label "警告をリセット">
<!ENTITY enigmail.resetRememberedValues.tooltip "過去に無効にした警告や質問を再度表示するようにします">
-
<!ENTITY enigmail.defaultEncryptionSign.accesskey "E">
<!ENTITY enigmail.defaultEncryptionOnly.accesskey "c">
<!ENTITY enigmail.defaultEncryptionNone.accesskey "N">
@@ -243,18 +243,19 @@
<!ENTITY enigmail.defaultNotSignedsend.accesskey "G">
<!ENTITY enigmail.confirmBeforeSend.accesskey "A">
-<!ENTITY enigmail.keygen.desc "<a class='enigmailStrong'>注意:鍵生成には数分かかることがあります。</a>生成途中でアプリケーションを終了しないでください。生成途中でブラウザを使用する、もしくはディスクアクセスが激しい処理を行うと、「乱数プール」が満たされ、処理が早く終わります。鍵の生成が終了すると通知します。">
+<!ENTITY enigmail.keygen.desc "<a class='enigmailStrong'>注意:鍵生成には数分かかることがあります。</a>生成途中でアプリケーションを終了しないでください。生成途中でブラウザを使用する、もしくはディスクアクセスが激しい処理を行うと「乱数プール」が満たされ、処理が早く終わります。鍵の生成が終了すると通知します。">
-<!ENTITY enigmail.console.label "OpenPGPのコンソールを表示"><!ENTITY enigmail.console.tooltip "OpenPGPのコンソールを表示">
+<!ENTITY enigmail.console.label "OpenPGP のコンソールを表示">
+<!ENTITY enigmail.console.tooltip "OpenPGP のコンソールを表示します">
-<!ENTITY enigmail.uninstall.label "Enigmailをアンインストール">
-<!ENTITY enigmail.uninstall.tooltip "Enigmailをアンインストール">
+<!ENTITY enigmail.uninstall.label "Enigmail をアンインストール">
+<!ENTITY enigmail.uninstall.tooltip "Enigmail をアンインストールします">
-<!ENTITY enigmail.selectpanel.label "OpenPGPパネルの選択">
-<!ENTITY enigmail.selectpanel.tooltip "OpenPGPパネルの選択">
+<!ENTITY enigmail.selectpanel.label "OpenPGP パネルの選択">
+<!ENTITY enigmail.selectpanel.tooltip "OpenPGP パネルを選択します">
<!ENTITY enigmail.userSelectionList.label "OpenPGP鍵の選択">
-<!ENTITY enigmail.usersNotFound.label "鍵が無効、信用してない。もしくは登録されていない受取人">
+<!ENTITY enigmail.usersNotFound.label "鍵が無効、信用していない、もしくは登録されていない受取人">
<!ENTITY enigmail.keyExpiry.label "有効期限">
<!ENTITY enigmail.keyTrust.label "信用度">
<!ENTITY enigmail.keySelection.label "選択">
@@ -262,35 +263,35 @@
<!ENTITY enigmail.userSelPlainText.label "暗号化しないで送信">
<!ENTITY enigmail.userSelPlainTextNotSigned.label "暗号化も署名もしないで送信">
<!ENTITY enigmail.userSelPlainText.accesskey "S">
-<!ENTITY enigmail.displayNoLonger.label "暗号化出来ない場合は、このダイアログは次から表示しない">
+<!ENTITY enigmail.displayNoLonger.label "暗号化できない場合は、このダイアログは次から表示しない">
<!ENTITY enigmail.importMissingKeys.label "持っていない鍵のダウンロード">
<!ENTITY enigmail.importMissingKeys.accesskey "D">
-<!ENTITY enigmail.importMissingKeys.tooltip "持ってない鍵を鍵サーバからダウンロードすることを試みてください">
+<!ENTITY enigmail.importMissingKeys.tooltip "持ってない鍵を鍵サーバーから読み込みます">
<!ENTITY enigmail.importMissingKeys.accesskey "I">
<!ENTITY enigmail.refreshKeys.label "鍵リストの更新">
<!ENTITY enigmail.refreshKeys.accesskey "R">
-<!ENTITY enigmail.perRecipientsOption.label "受け取り人毎のルールの作成">
+<!ENTITY enigmail.perRecipientsOption.label "受取人ごとのルールの作成">
-<!ENTITY enigmail.experimental.label "PGP/MIMEに対してインライン暗号化/署名機能(開発中)を使用">
+<!ENTITY enigmail.experimental.label "PGP/MIME に対して開発中のインライン暗号化/署名機能を使用">
<!ENTITY enigmail.enigmailAttachDesc.label "このメッセージには添付ファイルがあります。暗号化および署名しますか?">
-<!ENTITY enigmail.enigEncryptAttachNone.label "メッセージ本文だけ暗号化/署名し、添付ファイルはなにもしません">
-<!ENTITY enigmail.enigEncryptAttachInline.label "添付ファイルは個別に暗号化し、インラインPGPを使用してメッセージを送信します">
-<!ENTITY enigmail.enigEncryptAttachPgpMime.label "メッセージ全体を暗号化/署名し、PGP/MIMEを使用して送信します">
-<!ENTITY enigmail.encryptAttachSkipDlg.label "選択したメソッドを全ての添付に適用します">
+<!ENTITY enigmail.enigEncryptAttachNone.label "メッセージ本文だけ暗号化・署名し、添付ファイルはなにもしない">
+<!ENTITY enigmail.enigEncryptAttachInline.label "添付ファイルは個別に暗号化し、インライン PGP を使用してメッセージを送信する">
+<!ENTITY enigmail.enigEncryptAttachPgpMime.label "メッセージ全体を暗号化/署名し、PGP/MIMEを使用して送信する">
+<!ENTITY enigmail.encryptAttachSkipDlg.label "選択したメソッドをすべての添付に適用する">
<!ENTITY enigmail.ctxDecryptOpen.label "復号して開く">
<!ENTITY enigmail.ctxDecryptSave.label "復号して名前をつけて保存">
-<!ENTITY enigmail.ctxImportKey.label "OpenPGP鍵をインポート">
+<!ENTITY enigmail.ctxImportKey.label "OpenPGP鍵を読み込む">
<!ENTITY enigmail.ctxDecryptOpen.accesskey "D">
<!ENTITY enigmail.ctxDecryptSave.accesskey "C">
<!ENTITY enigmail.ctxImportKey.accesskey "I">
-<!ENTITY enigmail.amPrefTitle.label "OpenPGP オプション (Enigmail)">
-<!ENTITY enigmail.amPrefDesc.label "OpenPGPによるメッセージの暗号化/署名のサポートは、Enigmailにより提供されています。この機能を使用するには前もってGnuPG (gpg)をインストールする必要があります。">
-<!ENTITY enigmail.amPrefEnablePgp.label "このIDに対してOpenPGP(enigmail)を有効にする">
-<!ENTITY enigmail.amPrefUseFromAddr.label "このアカウントの電子メールアドレスをOpenPGPの識別に使用">
-<!ENTITY enigmail.amPrefUseKeyId.label "指定したOpenPGP鍵ID(例:0x1234ABCD)を使用:">
+<!ENTITY enigmail.amPrefTitle.label "OpenPGP オプション(Enigmail)">
+<!ENTITY enigmail.amPrefDesc.label "OpenPGP によるメッセージの暗号化/署名のサポートは Enigmail により提供されています。この機能を使用するには前もって GnuPG (gpg)をインストールする必要があります。">
+<!ENTITY enigmail.amPrefEnablePgp.label "この ID に対して OpenPGP (enigmail)を有効にする">
+<!ENTITY enigmail.amPrefUseFromAddr.label "このアカウントの電子メールアドレスを OpenPGP の識別に使用">
+<!ENTITY enigmail.amPrefUseKeyId.label "指定した OpenPGP鍵ID (例: 0x1234ABCD)を使用:">
<!ENTITY enigmail.amPrefSelectKey.label "鍵の選択...">
<!ENTITY enigmail.amPrefDefaultEncrypt.label "メッセージ作成時のデフォルトオプション">
<!ENTITY enigmail.encryptionDlg.label "OpenPGP 暗号化および署名設定">
@@ -298,12 +299,12 @@
<!ENTITY enigmail.encDlgEncrypt.accesskey "E">
<!ENTITY enigmail.encDlgSign.label "メッセージの署名">
<!ENTITY enigmail.encDlgSign.accesskey "S">
-<!ENTITY enigmail.encDlgPgpMime.label "PGP/MIMEを使用">
+<!ENTITY enigmail.encDlgPgpMime.label "PGP/MIME を使用">
<!ENTITY enigmail.encDlgPgpMime.accesskey "U">
-<!ENTITY enigmail.amPrefPgpHeader.label "OpenPGPヘッダをメールに追加">
-<!ENTITY enigmail.amPrefPgpHeader.none.label "OpenPGPヘッダをメールに追加しない">
-<!ENTITY enigmail.amPrefPgpHeader.id.label "OpenPGP鍵IDをヘッダに追加">
-<!ENTITY enigmail.amPrefPgpHeader.url.label "鍵を検索するURLをヘッダに追加:">
+<!ENTITY enigmail.amPrefPgpHeader.label "OpenPGP ヘッダをメールに追加">
+<!ENTITY enigmail.amPrefPgpHeader.none.label "OpenPGP ヘッダをメールに追加しない">
+<!ENTITY enigmail.amPrefPgpHeader.id.label "OpenPGP鍵ID をヘッダに追加">
+<!ENTITY enigmail.amPrefPgpHeader.url.label "鍵を検索する URL をヘッダに追加:">
<!ENTITY enigmail.retrieveKey.label "鍵を取得">
<!ENTITY enigmail.progressText.label "実行中:">
@@ -316,7 +317,7 @@
<!ENTITY enigmail.pgpSecurityInfo.label "OpenPGP セキュリティ情報 ...">
<!ENTITY enigmail.copySecurityInfo.label "OpenPGP セキュリティ情報をコピー">
-<!ENTITY enigmail.showPhoto.label "OpenPGP Photo IDを表示">
+<!ENTITY enigmail.showPhoto.label "OpenPGPフォトID を表示">
<!ENTITY enigmail.signSenderKey.label "鍵に署名 ...">
<!ENTITY enigmail.trustSenderKey.label "所有者の信用を付与 ...">
<!ENTITY enigmail.signSenderKeyPopup.label "送信者の鍵に署名 ...">
@@ -332,7 +333,7 @@
<!ENTITY enigmail.action.label "動作">
<!ENTITY enigmail.nextRule.label "当てはまるアドレスについては、次のルールを続いて適用">
<!ENTITY enigmail.nextAddress.label "当てはまるアドレスについては、これ以上のルールを適用しない">
-<!ENTITY enigmail.useKeys.label "以下のOpenPGP鍵を使用する:">
+<!ENTITY enigmail.useKeys.label "以下の OpenPGP鍵を使用する:">
<!ENTITY enigmail.selKeysButton.accesskey "S">
<!ENTITY enigmail.setDefaultsFor.label "各動作のデフォルト設定 ...">
<!ENTITY enigmail.encryption.label "暗号化">
@@ -340,8 +341,8 @@
<!ENTITY enigmail.never.label "常にしない">
<!ENTITY enigmail.always.label "常にする">
<!ENTITY enigmail.maybe.label "メッセージ作成時に選択されていたらする">
-<!ENTITY enigmail.singleRcptSettings.desc "(注意: もし矛盾が発生したら、「常にしない」が「常にする」より優先されます)">
-<!ENTITY enigmail.ruleEmail.label "OpenPGPルールの設定">
+<!ENTITY enigmail.singleRcptSettings.desc "(注意: もし矛盾が発生したら「常にしない」が「常にする」より優先されます)">
+<!ENTITY enigmail.ruleEmail.label "OpenPGP ルールの設定">
<!ENTITY enigmail.ruleEmail.tooltip "電子メールアドレスだけを入力してください。受取人の名前は含めないでください。\nすなわち '日本 太郎 <taro.nippon@address.net>' は無効です。">
<!ENTITY enigmail.sepratationDesc.label "(複数のメールアドレスは、スペースで区切って入力してください)">
<!ENTITY enigmail.matchDescStart.label "受取人が上記アドレス">
@@ -352,7 +353,7 @@
<!ENTITY enigmail.matchEnd.label "で終わる">
<!ENTITY enigmail.not.label "Not">
-<!ENTITY enigmail.rulesEditor.label "OpenPGP - 受取人毎のルール設定">
+<!ENTITY enigmail.rulesEditor.label "OpenPGP - 受取人ごとのルール設定">
<!ENTITY enigmail.email.label "電子メール">
<!ENTITY enigmail.pgpKeys.label "OpenPGP鍵">
<!ENTITY enigmail.sign.label "署名">
@@ -372,7 +373,7 @@
<!ENTITY enigmail.clearSearch.accesskey "C">
<!ENTITY enigmail.searchKeyDlg.label "OpenPGP鍵をダウンロード">
-<!ENTITY enigmail.searchKeyDlgCapt.label "鍵が見つかりました - 取り込むものを選択してください">
+<!ENTITY enigmail.searchKeyDlgCapt.label "鍵の検索結果の表示 - 読み込む鍵を選択してください">
<!ENTITY enigmail.created.label "作成日">
<!ENTITY enigmail.valid.label "有効">
@@ -387,8 +388,8 @@
<!ENTITY enigmail.sKeyDlg.notChecked.label "全くチェックしていません">
<!ENTITY enigmail.sKeyDlg.casualCheck.label "一応チェックしました">
<!ENTITY enigmail.sKeyDlg.carefulCheck.label "注意深くチェックしました">
-<!ENTITY enigmail.sKeyDlg.createLocal.label "ローカルに生成(書き出し不可)">
-<!ENTITY enigmail.sKeyDlg.alreadySigned.label "注意:いくつかの鍵は、署名用に選択した鍵で署名済みかもしれません!">
+<!ENTITY enigmail.sKeyDlg.createLocal.label "ローカル署名(エクスポート不可)">
+<!ENTITY enigmail.sKeyDlg.alreadySigned.label "注意:いくつかの鍵は、署名用に選択した鍵で署名済みかもしれません!">
<!ENTITY enigmail.addUidDlg.title "OpenPGP - ユーザーIDの追加">
<!ENTITY enigmail.addUidDlg.name.label "名前">
@@ -398,11 +399,11 @@
<!ENTITY enigmail.keyTrust.title "OpenPGP - 所有者の信用付与">
<!ENTITY enigmail.keyTrust.trustKey.label "信用する鍵:">
<!ENTITY enigmail.keyTrust.trustLevel.label "どのくらい鍵を信用しますか?">
-<!ENTITY enigmail.keyTrust.dontKnow.label "わからない">
+<!ENTITY enigmail.keyTrust.dontKnow.label "知らない、または何とも言えない">
<!ENTITY enigmail.keyTrust.noTrust.label "信用しない">
-<!ENTITY enigmail.keyTrust.marginalTrust.label "ある程度信用">
-<!ENTITY enigmail.keyTrust.fullTrust.label "十分に信用">
-<!ENTITY enigmail.keyTrust.ultimateTrust.label "究極的に信用">
+<!ENTITY enigmail.keyTrust.marginalTrust.label "ある程度信用する">
+<!ENTITY enigmail.keyTrust.fullTrust.label "完全に信用する">
+<!ENTITY enigmail.keyTrust.ultimateTrust.label "絶対的に信用する">
<!ENTITY enigmail.keyMan.title "OpenPGP鍵の管理">
<!ENTITY enigmail.keyMan.close.label "ウインドウを閉じる">
@@ -415,7 +416,7 @@
<!ENTITY enigmail.keyMan.fileMenu.label "ファイル">
<!ENTITY enigmail.keyMan.editMenu.label "編集">
<!ENTITY enigmail.keyMan.viewMenu.label "表示">
-<!ENTITY enigmail.keyMan.keyserverMenu.label "鍵サーバ">
+<!ENTITY enigmail.keyMan.keyserverMenu.label "鍵サーバー">
<!ENTITY enigmail.keyMan.generateMenu.label "生成">
<!ENTITY enigmail.keyMan.fileMenu.accesskey "F">
@@ -424,9 +425,9 @@
<!ENTITY enigmail.keyMan.keyserverMenu.accesskey "K">
<!ENTITY enigmail.keyMan.generateMenu.accesskey "G">
-<!ENTITY enigmail.keyMan.importFromFile.label "鍵をファイルから取り込む">
+<!ENTITY enigmail.keyMan.importFromFile.label "鍵をファイルから読み込む">
<!ENTITY enigmail.keyMan.importFromServer.label "鍵の検索">
-<!ENTITY enigmail.keyMan.importFromClipbrd.label "クリップボードから鍵を取り込む">
+<!ENTITY enigmail.keyMan.importFromClipbrd.label "クリップボードから鍵を読み込む">
<!ENTITY enigmail.keyMan.exportToFile.label "ファイルへ鍵を書き出す">
<!ENTITY enigmail.keyMan.sendKeys.label "公開鍵をメールで送る">
<!ENTITY enigmail.keyMan.uploadToServer.label "公開鍵をアップロード">
@@ -434,20 +435,20 @@
<!ENTITY enigmail.keyMan.ctxExportToFile.label "鍵をファイルへ書き出す">
<!ENTITY enigmail.keyMan.ctxUploadToServer.label "鍵サーバへ公開鍵をアップロード">
<!ENTITY enigmail.keyMan.ctxCopyToClipbrd.label "公開鍵をクリップボードにコピー">
-<!ENTITY enigmail.keyMan.refreshKey.label "公開鍵をリフレッシュする">
-<!ENTITY enigmail.keyMan.refreshSelKeys.label "選択した公開鍵をリフレッシュする">
-<!ENTITY enigmail.keyMan.refreshAllKeys.label "全ての公開鍵をリフレッシュする">
-<!ENTITY enigmail.keyMan.ctxRefreshKey.label "鍵サーバから公開鍵をリフレッシュ">
+<!ENTITY enigmail.keyMan.refreshKey.label "公開鍵を更新する">
+<!ENTITY enigmail.keyMan.refreshSelKeys.label "選択した公開鍵を更新する">
+<!ENTITY enigmail.keyMan.refreshAllKeys.label "すべての公開鍵を更新する">
+<!ENTITY enigmail.keyMan.ctxRefreshKey.label "鍵サーバから公開鍵を更新">
<!ENTITY enigmail.keyMan.reload.label "鍵キャッシュの再読込">
-<!ENTITY enigmail.keyMan.addUid.label "ユーザIDを追加">
-<!ENTITY enigmail.keyMan.manageUid.label "ユーザIDの設定">
+<!ENTITY enigmail.keyMan.addUid.label "ユーザーIDを追加">
+<!ENTITY enigmail.keyMan.manageUid.label "ユーザーIDの設定">
<!ENTITY enigmail.keyMan.changePwd.label "パスフレーズの変更">
<!ENTITY enigmail.keyMan.delKey.label "鍵を削除">
<!ENTITY enigmail.keyMan.revokeKey.label "鍵を失効させる">
<!ENTITY enigmail.keyMan.keyProps.label "鍵のプロパティ">
<!ENTITY enigmail.keyMan.viewPhoto.label "フォトID">
-<!ENTITY enigmail.keyMan.ctxViewPhoto.label "フォトIDを表示">
+<!ENTITY enigmail.keyMan.ctxViewPhoto.label "フォトID を表示">
<!ENTITY enigmail.keyMan.viewSig.label "署名">
<!ENTITY enigmail.keyMan.ctxViewSig.label "署名を表示">
<!ENTITY enigmail.keyMan.keyType.label "タイプ">
@@ -455,9 +456,9 @@
<!ENTITY enigmail.keyMan.ownerTrust.label "所有者による信用度">
<!ENTITY enigmail.keyMan.stopTransfer.label "信用するのを止める">
<!ENTITY enigmail.keyMan.fingerprint.label "フィンガープリント">
-<!ENTITY enigmail.keyMan.selectAll.label "全ての鍵を選択">
+<!ENTITY enigmail.keyMan.selectAll.label "すべての鍵を選択">
-<!ENTITY enigmail.keyMan.filter.label "次の文字列を含むユーザIDか鍵IDだけを表示:">
+<!ENTITY enigmail.keyMan.filter.label "次の文字列を含むユーザーID か鍵ID だけを表示:">
<!ENTITY enigmail.keyMan.clearFilter.label "クリア">
<!ENTITY enigmail.keyMan.clearFilter.accesskey "C">
@@ -498,16 +499,16 @@
<!ENTITY enigmail.viewKeySigDlg.sigForKey.label "鍵に使用する署名:">
<!ENTITY enigmail.viewKeySigDlg.sigType.label "署名タイプ">
-<!ENTITY enigmail.manageUidDlg.title "主に使うユーザIDの変更">
+<!ENTITY enigmail.manageUidDlg.title "主に使うユーザーIDの変更">
<!ENTITY enigmail.manageUidDlg.affectedKey.label "変更する鍵:">
-<!ENTITY enigmail.manageUidDlg.availableUid.label "利用可能なユーザID:">
+<!ENTITY enigmail.manageUidDlg.availableUid.label "利用可能なユーザーID:">
<!ENTITY enigmail.manageUidDlg.addUid.label "追加">
<!ENTITY enigmail.manageUidDlg.deleteUid.label "削除">
<!ENTITY enigmail.manageUidDlg.revokeUid.label "失効">
<!ENTITY enigmail.manageUidDlg.setPrimary.label "主に使用">
<!ENTITY enigmail.keyDetails.title "鍵のプロパティ">
-<!ENTITY enigmail.keyDetails.userId.label "主に使うユーザID">
+<!ENTITY enigmail.keyDetails.userId.label "主に使うユーザーID">
<!ENTITY enigmail.keyDetails.keyId.label "鍵ID">
<!ENTITY enigmail.keyDetails.ID.label "ID">
<!ENTITY enigmail.keyDetails.keyType.label "タイプ">
@@ -522,7 +523,7 @@
<!ENTITY enigmail.cardDetails.title "OpenPGP スマートカード詳細設定">
<!ENTITY enigmail.cardDetails.cardMenu.label "スマートカード">
-<!ENTITY enigmail.cardDetails.adminPin.label "PINの変更">
+<!ENTITY enigmail.cardDetails.adminPin.label "PIN の変更">
<!ENTITY enigmail.cardDetails.genCardKey.label "鍵の生成">
<!ENTITY enigmail.cardDetails.vendor.label "製造者">
@@ -530,18 +531,11 @@
<!ENTITY enigmail.cardDetails.name.label "名・姓">
<!ENTITY enigmail.cardDetails.lang.label "言語">
<!ENTITY enigmail.cardDetails.sex.label "性別">
-<!ENTITY enigmail.cardDetails.url.label "公開鍵のURL">
-<!ENTITY enigmail.cardDetails.login.label "ログインデータ">
-<!ENTITY enigmail.cardDetails.vendor.label "製造者">
-<!ENTITY enigmail.cardDetails.serial.label "シリアルナンバー">
-<!ENTITY enigmail.cardDetails.name.label "名・姓">
-<!ENTITY enigmail.cardDetails.lang.label "言語">
-<!ENTITY enigmail.cardDetails.sex.label "性別">
-<!ENTITY enigmail.cardDetails.url.label "公開鍵のURL">
+<!ENTITY enigmail.cardDetails.url.label "公開鍵の URL">
<!ENTITY enigmail.cardDetails.login.label "ログインデータ">
-<!ENTITY enigmail.cardDetails.forcepin.label "署名時のPIN認証">
-<!ENTITY enigmail.cardDetails.maxpinlen.label "PINの最大文字数">
-<!ENTITY enigmail.cardDetails.pinretry.label "残りPIN入力可能回数">
+<!ENTITY enigmail.cardDetails.forcepin.label "署名時の PIN 認証">
+<!ENTITY enigmail.cardDetails.maxpinlen.label "PIN の最大文字数">
+<!ENTITY enigmail.cardDetails.pinretry.label "残り PIN 入力可能回数">
<!ENTITY enigmail.cardDetails.sigcount.label "署名回数">
<!ENTITY enigmail.cardDetails.sigKey.label "署名用の鍵">
<!ENTITY enigmail.cardDetails.keyCreated.label "生成日">
@@ -565,119 +559,118 @@
<!ENTITY enigmail.genCardKey.backupKey.label "カードの外に鍵をバックアップする">
<!ENTITY enigmail.genCardKey.desc "<a class='enigmailStrong'>注意: 鍵生成には数分かかることがあります。</a>鍵生成中はアプリケーションを終了しないでください。終了時にはお知らせします。">
-<!ENTITY enigmail.cardPin.title "スマートカードのPINの変更">
+<!ENTITY enigmail.cardPin.title "スマートカードの PIN の変更">
<!ENTITY enigmail.cardPin.action.label "スマートカードの">
-<!ENTITY enigmail.cardPin.changePin.label "PINを変更する">
-<!ENTITY enigmail.cardPin.changeAdmPin.label "管理者PINを変更する">
-<!ENTITY enigmail.cardPin.unblockPin.label "PINのブロックを解除する">
-<!ENTITY enigmail.cardPin.currAdmPin.label "現在の管理者PIN">
-<!ENTITY enigmail.cardPin.newAdminPin.label "新しい管理者PIN">
-<!ENTITY enigmail.cardPin.adminPinRepeat.label "新しい管理者PIN(もう一度)">
-<!ENTITY enigmail.cardPin.currPin.label "現在のPIN">
-<!ENTITY enigmail.cardPin.newPin.label "新しいPIN">
-<!ENTITY enigmail.cardPin.pinRepeat.label "新しいPIN(もう一度)">
+<!ENTITY enigmail.cardPin.changePin.label "PIN を変更する">
+<!ENTITY enigmail.cardPin.changeAdmPin.label "管理者 PIN を変更する">
+<!ENTITY enigmail.cardPin.unblockPin.label "PIN のブロックを解除する">
+<!ENTITY enigmail.cardPin.currAdmPin.label "現在の管理者 PIN">
+<!ENTITY enigmail.cardPin.newAdminPin.label "新しい管理者 PIN">
+<!ENTITY enigmail.cardPin.adminPinRepeat.label "新しい管理者 PIN (もう一度)">
+<!ENTITY enigmail.cardPin.currPin.label "現在の PIN">
+<!ENTITY enigmail.cardPin.newPin.label "新しい PIN">
+<!ENTITY enigmail.cardPin.pinRepeat.label "新しい PIN (もう一度)">
-<!ENTITY enigmail.changePasswd.title "OpenPGPパスフレーズの変更">
+<!ENTITY enigmail.changePasswd.title "OpenPGP パスフレーズの変更">
<!ENTITY enigmail.changePasswd.currPasswd.label "現在のパスフレーズ">
<!ENTITY enigmail.changePasswd.newPasswd.label "新しいパスフレーズ">
-<!ENTITY enigmail.changePasswd.repeatPasswd.label "新しいパスフレーズ(もう一度)">
+<!ENTITY enigmail.changePasswd.repeatPasswd.label "新しいパスフレーズ(もう一度)">
<!ENTITY enigmail.setupWiz.title "OpenPGP セットアップ ウィザード">
<!ENTITY enigmail.setupWiz.yes "はい">
<!ENTITY enigmail.setupWiz.no "いいえ">
-<!ENTITY enigmail.setupWiz.pgWelcome.desc "このウィザードは今すぐOpenPGPを使い始めるお手伝いをします。
+<!ENTITY enigmail.setupWiz.pgWelcome.desc "このウィザードは今すぐ OpenPGP を使い始めるお手伝いをします。
以降のいくつかの画面ですべての項目を設定する為にいくつか質問をします。
<html:br/><html:br/>
全般的に容易にするために、設定に関してある仮定をしています。
これらの仮定は、設定に関して混乱させることなく通常の利用者に対して高度なセキュリティを提供します。
- もちろん、これら全ての設定はウィザード終了後に変更することが出来ます。
- OpenPGPの機能の詳細はヘルプメニューを利用するかもしくは
+ もちろん、これらすべての設定はウィザード終了後に変更することができます。
+ OpenPGP の機能の詳細はヘルプメニューを利用するかもしくは
<a class='enigmailLink'><html:a
- href='http://enigmail.mozdev.org/'>EnigmailのWEBサイト(英語)</html:a></a>を参照してください。
+ href='http://enigmail.mozdev.org/'>Enigmail の WEB サイト(英語)</html:a></a>を参照してください。
<html:br/><html:br/>
もし、このウィザードの使用にあたって何か不都合があれば、どうぞ
<a class='enigmailLink'><html:a
href='mailto:enigmail@mozdev.org'>電子メールで問い合わせ(英語)</html:a></a>をしてください。
<html:br/><html:br/>
- このウィザードは、Enigmailをインストール後の最初の一回のみ利用できます。
- 以後、このウィザードが、もしくはメニューから起動することはありません。
+ このウィザードは、Enigmail をインストール後の最初の一回のみ利用できます。
+ 以後、このウィザードが現れる、もしくはメニューから起動することはありません。
<html:br/><html:br/>
- この度はEnigmail OpenPGPを選択いただきありがとうございます。">
+ この度は Enigmail OpenPGP を選択いただきありがとうございます。">
<!ENTITY enigmail.setupWiz.pgWelcome.startNow "ウィザードを使用して今すぐ設定しますか?">
<!ENTITY enigmail.setupWiz.pgWelcome.yes "はい、ウィザードを使用して利用開始します。">
<!ENTITY enigmail.setupWiz.pgWelcome.no "いいえ、手動で設定します。">
-<!ENTITY enigmail.setupWiz.pgSelectId.title "IDの選択">
-<!ENTITY enigmail.setupWiz.pgSelectId.subtitle "OpenPGPで使用するアカウントもしくはIDの選択">
-<!ENTITY enigmail.setupWiz.pgSelectId.desc "OpenPGPの設定は、アカウントもしくはID毎に設定出来ます。
- デフォルトでOpenPGPはあなたの全てのアカウントおよびIDで動作するように設定します。
- もし、それを望まないのであれば、OpenPGPで使用したい特定のアカウントもしくはIDを以下から選択してください。">
-<!ENTITY enigmail.setupWiz.pgSelectId.allIds "全てのIDに対してOpenPGPを設定します">
-<!ENTITY enigmail.setupWiz.pgSelectId.selectIds "次のIDのみOpenPGPを設定します:">
-<!ENTITY enigmail.setupWiz.pgSelectId.note "<a class='enigmailStrong'>注意:</a> OpenPGP は、有効無効に関わらず全ての
- アカウントもしくはID宛のメールの署名を検証します。">
+<!ENTITY enigmail.setupWiz.pgSelectId.title "ID の選択">
+<!ENTITY enigmail.setupWiz.pgSelectId.subtitle "OpenPGP で使用するアカウントもしくは ID の選択">
+<!ENTITY enigmail.setupWiz.pgSelectId.desc "OpenPGP の設定は、アカウントもしくは ID ごとに設定できます。
+ デフォルトで OpenPGP はあなたのすべてのアカウントおよび ID で動作するように設定します。
+ もし、それを望まないのであれば、OpenPGP で使用したい特定のアカウントもしくは ID を以下から選択してください。">
+<!ENTITY enigmail.setupWiz.pgSelectId.allIds "すべての ID に対して OpenPGP を設定します">
+<!ENTITY enigmail.setupWiz.pgSelectId.selectIds "次の ID にのみ OpenPGP を設定します:">
+<!ENTITY enigmail.setupWiz.pgSelectId.note "<a class='enigmailStrong'>注意:</a> OpenPGP は、有効無効に関わらずすべての
+ アカウントもしくは ID 宛のメールの署名を検証します。">
<!ENTITY enigmail.setupWiz.pgSign.title "署名">
<!ENTITY enigmail.setupWiz.pgSign.subtitle "送信メールへのデジタル署名">
-<!ENTITY enigmail.setupWiz.pgSign.desc "OpenPGP を使用することにより、電子メールにデジタル署名する事が出来ます。これは、手紙にする手書きのサインや署名の電子版のような物であり、第三者が電子メールが送信者本人から来た事に確信を持てます。全ての送信メールに署名をすることは良い習慣と言えます。
+<!ENTITY enigmail.setupWiz.pgSign.desc "OpenPGP を使用することにより、電子メールにデジタル署名をする事ができます。これは、手紙にする手書きのサインや署名の電子版のような物であり、第三者が電子メールが送信者本人から送られた事に確信を持てます。すべての送信メールに署名をすることは良い習慣と言えます。
<html:br/><html:br/>
- 電子メールの署名を検証するためには、OpenPGPが利用可能なメールソフトが必要です。もし、そのようなメールソフトを持っていない場合、それでも電子メールを読むことは出来ますが、署名はただの添付ファイルもしくは本文の周りについた無意味なテキストとして表示される為、受信者によっては困惑するでしょう。ここでは、全ての送信メールを署名するか、特定の受取人に対して署名をしないか選択出来ます。">
-<!ENTITY enigmail.setupWiz.pgSign.signAllMsg "全ての送信メールをデフォルトで署名しますか?">
-<!ENTITY enigmail.setupWiz.pgSign.yesSign "はい、全ての送信メールに署名します。">
-<!ENTITY enigmail.setupWiz.pgSign.noSign "いいえ、署名が必要なメールには受取人毎の設定を利用して署名します。">
+ 電子メールの署名を検証するためには、OpenPGP が利用可能なメールソフトが必要です。もし、そのようなメールソフトを持っていない場合、それでも電子メールを読むことはできますが、署名はただの添付ファイルもしくは本文の周りについた無意味なテキストとして表示されるため、受取人によっては困惑するでしょう。ここでは、すべての送信メールを署名するか、特定の受取人に対して署名をしないか選択できます。">
+<!ENTITY enigmail.setupWiz.pgSign.signAllMsg "すべての送信メールをデフォルトで署名しますか?">
+<!ENTITY enigmail.setupWiz.pgSign.yesSign "はい、すべての送信メールに署名します">
+<!ENTITY enigmail.setupWiz.pgSign.noSign "いいえ、署名が必要なメールには受取人ごとの設定を利用して署名します">
<!ENTITY enigmail.setupWiz.pgEnc.title "暗号化">
<!ENTITY enigmail.setupWiz.pgEnc.subtitle "送信メールの暗号化">
-<!ENTITY enigmail.setupWiz.pgEnc.desc "OpenPGP を使用することにより、電子メール本文及び添付ファイルを暗号化する事が出来ます。
- 暗号化は、手紙を封筒の中に入れるような物です。これにより、非公開にすることが出来ます。
+<!ENTITY enigmail.setupWiz.pgEnc.desc "OpenPGP を使用することにより、電子メール本文及び添付ファイルを暗号化する事ができます。
+ 暗号化は、手紙を封筒の中に入れるような物です。これにより、非公開にすることができます。
つまり暗号化は秘密のメッセージだけに使用するのではなく、
- はがきで送りたく無いような全てのメッセージに対しても利用可能です。
+ はがきで送りたくないようなすべてのメッセージに対しても利用可能です。
<html:br/><html:br/>
技術的には暗号化は、南京錠のように働き、受取人のみが鍵を持っているような物です。
- 署名と異なり、暗号化を使用するためには全ての受取人がOpenPGPを使用する必要があります。
- また、メールを送信する前に全ての受取人の公開鍵を入手しておく必要があります
- (公開鍵は先の南京錠の施錠用鍵となります)。
+ 署名と異なり、暗号化を使用するためにはすべての受取人が OpenPGP を使用する必要があります。
+ また、メールを送信する前にすべてての受取人の公開鍵を入手しておく必要があります
+ (公開鍵は先の南京錠の施錠用の鍵となります)。
<html:br/><html:br/>
- もし、ほとんどの連絡相手の公開鍵が無ければ、デフォルトで暗号化するのは避けた方が良いでしょう。">
+ もし、ほとんどの連絡相手の公開鍵がなければ、デフォルトで暗号化するのは避けた方が良いでしょう。">
<!ENTITY enigmail.setupWiz.pgEnc.encryptAllMsg "デフォルトで送信メールを暗号化しますか?">
<!ENTITY enigmail.setupWiz.pgEnc.yesEncrypt "はい、ほとんどの受取人の公開鍵を入手済みです">
-<!ENTITY enigmail.setupWiz.pgEnc.noEncrypt "いいえ、公開鍵を入手している受取人毎にルールを設定をします。">
+<!ENTITY enigmail.setupWiz.pgEnc.noEncrypt "いいえ、公開鍵を入手している受取人ごとにルールを設定をします">
<!ENTITY enigmail.setupWiz.pgSettings.title "設定">
-<!ENTITY enigmail.setupWiz.pgSettings.subtitle "OpenPGPがより正確に動作するための電子メールの設定">
-<!ENTITY enigmail.setupWiz.pgSettings.desc "このウィザードでは、お使いのPCで署名および暗号化が正しく動作するように、電子メールの設定を変える事が出来ます。
+<!ENTITY enigmail.setupWiz.pgSettings.subtitle "OpenPGP がより正確に動作するための電子メールの設定">
+<!ENTITY enigmail.setupWiz.pgSettings.desc "このウィザードでは、お使いの PC で署名および暗号化が正しく動作するように、電子メールの設定を変える事ができます。
これらの設定は、おそらく注意を払われることのない技術的なことがほとんどですが、
- 一つ重要な設定として、デフォルトで(HTML形式ではなく)テキスト形式でメールを作成する事が挙げられます。">
-<!ENTITY enigmail.setupWiz.pgSettings.changePref "お使いのPCでOpenPGPがより正確に動作させるために、いくつかのデフォルト設定を変更しますか?">
+ 一つ重要な設定として、デフォルトで(HTML形式ではなく)テキスト形式でメールを作成する事があげられます。">
+<!ENTITY enigmail.setupWiz.pgSettings.changePref "お使いの PC で OpenPGP がより正確に動作するように、いくつかのデフォルト設定を変更しますか?">
<!ENTITY enigmail.setupWiz.pgSettings.details "詳細...">
<!ENTITY enigmail.setupWiz.pgKeySel.title "鍵の選択">
-<!ENTITY enigmail.setupWiz.pgKeySel.subtitle "電子メールを署名/暗号化に使用する鍵の選択">
-<!ENTITY enigmail.setupWiz.pgKeySel.desc "OpenPGP鍵を既にお持ちのようです。電子メールの署名・暗号化にそれらをご利用していただくことも、
- 新規に作成する事も出来ます。
- ">
+<!ENTITY enigmail.setupWiz.pgKeySel.subtitle "電子メールを署名・暗号化に使用する鍵の選択">
+<!ENTITY enigmail.setupWiz.pgKeySel.desc "OpenPGP鍵を既にお持ちのようです。電子メールの署名/暗号化にそれらをご利用していただくことも、
+ 新規に作成する事もできます。">
<!ENTITY enigmail.setupWiz.pgKeySel.createKey "新規に鍵のペアを作成しますか?">
-<!ENTITY enigmail.setupWiz.pgKeySel.newKey "電子メール署名・暗号化に使用する鍵のペアを新規に作成します。">
-<!ENTITY enigmail.setupWiz.pgKeySel.useExistingKey "電子メール署名・暗号化に使用する鍵のペアを以下から選択します:">
+<!ENTITY enigmail.setupWiz.pgKeySel.newKey "電子メール署名/暗号化に使用する鍵のペアを新規に作成します">
+<!ENTITY enigmail.setupWiz.pgKeySel.useExistingKey "電子メール署名/暗号化に使用する鍵のペアを以下から選択します:">
<!ENTITY enigmail.setupWiz.pgKeyCreate.title "鍵の生成">
<!ENTITY enigmail.setupWiz.pgKeyCreate.subtitle "電子メールの署名/暗号化に使用する鍵の生成">
-<!ENTITY enigmail.setupWiz.pgKeyCreate.desc1 "電子メールを暗号化もしくは、暗号化された電子メールを読むためには、鍵のペアが必要です。
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc1 "電子メールの暗号化もしくは、暗号化された電子メールを読むためには、鍵のペアが必要です。
鍵のペアとは、公開鍵と秘密鍵の二つです。">
-<!ENTITY enigmail.setupWiz.pgKeyCreate.desc2 "公開鍵は全ての電子メールをやりとりする人に公開する必要があります。公開鍵によって、受取人が署名を検証したり、メールを暗号化して送付してもらうことが出来ます。
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc2 "公開鍵はすべての電子メールをやりとりする人に公開する必要があります。公開鍵によって、受取人が署名を検証したり、メールを暗号化して送付してもらうことができます。
その一方、秘密鍵は非公開にしなければなりません。どこかへやったり、保護されていないところへ放っておいてはいけません。
そのような事をすると、暗号化して送付された電子メールを第三者に読まれてしまいますし、またあなたになりすまして誰かが電子メールを送信する事も可能となってしまいます。
- 非公開である故、パスフレーズによって保護されます。">
+ 非公開であるため、パスフレーズによって保護されます。">
<!ENTITY enigmail.setupWiz.pgKeyCreate.passRepeat "確認のため、もう一度パスフレーズを入力してください">
<!ENTITY enigmail.setupWiz.pgSummary.title "要約">
-<!ENTITY enigmail.setupWiz.pgSummary.subtitle "ウィザードは以下の設定を反映しようとしています。確認してください。">
+<!ENTITY enigmail.setupWiz.pgSummary.subtitle "ウィザードは以下の設定を反映しようとしています。確認してください">
<!ENTITY enigmail.setupWiz.pgSummary.desc "設定はほとんど終了しました。「次へ」ボタンをクリックすると、ウィザードは以下の事を行います:">
<!ENTITY enigmail.setupWiz.pgKeygen.title "鍵の生成">
<!ENTITY enigmail.setupWiz.pgKeygen.subtitle "現在、鍵を生成中です">
<!ENTITY enigmail.setupWiz.pgComplete.title "お疲れさまでした">
-<!ENTITY enigmail.setupWiz.pgComplete.desc "OpenPGP が利用可能となりました。<html:br/><html:br/>この度は、Enigmailをご利用いただきありがとうございます。">
+<!ENTITY enigmail.setupWiz.pgComplete.desc "OpenPGP が利用可能となりました。<html:br/><html:br/>この度は、Enigmail をご利用いただきありがとうございます。">
<!ENTITY enigmail.setupWiz.details.title "設定">
<!ENTITY enigmail.setupWiz.details.subtitle "アプリケーションの設定を変更">
-<!ENTITY enigmail.setupWiz.details.imapOnDemand "MIMEパートの個別ダウンロード機能(IMAP)を無効">
+<!ENTITY enigmail.setupWiz.details.imapOnDemand "MIME パートの個別ダウンロード機能(IMAP)を無効">
<!ENTITY enigmail.setupWiz.details.changingPrefs "この設定ウィザードは以下の設定を変更します:">
<!ENTITY enigmail.setupWiz.details.noFlowedMsg "flowed text (RFC 2646)を無効にする">
<!ENTITY enigmail.setupWiz.details.viewAsPlain "テキストとしてメッセージ本文を表示する">
-<!ENTITY enigmail.setupWiz.details.8bitEncoding "送信メッセージを8ビットでエンコーディングする">
-<!ENTITY enigmail.setupWiz.details.noComposeHTML "メッセージ作成にHTML形式を使用しない">
+<!ENTITY enigmail.setupWiz.details.8bitEncoding "送信メッセージを 8 ビットでエンコーディングする">
+<!ENTITY enigmail.setupWiz.details.noComposeHTML "メッセージ作成に HTML 形式を使用しない">
<!ENTITY enigmail.setupWiz.pgNoStart.title "ウィザードを中止">
-<!ENTITY enigmail.setupWiz.pgNoStart.desc "OpenPGPの設定にウィザードを使用致しません。
- <html:br/><html:br/>この度は、Enigmailをご利用いただきありがとうございます。">
+<!ENTITY enigmail.setupWiz.pgNoStart.desc "OpenPGP の設定にウィザードを使用しません。
+ <html:br/><html:br/>この度は、Enigmail をご利用いただきありがとうございます。">
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/enigmail.properties
^
|
@@ -13,106 +13,105 @@
dlgKeepSetting=設定を保存し、次回から尋ねない
dlgNoPrompt=次回からこのダイアログを表示しない
-configNow=バージョン %S のenigmailを直ちに設定しますか?
-configEnigmail=Enigmailを設定しますか?
+configNow=バージョン %S の Enigmail を直ちに設定しますか?
+configEnigmail=Enigmail を設定しますか?
repeatPrefix=\n\nこの警告は %S
repeatSuffixSingular=回繰り返されます。
repeatSuffixPlural=回繰り返されます。
-noRepeat=\n\nEnigmailをアップグレードするまで、この警告は繰り返されません。
+noRepeat=\n\nEnigmail をアップグレードするまで、この警告は繰り返されません。
noLogDir=ログファイルを作るためには、詳細設定の「ログディレクトリ」を設定してください。
noLogFile=ログファイルはまだ作られていません!
-restartForLog=ログファイルを作るためには、アプリケーションをを再起動してください。
-pgpNotSupported=EnigmailをPGP 6.xと共に使用しています。\n\n 残念ながら、 PGP 6.xはEnigmailを誤動作させる問題を多数抱えています。その為、EnigmailはPGP 6.xをもはやサポートしていません。GnuPG (GPG)を代わりに使用してください。\nもし、GnuPGへの切り替えにヘルプが必要でしたら、Enigmailのホームページのhelpを参照してください。
-avoidInitErr=以後この警告を恒久的に表示しない為には、問題を修正するか、Enigmail->PreferencesメニューからEnigmailをアンインストールしてください。
+restartForLog=ログファイルを作るためには、アプリケーションを再起動してください。
+pgpNotSupported=Enigmail を PGP 6.x と共に使用しています。\n\n残念ながら、PGP 6.x は Enigmail を誤動作させる問題を多数抱えています。その為、Enigmail は PGP 6.x をサポートしていません。GnuPG (GPG)を代わりに使用してください。\nもし、GnuPG への切り替えにヘルプが必要でしたら、Enigmail のホームページのヘルプを参照してください。
+avoidInitErr=以後この警告を恒久的に表示しないためには、問題を修正するか、Enigmail -> Preferences メニューから Enigmail をアンインストールしてください。
passphraseCleared=パスフレーズを消去しました
-keyGeneration=OpenPGP鍵生成
+keyGeneration=OpenPGP 鍵生成
noPhotoAvailable=写真がありません
# Strings in enigmailAbout.js
-usingVersion=実行中のEnigmail は、バージョン %S です。
-versionWarning=注意:Enigmimeバージョン %S は互換性がありません
-enigmimeWarning=注意: Enigmimeモジュールが有効でありません
+usingVersion=実行中の Enigmail は、バージョン %S です。
+versionWarning=注意:Enigmime バージョン %S は互換性がありません
+enigmimeWarning=注意: Enigmime モジュールが有効でありません
-usingAgent= %S は %S を用いて暗号化/復号をしています。
-agentError=エラー: Enigmimeサービスにアクセスできませんでした!
+usingAgent= %S は %S を用いて暗号化・復号をしています。
+agentError=エラー: Enigmime サービスにアクセスできませんでした!
# Strings in enigmailKeygen.js
-accessError=Enigmailサービスにアクセスできませんでした。
-onlyGPG=鍵の生成はGnuPGでのみ利用できます。(PGPでは動作しません!)
+accessError=Enigmail サービスにアクセスできませんでした。
+onlyGPG=鍵の生成は GnuPG でのみ利用できます(PGP では動作しません!)。
-keygenComplete=鍵の生成が終了しました。<%S>が署名に利用されます。
-revokeCertRecommended=失効証明書を作成することを強く推奨します。失効証明書は鍵を無効にしたい時、例えば、秘密鍵を無くした時や、信用を失った時に利用できます。そのような失効証明書を今作成しますか?
+keygenComplete=鍵の生成が終了しました。<%S> が署名に利用されます。
+revokeCertRecommended=失効証明書を作成することを強く推奨します。失効証明書は鍵を無効にしたい時、例えば、秘密鍵をなくした時や、信用を失った時に利用できます。そのような失効証明書を今作成しますか?
genCompleteNoSign=鍵の生成が終了しました。
genGoing=鍵の生成が既に実行中です。
passNoMatch=パスフレーズが一致しませんでした。再度入力してください。
passCheckBox=鍵に対してパスフレーズを設定しない場合は、チェックしてください。
-passUserName=ユーザ名をこのIDに指定してください。
+passUserName=ユーザ名をこの ID に指定してください。
passCharProblem=パスフレーズに特殊記号を使用しています。残念ながら、他のアプリケーションでトラブルの元となります。パスフレーズは、次の文字を使用して設定してください:\na-z A-Z 0-9 /.;:-,!?(){}[]%*
changePassFailed=パスフレーズの変更に失敗しました
removePassphrase=新しいパスフレーズを生成せずに現在のパスフレーズを削除しますか?
-keyConfirm='%S'の公開鍵と秘密鍵を生成しますか?
+keyConfirm='%S' の公開鍵と秘密鍵を生成しますか?
keyAbort=鍵の生成を中止しますか?
-expiryTooLong=100年以上の有効期間がある鍵は生成出来ません。
-expiryTooShort=鍵は少なくとも1日間は有効でなければなりません。
-keyGenFailed=鍵の生成に失敗しました。詳細は、Enigmailのコンソール(メニュー OpenPGP > OpenPGPのデバッグ)を確認してください。
-keyGenNoPassphrase=no password
+expiryTooLong=100 年以上の有効期間がある鍵は生成できません。
+expiryTooShort=鍵は少なくとも 1 日間は有効でなければなりません。
+keyGenFailed=鍵の生成に失敗しました。詳細は、Enigmail のコンソール(メニュー OpenPGP -> OpenPGP のデバッグ)を確認してください。
+keyGenNoPassphrase=パスフレーズ未設定
# Strings in enigmailMessengerOverlay.js
pubKeyNeeded=署名の検証には公開鍵が必要です。
-keyImport=\n\n鍵サーバから公開鍵 %S をインポートしますか?。
+keyImport=\n\n鍵サーバーから公開鍵 %S をインポートしますか?。
keyImportError=公開鍵をインポートできませんでした\n\n
securityInfo=OpenPGP セキュリティ情報\n\n
enigHeader=Enigmail:
-enigNote=Note from OpenPGP: このメッセージの添付は署名や暗号化されていません。
-enigContentNote=OpenPGP: *このメッセージの添付は署名や暗号化されていません。*\r\n\r\n
-possiblyPgpMime=おそらく PGP/MIME で暗号化もしくは署名されています。復号ボタンを押してください
+enigNote=OpenPGP: このメッセージの添付ファイルは署名や暗号化されていません。
+enigContentNote=OpenPGP: *Attachments to this message have not been signed or encrypted*\r\n\r\n
+possiblyPgpMime=おそらく PGP/MIME で暗号化もしくは署名されています。復号ボタンを押してください。
noDecrypted=保存すべき復号したメッセージがありません!\nファイルメニューから保存を選択してください。
noMessage=保存するメッセージがありません!
-useButton=復号するには復号ボタンをクリックしてください
+useButton=復号するには復号ボタンをクリックしてください。
saveHeader=Enigmail: 復号したメッセージの保存
saveAttachmentHeader=Enigmail: 復号した添付ファイルを保存
-noTempDir=書き込み可能なテンポラリディレクトリが見つかりません。\n環境変数TEMPを適した場所に設定してください。
-attachmentPgpKey=開こうとした添付ファイル'%S'は、OpenPGP鍵ファイルのようです。\n\n鍵をインポートするにはYesをクリックしてください。Noをクリックするとブラウザウインドウで中身を確認できます。
+noTempDir=書き込み可能なテンポラリディレクトリが見つかりません。\n環境変数 TEMP を適した場所に設定してください。
+attachmentPgpKey=開こうとした添付ファイル'%S'は、OpenPGP鍵ファイルのようです。\n\n鍵をインポートするには Yes をクリックしてください。No をクリックするとブラウザウインドウで中身を確認できます。
beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* *********
endPgpPart=********** *END ENCRYPTED or SIGNED PART* **********
notePartEncrypted=OpenPGP: * Parts of the message have NOT been signed or encrypted*
noteCutMessage=OpenPGP: *Multiple message blocks found -- decryption/verification aborted*
-
decryptOkNoSig=警告\n\n復号に成功しましたが、署名は正しく検証できませんでした。
contAnyway=それでも続行しますか?
-noPgpMessage=メッセージはOpenPGPで署名も暗号化もされていません
+noPgpMessage=メッセージは OpenPGP で署名も暗号化もされていません
# Strings in enigmailMsgComposeOverlay.js
-keysToExport=エクスポートするOpenPGP鍵のユーザID(電子メールアドレス)
-keysToUse=%S に使用するOpenPGP鍵を選択してください。
+keysToExport=エクスポートする OpenPGP鍵のユーザーID (電子メールアドレス)
+keysToUse=%S に使用する OpenPGP鍵を選択してください。
pubKey=%Sの公開鍵 \n
windowLocked=作成画面がロックされています。送信は失敗しました
-sendUnencrypted=Enigmailの初期化に失敗しました。\n何もしないで平文を送信しますか?
-composeSpecifyEmail=主に使う電子メールアドレスを決めてください。それは送信メッセージを署名する際に使用されます。\n 空白にした場合、差出人アドレスが署名をする際の鍵のIDとして使用されます。
-sendingBCC=このメッセージはBCC (blind copy)での受取人が含まれています。このメッセージを暗号化した場合、すべての受取人は暗号化鍵のリストをチェックすることによりBCCでの受取人のIDを確認できるので、秘密の漏洩につながります。\n\n 構わない場合は、YESを押して先に進んでください。もしくは、NOを押して送信を中止してください。
+sendUnencrypted=Enigmail の初期化に失敗しました。\n何もしないで平文を送信しますか?
+composeSpecifyEmail=主に使う電子メールアドレスを決めてください。それは送信メッセージを署名する際に使用されます。\n空白にした場合、差出人アドレスが署名をする際の鍵の ID として使用されます。
+sendingBCC=このメッセージは BCC (blind copy)での受取人が含まれています。このメッセージを暗号化した場合、すべての受取人は暗号化鍵のリストをチェックすることにより BCC での受取人の ID を確認できるので秘密の漏洩につながります。\n\n構わない場合は、YES を押して先に進んでください。もしくは、NO を押して送信を中止してください。
sendingNews=暗号化送信は中断しました。\n\nニュースグループの受取人が含まれているため暗号化できませんでした。暗号化せずに再度このメッセージを送信してください。
-noPGPMIME=PGP/MIMEは使用できません!\n インラインPGPを署名および暗号化に使用しますか?
-hasHTML=HTMLメールの警告:\nこのメッセージはHTMLを含むと思われますが、その場合、署名/暗号化に失敗することがあります。今後にわたり回避するためには、署名付きメールを送るときには、作成/返信ボタンをSHIFTキーを押しながらクリックしてください。\n もしデフォルトで署名にしている場合は、このメールアカウントの設定で「HTML形式でメッセージを作成する」のチェックボックスからチェックをはずし、恒久的にHTMLメールを作成しないようにしてください。
-strippingHTML=メッセージに含まれるHTML形式は、署名/暗号化する時にプレーンテキストに変換されるために、失われます。それでも続けますか?
+noPGPMIME=PGP/MIME は使用できません!\nインライン PGP を署名および暗号化に使用しますか?
+hasHTML=HTML メールの警告:\nこのメッセージは HTML を含むと思われますが、その場合、署名/暗号化に失敗することがあります。今後にわたり回避するためには、署名付きメールを送るときには作成/返信ボタンを SHIFT キーを押しながらクリックしてください。\nもしデフォルトで署名にしている場合は、このメールアカウントの設定で「HTML 形式でメッセージを作成する」のチェックボックスからチェックをはずし、恒久的に HTML メールを作成しないようにしてください。
+strippingHTML=メッセージに含まれる HTML 形式は、署名・暗号化する時にプレーンテキストに変換されるために、失われます。それでも続けますか?
attachWarning=このメッセージに添付しようとしているのはローカルファイルではないので、暗号化できません。添付ファイルを暗号化するためには、まずローカルファイルとして保存してから添付してください。構わず次へ進みますか?
savingMessage=保存する前にこのメッセージを暗号化しますか?
-quotedPrintableWarn=Quoted-Printable MIME エンコーディングが送信メッセージに対して有効になっています。 これにより、暗号化や、署名の検証の動作に悪影響を及ぼす可能性があります。\n今すぐQuoted-Printable MIME エンコーディングを無効にしますか?
-minimalLineWrapping=%S 文字で改行する設定になっています。正しい暗号化及び署名には、少なくとも68文字で改行する必要があります。\n今すぐ改行文字数を68へ変更しますか?
+quotedPrintableWarn=Quoted-Printable MIME エンコーディングが送信メッセージに対して有効になっています。 これにより、暗号化や、署名の検証の動作に悪影響を及ぼす可能性があります。\n今すぐ Quoted-Printable MIME エンコーディングを無効にしますか?
+minimalLineWrapping=%S 文字で改行する設定になっています。正しい暗号化及び署名には、少なくとも 68 文字で改行する必要があります。\n今すぐ改行文字数を 68 へ変更しますか?
warning=警告
-signIconClicked=署名を手動で変更しました。これにより、このメッセージの作成中は、署名をする・しないの設定は、暗号化する・しないの設定に依存しません。
+signIconClicked=署名を手動で変更しました。これにより、このメッセージの作成中は、署名をする/しないの設定に依存しません。
sendAborted=送信が中断されました\n\n
-statPGPMIME=PGP/MIMEの
+statPGPMIME=PGP/MIME の
statSigned=署名付き
statEncrypted=暗号化
statPlain=何もしない平文の
@@ -121,19 +120,19 @@
onlineSend=%S メッセージを %S へ送信しますか?
offlineNote=オフラインです。下書きフォルダにメッセージを保存しますか?
-encryptKeysNote=注意: メッセージは次のユーザ、鍵で暗号化されます。: %S
+encryptKeysNote=注意: メッセージは次のユーザー、鍵で暗号化されます。: %S
signFailed=Enigmailエラー; 暗号化/署名に失敗しました。何もしないで平文を送信しますか?
-acctNotConfigured=このIDについてOpenPGP(Enigmail)の設定がされていないようです。\n平文のまま(暗号化しないで)送信しますか?
+acctNotConfigured=この ID について OpenPGP (Enigmail)の設定がされていないようです。\n平文のまま(暗号化しないで)送信しますか?
recipientsSelectionHdr=暗号化のための受取人を指定してください。
-configureNow=このIDに対してOpenPGP security (Enigmail)がまだ設定されていません。今すぐ設定しますか?
+configureNow=この ID に対して OpenPGP セキュリティ(Enigmail)がまだ設定されていません。今すぐ設定しますか?
signYes=メッセージを署名します
signNo=メッセージを署名しません
encryptYes=メッセージを暗号化します
encryptNo=メッセージを暗号化しません
-rulesConflict=受取人毎のルールに矛盾があります。\n%S\n\nこれらの設定でメッセージを送信しますか?
+rulesConflict=受取人ごとのルールに矛盾があります。\n%S\n\nこれらの設定でメッセージを送信しますか?
# Strings in enigmailMsgHdrViewOverlay.js
keyNeeded=公開鍵 %S が署名の検証に必要です
@@ -151,8 +150,8 @@
msgEncrypted=暗号化
msgSignedAndEnc=署名かつ暗号化
-reloadImapMessage=復号/検証するために完全なIMAPメッセージを再読込しますか?
-reloadImapError=エラー - IMAP メッセージが復号/検証するには大きすぎます。
+reloadImapMessage=復号・検証するために完全な IMAP メッセージを再読込しますか?
+reloadImapError=エラー - IMAP メッセージが復号・検証するには大きすぎます。
unverifiedSig=検証できない署名です
incompleteDecrypt=復号が完了しませんでした。
@@ -160,92 +159,91 @@
needKey=エラー - メッセージの復号に必要な鍵を選択してください。
failedDecrypt=エラー - 復号に失敗しました。
badPhrase=エラー - 無効なパスフレーズです。
-failedDecryptVerify=エラー - 復号/検証に失敗しました。
-viewInfo=; 詳細は、表示 > メッセージのセキュリティに関する情報 を確認してください。
+failedDecryptVerify=エラー - 復号・検証に失敗しました。
+viewInfo=; 詳細は、表示 -> メッセージのセキュリティに関する情報 を確認してください。
decryptedMsg=メッセージを復号
# Strings in enigmailNavigatorOverlay.js
-navEncryptError=メッセージの暗号化または/もしくは署名に失敗しました。\n
+navEncryptError=メッセージの暗号化もしくは署名に失敗しました。\n
navDecryptError=メッセージの復号に失敗しました。\n
# Strings in pref-enigmail.js
-uninstallConfirm=EnigMailに関連するすべてのファイルをMozillaコンポーネントおよびchromeディレクトリから削除しますか?\n\n警告: アプリケーションを終了し全てのウインドウをクローズします!\n\n警告:アプリケーションを終了し、すべてのウインドウが閉じます!
-uninstallFailOverlay=Enigmailのcommunicatorディレクトリにあるoverlay RDFファイルの削除に失敗しました。:chorome ディレクトリのjarファイルは削除されません。
+uninstallConfirm=Enigmail に関連するすべてのファイルを Mozilla コンポーネントおよび chrome ディレクトリから削除しますか?
+uninstallFailOverlay=Enigmail の communicator overlay RDF ファイルの削除に失敗しました。; chorome ディレクトリの jar ファイルは削除されません。
uninstallFailDelete=ファイルの削除に失敗しました
-uninstallFail=Enigmailのアンインストールに失敗しました
-uninstallSuccess=Enigmailをアンインストールしました
-testNoSvc=EnigTest: Enigmailサービスにアクセス出来ませんでした。。
+uninstallFail=Enigmail のアンインストールに失敗しました
+uninstallSuccess=Enigmail をアンインストールしました
+testNoSvc=EnigTest: Enigmail サービスにアクセスできませんでした。。
testNoEmail=EnigTest: テスト用のメールアドレスを設定してください。
-testSucceeded=Enigmailは正常に動作しています。詳細は、Enigmailメニューよりコンソールを立ち上げて確認してください。
-oldGpgVersion= Enigmailの初期化に失敗しました\n\nバージョンが %S のGnuPGを使用していますが、これは最新ではありません。EnigmailはGnuPGのバージョン1.2.5かそれよりも新しいバージョンを必要とします。GnuPGをアップグレードしてください。さもないとEnigmailは動作しません。
-jslibNeeded=この動作は、"Jslib"のバージョン %S 以上が必要です。http://jslib.mozdev.org/installation.html からダウンロード可能です。
+testSucceeded=Enigmail は正常に動作しています。詳細は、Enigmail メニューよりコンソールを立ち上げて確認してください。
+oldGpgVersion= Enigmail の初期化に失敗しました\n\nバージョンが %S の GnuPG を使用していますが、これは最新ではありません。Enigmail は GnuPG のバージョン 1.2.5 かそれよりも新しいバージョンを必要とします。GnuPG をアップグレードしてください。さもないと Enigmail は動作しません。
locateGpg=GnuPG プログラムを指定する
-invalidGpgPath=GnuPG は設定されているパスでは実行できません。OpenPGPは GnuPG のパスを再設定するか、アプリケーションを再起動するまで無効となります。
-warningsAreReset=全ての警告はリセットされました
+invalidGpgPath=GnuPG は設定されているパスでは実行できません。OpenPGP は GnuPG のパスを再設定するか、アプリケーションを再起動するまで無効となります。
+warningsAreReset=すべての警告はリセットされました
prefs.gpgFound=GnuPG が次のように見つかりました:%S
prefs.gpgNotFound=GnuPG が見つかりませんでした
-prefs.warnAskNever=警告:このオプションを有効にすると、受取人の一人にでも鍵が見つからない場合に、一切の通知もなく暗号化されなくなります。OpenPGPはこのような事が起こっても一切通知致しません。
+prefs.warnAskNever=警告: このオプションを有効にすると、受取人の一人にでも鍵が見つからない場合に、一切の通知もなく暗号化されなくなります。OpenPGP はこのようなことが起こっても一切通知しません。
# Strings used in components/enigmail.js
# (said file also re-uses some strings from above)
-enterPass=OpenPGPのパスフレーズを入力してください
-enterPassOrPin=OpenPGPのパスフレーズ、またはスマートカードのPINを入力してください
-repeatPass=もう一度OpenPGPのパスフレーズを入力してください
-rememberPass=何もしない%S分間パスフレーズを記憶します
-enterAdminPin=スマートカードの管理者PINを入力してください
-enterCardPin=スマートカードのPINを入力してください
+enterPass=OpenPGP のパスフレーズを入力してください
+enterPassOrPin=OpenPGP のパスフレーズ、またはスマートカードの PIN を入力してください
+repeatPass=もう一度 OpenPGP のパスフレーズを入力してください
+rememberPass=何もしない %S 分間パスフレーズを記憶します
+enterAdminPin=スマートカードの管理者 PIN を入力してください
+enterCardPin=スマートカードの PIN を入力してください
-notInit=エラー - Enigmail機能はまだ初期化されていません
+notInit=エラー - Enigmail 機能はまだ初期化されていません
badCommand=エラー - 暗号化コマンドは失敗しました
cmdLine=コマンドラインと出力:
notRequired=エラー - 暗号化は必要ありません
notComplete=エラー - 鍵の生成が終了していません
invalidEmail=エラー - 無効な電子メールアドレスです
noPassphrase=エラー - パスフレーズが入力されていません
-noPGPblock=エラー - 有効なOpenPGPデータブロックが見つかりません。
+noPGPblock=エラー - 有効な OpenPGP データブロックが見つかりません。
unverifiedReply=インデントされた(返信)部分がおそらく修正されています
decryptToImport=復号ボタンをクリックしてメッセージ中の公開鍵をインポートしてください
sigMismatch=エラー - 署名が一致しません
cantImport=公開鍵のインポートに失敗しました\n\n
messageSizeError=署名を検証するにはメッセージがあまりにも大きすぎます
sc.noCardAvailable=スマートカードが見つかりません\nスマートカードを挿入して、もう一度操作を行ってください。
-sc.noReaderAvailable=スマートカードリーダが使用できません\nカードリーダーを接続し、スマートカードを挿入して、もう一度操作を行ってください。
+sc.noReaderAvailable=スマートカードリーダが使用できません\nカードリーダを接続し、スマートカードを挿入して、もう一度操作を行ってください。
-gpgNotFound=GnuPGプログラムを'%S'に見つけることが出来ませんでした。\nEnigmailの設定で、GnuPG実行パスが正しく設定されているかどうか確認してください。
-gpgNotInPath=GnuPGをパスの中から見つけられませんでした。\nEnigmailの設定で、GnuPG実行パスが正しく設定されているかどうか確認してください。
+gpgNotFound=GnuPG プログラムを '%S' に見つけることができませんでした。\nEnigmail の設定で、GnuPG 実行パスが正しく設定されているかどうか確認してください。
+gpgNotInPath=GnuPG をパスの中から見つけられませんでした。\nEnigmail の設定で、GnuPG 実行パスが正しく設定されているかどうか確認してください。
enigmimeNotAvail=Enigmime サービスが使用できません
-gpgAgentNotStarted=使用しているGnuPG バージョン %Sで必要なgpg-agentを開始できません。.
+gpgAgentNotStarted=使用している GnuPG バージョン %S で必要な gpg-agent を開始できません。
prefUntrusted=信頼していない
-prefRevoked=廃止済み
+prefRevoked=失効済み
prefExpiredKey=期限切れの鍵
prefExpired=期限切れ
-prefGood=%Sの署名が一致しました
-prefBad=%Sの署名が一致しません
+prefGood=%S の署名が一致しました
+prefBad=%S の署名が一致しません
failFingerprint=エラー - フィンガープリント抽出のコマンド実行に失敗しました
failMultiple=エラー -%S に対して複数の鍵が見つかりました
failNoKey=エラー - %S の鍵が見つかりません
-failOnlyGPG=エラー - GnuPGだけが鍵サーバからキーを受け取れます
-failCancel=エラー - ユーザによって鍵の受け取りが中止されました
-failNoServer=エラー - 鍵を受け取るための鍵サーバが指定されていません
-failNoID=エラー - 鍵を受け取るためのIDが指定されていません
+failOnlyGPG=エラー - GnuPG だけが鍵サーバーから鍵を受け取ることができます
+failCancel=エラー - ユーザーによって鍵の受け取りが中止されました
+failNoServer=エラー - 鍵を受け取るための鍵サーバーが指定されていません
+failNoID=エラー - 鍵を受け取るための ID が指定されていません
failKeyExtract=エラー - 鍵の展開コマンドに失敗しました
-notFirstBlock=エラー - 最初のOpenPGPブロックは公開鍵ではありません
+notFirstBlock=エラー - 最初の OpenPGP ブロックは公開鍵ではありません
importKeyConfirm=メッセージ中に埋め込まれた鍵をインポートしますか?
failKeyImport=エラー - 鍵のインポートに失敗しました
fileWriteFailed=ファイル %S への書き込みに失敗しました
successKeyImport=鍵のインポートは成功しました
-importKey=公開鍵 %S を鍵サーバからインポートします:
-uploadKey=公開鍵 %S を鍵サーバへ送ります:
+importKey=公開鍵 %S を鍵サーバーからインポートします:
+uploadKey=公開鍵 %S を鍵サーバーへ送ります:
keyId=鍵ID
-keyAndSigDate=鍵Id: 0x%S / %Sに署名されました
+keyAndSigDate=鍵 ID: 0x%S / %S に署名されました
keyFpr=Key フィンガープリント: %S
-photoFor=%S のOpenPGP Photo ID
+photoFor=%S の OpenPGPフォトID
noEmailProvided=メールアドレスが入力されていません!
invalidRecp=不正な受取人: %S
@@ -254,23 +252,23 @@
createdHeader=生成されました
keyInvalid=不正な鍵
keyDisabled=無効化された鍵
-atLeastOneKey=鍵が一つも選択されていません。少なくとも一つの鍵を選択する必要があります。
+atLeastOneKey=鍵が 1 つも選択されていません。少なくとも 1 つの鍵を選択する必要があります。
# Strings used in enigmailAttachmentDialog.js
-pgpMimeNote=注意: PGP/MIME は限られたメーラでしかサポートされていません! Windowsであれば、Enigmail、Sylpheed、Pegasus、それと Mulberry がサポートされていることで知られています。Linux/UNIX と Mac OS X のポピュラーなメーラはサポートしています。よくわからない場合は、%S オプションを選択してください。
-first=1番目の
-second=2番目の
+pgpMimeNote=注意: PGP/MIME は限られたメーラでしかサポートされていません!Windows であれば、Thunderbird + Enigmail、Sylpheed、Pegasus、Mulberry、Becky! Internet Mail、QMAIL3、Edmax などがサポートされていることで知られています。Linux/UNIX と Mac OS X のポピュラーなメーラはサポートしています。よくわからない場合は、%S オプションを選択してください。
+first=1 番目の
+second=2 番目の
# Strings used in am-enigprefs.js
-encryptKeyHeader=暗号化するOpenPGP鍵の選択
+encryptKeyHeader=暗号化する OpenPGP鍵の選択
identityName=Identity: %S
# Strings used in enigmailSingleRcptSettings.js
-noEncryption=暗号化を有効にしましたが、鍵を選択していません。%S へ送付するメールを暗号化するためには、ひとつないしいくつかの有効な鍵を鍵リストから選択する必要があります。%S への暗号化を無効にしますか?
+noEncryption=暗号化を有効にしましたが、鍵を選択していません。%S へ送付するメールを暗号化するためには、1 つないしいくつかの有効な鍵を鍵リストから選択する必要があります。%S への暗号化を無効にしますか?
noKeyToUse=(無し - 暗号化しない)
noEmptyRule=空のルールは無効です。ルール欄にひとつの電子メールアドレスを設定してください。
-invalidAddress=入力した電子メールアドレスが無効です。受取人の名前は設定できません。電子メールアドレスだけにしてください。例:\n 無効な例:日本 花子 <hanako.nippon@address.net>\n正しい例: hanako.nippon@address.net
-noCurlyBrackets=中括弧{}は特別な意味を持ちますので、電子メールアドレスに使用しないでください。このルールに当てはまる時の動作を修正したいする場合は、'受取人が上記アドレス...' オプションを使用してください。\n 詳細な情報はヘルプボタンを押してください。
+invalidAddress=入力した電子メールアドレスが無効です。受取人の名前は設定できません。電子メールアドレスだけにしてください。例:\n 無効な例: 日本 花子 <hanako.nippon@address.net>\n正しい例: hanako.nippon@address.net
+noCurlyBrackets=中括弧{}は特別な意味を持ちますので、電子メールアドレスに使用しないでください。このルールに当てはまる時の動作を修正したいする場合は、'受取人が上記アドレス...' オプションを使用してください。\n詳細な情報はヘルプボタンを押してください。
# Strings used in enigmailRulesEditor.js
never=常にしない
@@ -281,30 +279,32 @@
negateRule=Not
# Strings used in enigmailSearchKey.js
-needOnline=選択された機能はオフラインモードでは、使用できません。オンラインのときにもう一度試してください。
-protocolNotSupported=選択したプロトコル '%S://' はが使用するプロトコルは、OpenPGP鍵をダウンロード用にはサポートされていません。
-gpgkeysDisabled= 次のオプションを有効にすると良いかもしれません 'extensions.enigmail.useGpgKeysTool'.
-noKeyserverConn=鍵サーバ %S に接続出来ませんでした。
-keyDownloadFailed=鍵サーバから鍵をダウンロードすることに失敗しました。ステータスメッセージは、以下です:\n%S
-noKeyFound=残念ながら、指定された検索基準に適合する鍵を見つけることが出来ませんでした。\n鍵IDは先頭に"0x"がつくことに注意してください(例. 0xABCDEF12).
+needOnline=選択された機能はオフラインモードでは使用できません。オンラインのときにもう一度試してください。
+protocolNotSupported=選択したプロトコル '%S://' は、OpenPGP鍵のダウンロード用にはサポートされていません。
+gpgkeysDisabled= 次のオプションを有効にすると良いかもしれません。'extensions.enigmail.useGpgKeysTool'
+noKeyserverConn=鍵サーバー %S に接続できませんでした。
+keyDownloadFailed=鍵サーバーから鍵をダウンロードすることに失敗しました。ステータスメッセージは、以下です:\n%S
+internalError=内部エラーが発生しました。鍵をダウンロードすることができませんでした。
+noKeyFound=残念ながら、指定された検索基準に適合する鍵を見つけることができませんでした。\n鍵ID は先頭に "0x" がつくことに注意してください(例: 0xABCDEF12)。
# gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc.
-gpgKeysFailed=鍵サーバでの検索もしくはダウンロードに失敗しました。: コマンド:gpgkeys_%S は実行されませんでした。
+gpgKeysFailed=鍵サーバーでの検索もしくはダウンロードに失敗しました。: コマンド: gpgkeys_%S は実行されませんでした。
# Strings in enigmailEditKeyTrustDlg.xul
-setKeyTrustFailed=所有者の信用度を設定出来ませんでした
+setKeyTrustFailed=所有者の信用度を設定できませんでした
setKeyTrustOK=所有者の信用度を設定しました
# Strings in enigmailSignKeyDlg.xul
signKeyFailed=鍵への署名に失敗しました
signKeyOK=鍵の署名に成功しました
undefinedError=未定義エラーが発生しました。
-keyAlreadySigned=この鍵は既に署名されています。2度は署名できません。
+keyAlreadySigned=この鍵は既に署名されています。2 度は署名できません。
noSignKeyExpired=この鍵は期限切れです。有効な鍵のみ署名可能です。
# Strings in enigmailKeyManager.js
+keyMan.loadingKeys=鍵を読み込み中です。しばらくお待ちください...
keyValid.unknown=不明
keyValid.invalid=不正
keyValid.disabled=無効
@@ -314,82 +314,80 @@
keyTrust.untrusted=信用していない
keyTrust.marginal=ある程度の信用
-keyTrust.full=十分に信用
-keyTrust.ultimate=究極的に信用
+keyTrust.full=完全に信用
+keyTrust.ultimate=絶対的に信用
keyType.public=公開鍵
keyType.publicAndSec=公開鍵/秘密鍵
keyMan.enableKey=鍵を有効化
keyMan.disableKey=鍵を無効化
userAtt.photo=ユーザー属性(JPEG イメージ)
-asciiArmorFile=ASCII形式(*.asc)
+asciiArmorFile=ASCII 形式(*.asc)
gnupgFile=GnuPG ファイル
saveRevokeCertAs=失効証明書を生成して保存
-revokeCertOK=失効証明書を生成しました。これは公開鍵を無効にするために使用できます。たとえば、秘密鍵をなくしてしまったときなどに使用すると良いでしょう。\n\nこれを、CD-Rや、フロッピーディスクのような安全に保存できるメディアに移してしまってください。もし、誰かがこの失効証明書を手に入れた場合、あなたの鍵を使えなくされる恐れがあります。
+revokeCertOK=失効証明書を生成しました。これは公開鍵を無効にするために使用できます。たとえば、秘密鍵をなくしてしまったときなどに使用すると良いでしょう。\n\nこれを、CD-R や、フロッピーディスクのような安全に保存できるメディアに移してしまってください。もし、誰かがこの失効証明書を手に入れた場合、あなたの鍵を使えなくされる恐れがあります。
revokeCertFailed=失効証明書の作成に失敗しました。
-addUidOK=ユーザーIDの追加に成功しました
-addUidFailed=ユーザーIDの追加に失敗しました
-noKeySelected=選択した操作を実行するには、少なくとも一つの鍵を選択する必要があります
+addUidOK=ユーザーID の追加に成功しました
+addUidFailed=ユーザーID の追加に失敗しました
+noKeySelected=選択した操作を実行するには、少なくとも 1 つの鍵を選択する必要があります
exportToFile=鍵をファイル名へ書き出す
-exportSecretKey=保存したOpenPGP鍵ファイルに秘密鍵を含めますか?
+exportSecretKey=保存した OpenPGP鍵ファイルに秘密鍵を含めますか?
saveKeysOK=鍵を保存しました
saveKeysFailed=鍵の保存に失敗しました
importKeysFailed=インポートに失敗しました
-enableKeyFailed=鍵の有効化/無効化に失敗しました
+enableKeyFailed=鍵の有効化/無効化に失敗しました
specificPubKeyFilename=%S (0x%S) 公開鍵
-specificPubSecKeyFilename=%S (0x%S) 公開鍵-秘密鍵
-
-#ファイル名なので英語のまま
+specificPubSecKeyFilename=%S (0x%S) 公開鍵/秘密鍵
defaultPubKeyFilename=Exported-public-keys
defaultPubSecKeyFilename=Exported-public-and-secret-keys
-noSecretKeys=秘密鍵が見つかりません。 \n\n 今あなたの鍵を生成しますか?
+noSecretKeys=秘密鍵が見つかりません。\n\n今あなたの鍵を生成しますか?
sendKeysOk=鍵を送りました
sendKeysFailed=鍵を送れませんでした
receiveKeysOk=鍵をアップデートしました
-receiveKeysFailed=鍵をダウンロード出来ませんでした
+receiveKeysFailed=鍵をダウンロードできませんでした
importFromClip=クリップボードから鍵を取り込みますか?
copyToClipbrdFailed=選択した鍵をクリップボードへコピーできませんでした。
copyToClipbrdOK=鍵をクリップボードにコピーしました。
-deleteSecretKey=警告:あなたは秘密鍵を削除しようとしています。\nもしあなたの秘密鍵を削除した場合、あなたの鍵で暗号化されたすべてのメッセージを復号できません。\n\n本当に秘密鍵と公開鍵の両方を削除しますか?\n'%S'?
-deleteMix=警告: あなたは秘密鍵を削除しようとしています。\n秘密鍵を削除すると暗号化されたメールを復号出来なくなります。\n\n本当に選択した秘密鍵と公開鍵を削除しますか?
+deleteSecretKey=警告: あなたは秘密鍵を削除しようとしています。\nもしあなたの秘密鍵を削除した場合、あなたの鍵で暗号化されたすべてのメッセージを復号できません。\n\n本当に秘密鍵と公開鍵の両方を削除しますか?\n'%S'?
+deleteMix=警告: あなたは秘密鍵を削除しようとしています。\n秘密鍵を削除すると暗号化されたメールを復号できなくなります。\n\n本当に選択した秘密鍵と公開鍵を削除しますか?
deletePubKey=公開鍵を削除しますか? "%S"
deleteSelectedPubKey=選択した公開鍵を削除しますか?
deleteKeyOk=鍵を削除しました
deleteKeyFailed=鍵を削除できませんでした
-revokeKeyAsk=この機能は失効証明書を生成および取り込みをします。鍵%Sを本当に失効させますか?
-revokeKeyOk=鍵は失効しました。もし、あなたの公開鍵が鍵サーバで利用可能であれば、再アップロードする事を推奨します。そうすることにより、他の人が失効していることが分かるようになります。
-revokeKeyFailed=鍵を失効出来ませんでした
+revokeKeyAsk=この機能は失効証明書を生成および取り込みます。鍵 %S を本当に失効させますか?
+revokeKeyOk=鍵は失効しました。もし、あなたの公開鍵が鍵サーバで利用可能であれば、再アップロードする事を推奨します。そうすることにより、他の人が失効していることがわかるようになります。
+revokeKeyFailed=鍵を失効できませんでした
uploadingKey=鍵のアップロード...
downloadingKey=鍵のダウンロード...
keyserverAccessAborted=中止しました
-refreshAllQuestion=鍵が一つも選択されていません。全ての鍵をリフレッシュしますか?
-refreshKey.warn=警告: 鍵の数や回線速度にもよりますが、全ての鍵のリフレッシュはとても長い時間がかかるかも知れません。\n\n続けますか?
+refreshAllQuestion=鍵が 1 つも選択されていません。すべての鍵を更新しますか?
+refreshKey.warn=警告: 鍵の数や回線速度にもよりますが、すべての鍵の更新はとても長い時間がかかるかも知れません。\n\n続けますか?
# Strings in enigmailViewKeySigDlg.xul
-keySignatureLocal=ローカル
+keySignatureLocal=ローカル署名
keySignatureExportable=エクスポート可能
keySignatureNoKey=鍵がありません
-userIdNotFound=(ユーザーIDが見つかりません)
-retrieveKeyConfirm=鍵が利用出来ません。 - 鍵サーバーからダウンロードしますか?
+userIdNotFound=(ユーザーID が見つかりません)
+retrieveKeyConfirm=鍵が利用できません。- 鍵サーバーからダウンロードしますか?
# Strings in enigmailManageUidDlg.xul
-changePrimUidFailed=主に使う鍵のユーザーIDの変更に失敗しました
-changePrimUidOK=主に使う鍵のユーザーIDを変更しました
-deleteUidFailed=ユーザID %S の削除に失敗しました
-deleteUidOK=ユーザID %S を削除しました
-revokeUidFailed=ユーザID %S を失効させることが出来ませんでした
-revokeUidOK=ユーザID %S を失効させました。もし、あなたの公開鍵が鍵サーバで利用可能であれば、再アップロードする事を推奨します。そうすることにより、他の人が失効していることが分かるようになります。
-revokeUidQuestion=本当にユーザID %S を失効させますか?
-deleteUidQuestion=本当にユーザID %S を削除しますか?\n\n注意:公開鍵を鍵サーバへ送信しているのであれば、ユーザIDの削除は何の変化も起こりません。この場合、"鍵の失効"を使用してください。
+changePrimUidFailed=主に使う鍵のユーザーID の変更に失敗しました
+changePrimUidOK=主に使う鍵のユーザーID を変更しました
+deleteUidFailed=ユーザーID %S の削除に失敗しました
+deleteUidOK=ユーザーID %S を削除しました
+revokeUidFailed=ユーザーID %S を失効させることができませんでした
+revokeUidOK=ユーザーID %S を失効させました。もし、あなたの公開鍵が鍵サーバーで利用可能であれば、再アップロードする事を推奨します。そうすることにより、他の人が失効していることがわかるようになります。
+revokeUidQuestion=本当にユーザーID %S を失効させますか?
+deleteUidQuestion=本当にユーザーID %S を削除しますか?\n\n注意:公開鍵を鍵サーバーへ送信しているのであれば、ユーザーID の削除は何の変化も起こりません。この場合、"鍵の失効"を使用してください。
# Strings in enigmailKeyDetailsDlg.xul
keyTypePublic=公開鍵
keyTypeSubkey=サブ鍵
-keyTypePair=公開鍵/秘密鍵のペア
+keyTypePair=公開鍵/秘密鍵のペア
keyExpiryNever=無期限
keyAlgorithm_1=RSA
keyAlgorithm_2=RSA
@@ -400,35 +398,35 @@
# Strings in enigmailGenCardKey.xul
keygen.started=鍵を生成中です。しばらくお待ちください...
-keygen.completed=鍵を生成しました。新しい鍵IDは次の通りです: 0x%S
+keygen.completed=鍵を生成しました。新しい鍵ID は次の通りです: 0x%S
keygen.keyBackup=%S として鍵をバックアップしました。
keygen.passRequired=スマートカード以外の場所にバックアップをとるのであれば、パスフレーズを指定してください。
# Strings in enigmailSetCardPin.xul
-cardPin.dontMatch=入力されたPINが一致しません。再入力してください。
-cardPin.minLength=PINは少なくとも %S 文字以上の英数字でなければなりません。
-cardPin.processFailed=PINの変更に失敗しました。
+cardPin.dontMatch=入力された PIN が一致しません。再入力してください。
+cardPin.minLength=PIN は少なくとも %S 文字以上の英数字でなければなりません。
+cardPin.processFailed=PIN の変更に失敗しました。
# Strings in enigRetrieveProgress.xul
-keyserverProgress.refreshing=鍵のリフレッシュ中です。しばらくお待ち下さい
+keyserverProgress.refreshing=鍵の更新中です。しばらくお待ち下さい
keyserverProgress.uploading=鍵のアップロード中です、しばらくお待ち下さい
-keyserverTitle.refreshing=鍵のリフレッシュ
+keyserverTitle.refreshing=鍵の更新
keyserverTitle.uploading=鍵のアップロード
# Strings in enigmailSetupWizard
-setupWizard.gpgNotFound=GnuPGが見つかりませんでした。パスを設定してください
-passphrase.min8keys=パスフレーズには少なくとも8文字指定してください。
-setupWizard.applyAllId=OpenPGPを全てのIDに対して有効化する
-setupWizard.applySomeId=OpenPGPを次のIDに対して有効とする: %S
-setupWizard.applySingleId=OpenPGPをあなたの電子メールアカウントに対して有効化する
-setupWizard.setAllPrefs=アプリケーションの推奨設定を全て適用
+setupWizard.gpgNotFound=GnuPG が見つかりませんでした。パスを設定してください
+passphrase.min8keys=パスフレーズには少なくとも 8 文字指定してください。
+setupWizard.applyAllId=OpenPGP をすべての ID に対して有効化する
+setupWizard.applySomeId=OpenPGP を次の ID に対して有効とする: %S
+setupWizard.applySingleId=OpenPGP をあなたの電子メールアカウントに対して有効化する
+setupWizard.setAllPrefs=アプリケーションの推奨設定をすべて適用
setupWizard.setSomePrefs=アプリケーションの推奨設定を選択された物のみ適用
setupWizard.setNoPrefs=アプリケーションの設定を変更しない
-setupWizard.createKey=有効期間が5年の新しい2048ビットのOpenPGP鍵の生成
-setupWizard.useKey=署名にIDが%SのOpenPGP鍵を使用
-setupWizard.encryptAll=デフォルトで全ての電子メールを暗号化
+setupWizard.createKey=有効期間が 5 年の新しい 2048 ビットの OpenPGP鍵の生成
+setupWizard.useKey=署名に ID が %S の OpenPGP鍵を使用
+setupWizard.encryptAll=デフォルトですべての電子メールを暗号化
setupWizard.encryptNone=デフォルトでは電子メールを暗号化しない
-setupWizard.signAll=デフォルトで全ての電子メールに署名
+setupWizard.signAll=デフォルトですべての電子メールに署名
setupWizard.signNone=デフォルトでは電子メールに署名しない
-setupWizard.reallyCancel=本当にOpenPGPセットアップウィザードを中止しますか?
-setupWizard.locateGpg=ウィザードはGnuPG実行ファイルを見つけることが出来ませんでした。次のダイアログに手動で場所を入力してください。もし未だインストールされていないようでしたら、 http://www.gnupg.org を参照することをお勧めします。
+setupWizard.reallyCancel=本当に OpenPGP セットアップウィザードを中止しますか?
+setupWizard.locateGpg=ウィザードは GnuPG 実行ファイルを見つけることができませんでした。次のダイアログに手動で場所を入力してください。もしまだインストールされていないようでしたら、 http://www.gnupg.org を参照することをお勧めします。
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/help/compose.html
^
|
@@ -1,17 +1,17 @@
<html>
-<head><title>Enigmail Help: Message Composition</title>
+<head><title>Enigmail ヘルプ: メールの作成</title>
</head>
<body>
<h1>Enigmail ヘルプ</h1>
-<h3>メールを作成するときのEnigmailの使用方法</h3>
+<h3>メールを作成するときの Enigmail の使用方法</h3>
<ul>
- <li><b>メール作成画面でのEnigmailメニュー</b>
+ <li><b>メール作成画面での Enigmail メニュー</b>
<ul>
- <li><b>このメッセージを署名する</b>: メールに署名をする/しないを設定します。署名できなかった時には通知します。
+ <li><b>このメッセージを署名する</b>: メールに署名をする/しないを設定します。署名できなかった時には通知します。
</li>
- <li><b>このメッセージを暗号化する</b>: 送信前にすべての受取人に関して暗号化する/しないを設定します。暗号化できなかったときは通知します。
+ <li><b>このメッセージを暗号化する</b>: 送信前にすべての受取人に関して暗号化する/しないを設定します。暗号化できなかったときは通知します。
<ul>
<p>もし <em>「必要なら選択肢を表示する」</em> オプションが <b>詳細設定
-> 鍵の選択タブ</b>で設定されていて、公開鍵を持っていない受取人が送付先アドレスに含まれていた場合、鍵一覧を表示します。</p>
@@ -19,18 +19,18 @@
-> 鍵の選択タブ</b>で設定されていて、公開鍵を持っていない受取人が送付先アドレスに含まれていた場合、メッセージは暗号化しないで送付します。</p>
</ul>
</li>
- <li><b>PGP/MIMEをこのメッセージに使う</b>:
+ <li><b>PGP/MIME をこのメッセージに使う</b>:
<a href="http://community.roxen.com/developers/idocs/rfc/rfc3156.html" target="_blank">PGP/MIME</a>
- をこのメッセージに使用する/しないを設定します。
+ をこのメッセージに使用する/しないを設定します。
<ul>
- <p>もし、受取人がPGP/MIMEフォーマットを読むことが出来ると知っているときは、このオプションを使用してください。</p>
+ <p>もし、受取人が PGP/MIME フォーマットを読むことができると知っているときは、このオプションを使用してください。</p>
<p>この設定は <b>詳細設定
- -> PGP/MIME タブ</b> の <em>可能なら PGP/MIMEを使用する</em> や <em>常に PGP/MIMEを使用する</em>とは、連動していません。</p>
+ -> PGP/MIME タブ</b> の <em>可能なら PGP/MIME を使用する</em> や <em>常に PGP/MIME を使用する</em>とは、連動していません。</p>
</ul></li>
<li><b>デフォルト作成オプション</b>: サブメニュー
</p>
<ul>
- <li><b>署名/暗号化オプション...</b>: <b>アカウント設定 ->
+ <li><b>署名・暗号化オプション...</b>: <b>アカウント設定 ->
OpenPGP オプション</b> へのショートカットです。
</li>
<li><b>送信オプション...</b>: <b>詳細設定 ->
@@ -39,15 +39,15 @@
<li><b>鍵選択オプション...</b>: <b>詳細設定 ->
鍵の選択</b> タブへのショートカットです。
</li>
- <li><b>PGP/MIMEオプション...</b>: <b>詳細設定 ->
+ <li><b>PGP/MIME オプション...</b>: <b>詳細設定 ->
PGP/MIME</b> タブへのショートカットです。
</li>
</li>
</ul>
- <li><b>暗号化を元に戻す</b>: もし、メールの送信に失敗した時、たとえばPOPサーバが要求を拒否した時など、Enigmailはそのことが分からないので、暗号化されたメールをメール作成ウインドウにそのまま表示し続けます。このメニューを選ぶことにより暗号化・署名を元に戻し、メール作成ウインドウに元の文書を表示します。<br>
+ <li><b>暗号化を元に戻す</b>: もし、メールの送信に失敗した時、たとえば POP サーバが要求を拒否した時など、Enigmail はそのことが分からないので、暗号化されたメールをメール作成ウインドウにそのまま表示し続けます。このメニューを選ぶことにより暗号化・署名を元に戻し、メール作成ウインドウに元の文書を表示します。<br>
<em>暫定回避策として、このメニューは暗号化されたメッセージに対して返信する時に、強制的に復号することにも使用できます。</em>
</li>
- <li><b>公開鍵の挿入</b>: メッセージ作成画面のカーソルの場所へアスキー形式の公開鍵を挿入します。挿入する公開鍵の電子メールアドレスを選択するポップアップ画面がでます。この方法によって挿入された公開鍵は、受け取り側のEnigmailによって自動的に認識されます。公開鍵を挿入した後でも、必要に応じてそのメールを署名および暗号化することができます。ただし、ひとつのメッセージに複数の公開鍵のブロック挿入しないでください。ポップアップ画面で、複数の電子メールアドレスをチェックボックスで指定するようにしてください。
+ <li><b>公開鍵の挿入</b>: メッセージ作成画面のカーソルの場所へアスキー形式の公開鍵を挿入します。挿入する公開鍵の電子メールアドレスを選択するポップアップ画面がでます。この方法によって挿入された公開鍵は、受け取り側の Enigmail によって自動的に認識されます。公開鍵を挿入した後でも、必要に応じてそのメールを署名および暗号化することができます。ただし、ひとつのメッセージに複数の公開鍵のブロック挿入しないでください。ポップアップ画面で、複数の電子メールアドレスをチェックボックスで指定するようにしてください。
</li>
<li><b>パスフレーズのクリア</b>: キャッシュされているパスフレーズをクリアします。複数のパスフレーズを使用しているときに便利です。
</li>
@@ -58,7 +58,7 @@
</ul>
<hr/>
<p>
-更なるヘルプは以下のサイトで利用できます(英語)
+更なるヘルプは以下のサイトで利用できます(英語)
<a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help web page</a>
</p>
</body>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/help/editRcptRule.html
^
|
@@ -1,22 +1,22 @@
<html>
-<head><title>Enigmail Help: Edit OpenPGP Rule</title>
+<head><title>Enigmail ヘルプ: OpenPGP ルールの編集</title>
</head>
<body>
<h1>Enigmail ヘルプ</h1>
-<h3>Enigmail ルールエディッタ: OpenPGP ルールの編集</h3>
-<p>ルールエディッタで、受け取り人毎の初期設定(暗号化、署名、PGP/MIMEを使用する・しない)および使用するOpenPGP鍵を指定出来ます。このダイアログで一人の受取人、および同様な方法でグループにに対して設定できます。
+<h3>Enigmail ルールエディタ: OpenPGP ルールの編集</h3>
+<p>ルールエディタで、受け取り人毎の初期設定(暗号化、署名、PGP/MIME を使用する/しない)および使用する OpenPGP鍵を指定できます。このダイアログで 1 人の受取人、および同様な方法でグループに対して設定できます。
</p>
<ul>
- <li><span style="font-weight: bold;">OpenPGP ルールを適用する</span>: 受取人のe-mail
- アドレスを入力してください。 (ただし、名前は入力しないでください。例:
- <tt>somebody@email.domain</tt>)
+ <li><span style="font-weight: bold;">OpenPGP ルールを適用する</span>: 受取人のメール
+ アドレスを入力してください(ただし、名前は入力しないでください。例:
+ <tt>somebody@email.domain</tt>)。
半角スペースで区切って複数のアドレスを入力することもできます。
- ここで指定するアドレスは、ドメインセクション(@の右側)だけを指定できます。
- そうすることにより、同じドメインの(@マークの右側が同じ)どんなアドレスにもルールを
+ ここで指定するアドレスは、ドメインセクション(@ の右側)だけを指定できます。
+ そうすることにより、同じドメインの(@ マークの右側が同じ)どんなアドレスにもルールを
適用することができます。
- 例えば <tt>@email.domain </tt> と入力した場合、 <tt>body@email.domain</tt>,
- <tt>somebody@email.domain</tt>, <tt>anybody@email.domain</tt>などにもルールが適用されます。
+ 例えば <tt>@email.domain</tt> と入力した場合、<tt>body@email.domain</tt>,
+ <tt>somebody@email.domain</tt>, <tt>anybody@email.domain</tt> などにもルールが適用されます。
</li>
<li><span style="font-weight: bold;">受取人が ... のときにルールを適用</span>:
電子メールアドレスの適用方法を指定します。
@@ -42,7 +42,7 @@
</li>
<li><span style="font-weight: bold;">当てはまるアドレスについては、次のルールを続いて適用する:</span><br>
- これにチェックをすると、<em>以下のOpen PGP鍵を使用する</em>の欄で鍵IDの指定をする
+ これにチェックをすると、<em>以下の OpenPGP鍵を使用する</em>の欄で鍵 ID の指定をする
必要がなくなります。
電子メールアドレスは、送信時にチェックされ、その電子メールアドレスについてのルールが
続いて適用されます。
@@ -52,12 +52,12 @@
適用するかチェックされなくなります。
ルール処理は次の受取人から行われることになります。
</li>
- <li><span style="font-weight: bold;">以下のOpenPGP鍵を使用する:</span><br>
- <em>鍵の選択(s)..</em> ボタンをクリックし、暗号化に使用する受取人の鍵を選択してください。
+ <li><span style="font-weight: bold;">以下の OpenPGP鍵を使用する:</span><br>
+ <em>鍵の選択(s)...</em> ボタンをクリックし、暗号化に使用する受取人の鍵を選択してください。
既に述べたように、マッチするアドレスに対してこれ以上のルール処理はされません。
</li>
- <li><span style="font-weight: bold;">署名のデフォルト</span>: 署名する・しないを
- 決定します。 これはメッセージ作成画面の設定を上書きするなどに利用されます。 設定値は:
+ <li><span style="font-weight: bold;">署名のデフォルト</span>: 署名する/しないを
+ 決定します。これはメッセージ作成画面の設定を上書きするなどに利用されます。 設定値は:
</li>
<ul>
<li><i>しない</i>: 例えメッセージ作成画面で設定しても署名をしません。
@@ -72,23 +72,23 @@
</ul>
</ul>
<div style="margin-left: 40px;">この署名に関する設定はマッチするすべてのルールに
-対して適用されます。もし署名をしないルールが1つでもあれば、他の署名をするルールがマッチしても、署名はされません。(例え、<i>常に</i>があってもです。)
+対して適用されます。もし署名をしないルールが 1 つでもあれば、他の署名をするルールがマッチしても、署名はされません(例え、<i>常に</i>があってもです)。
</div>
<ul>
- <li><span style="font-weight: bold;">暗号化</span>: 暗号化のする・しないを
+ <li><span style="font-weight: bold;">暗号化</span>: 暗号化する/しないを
決定します。設定可能な項目と意味は、署名と同一です。</li>
<li><span style="font-weight: bold;">PGP/MIME</span>: PGP/MIME (RFC 3156)
を用いてメッセージをエンコードするかどうかを決定します。
- PGP/MIME が無効の場合、メッセージはインラインPGPを用いて行われます。
+ PGP/MIME が無効の場合、メッセージはインライン PGP を用いて行われます。
設定可能な項目と意味は、署名と同一です。
</li>
</ul>
-<p>こららのルールは<em>OpenPGP ルールエディタ</em>に表示されている順に処理されます。
-ルールに受取人がマッチし、OpenPGP鍵のIDを含み、加えて設定された鍵IDを使用している場合には、その受取人に関してはそれ以上のルールは考慮されません。
+<p>こららのルールは <em>OpenPGP ルールエディタ</em>に表示されている順に処理されます。
+ルールに受取人がマッチし、OpenPGP鍵の ID を含み、加えて設定された鍵ID を使用している場合には、その受取人に関してはそれ以上のルールは考慮されません。
</p>
<hr/>
<p>
-更なるヘルプは以下のサイトで利用できます(英語)
+更なるヘルプは以下のサイトで利用できます(英語)
<a href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">Enigmail Per-Recipient Settings page</a>
</p>
</body>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/help/messenger.html
^
|
@@ -1,33 +1,33 @@
<html>
-<head><title>Enigmail Help: Message Reading</title>
+<head><title>Enigmail ヘルプ: メッセージを読む</title>
</head>
<body>
-<h1>Enigmail Help</h1>
+<h1>Enigmail ヘルプ</h1>
-<h3>メッセージを読む時のEnigmailの使用方法</h3>
+<h3>メッセージを読む時の Enigmail の使用方法</h3>
<ul>
<li><b>メインウインドウの復号ボタン</b><br />
- このボタンをはいくつかの用途で使われます。: 暗号化、検証、または公開鍵のインポートなどです。通常、暗号化/検証は自動的に行われます。設定によって無効にすることも可能です。しかし、失敗した時には、短いエラーメッセージがEngimail状態表示に表示されるだけです。このボタンをクリックすることで、GnuPGコマンドの出力結果を含めて詳細なエラーメッセージを表示します。
+ このボタンをはいくつかの用途で使われます。: 暗号化、検証、または公開鍵のインポートなどです。通常、暗号化/検証は自動的に行われます。設定によって無効にすることも可能です。しかし、失敗した時には、短いエラーメッセージが Engimail に表示されるだけです。このボタンをクリックすることで、GnuPG コマンドの出力結果を含めて詳細なエラーメッセージを表示します。
</li>
<li><b>メッセージヘッダのペンと鍵のアイコン</b><br />
メッセージヘッダに表示されている <em>ペン</em> と <em>鍵</em> のアイコンは、あなたが読んでいるメッセージの署名が正しく、署名や暗号化されているかを示しています。もしそのメッセージが署名された後に改ざんされている場合、<em>ペン</em>のアイコンは<em>折れたペン</em>のアイコンとして表示され問題を示します。ペンや鍵のアイコンを右クリックすることで、以下のメニューが表示されます。:
<ul>
- <li><em>OpenPGP セキュリティ情報</em>: GnuPGがそのメッセージに対して出力した結果を表示します。</li>
+ <li><em>OpenPGP セキュリティ情報</em>: GnuPG がそのメッセージに対して出力した結果を表示します。</li>
<li><em>OpenPGP セキュリティ情報をコピー</em>: GnuPG の出力をクリップボードにコピーします。返信に貼るなどに利用できます。</li>
- <li><em>OpenPGP Photo IDを表示</em>: 公開鍵に写真が埋め込まれていれば、メッセージの送信者の<em>Photo ID</em> を表示します。(<em>このオプションは写真が公開鍵に埋め込まれている場合に有効です。)</em></li>
- <li><em>S/MIME セキュリティ情報</em>: このメッセージのS/MIME セキュリティ情報を表示します。</li>
+ <li><em>OpenPGPフォトID を表示</em>: 公開鍵に写真が埋め込まれていれば、メッセージの送信者の<em>フォトID</em> を表示します。(<em>このオプションは写真が公開鍵に埋め込まれている場合に有効です。)</em></li>
+ <li><em>S/MIME セキュリティ情報</em>: このメッセージの S/MIME セキュリティ情報を表示します。</li>
</ul>
- <p>もしあなたが <em>keyserver-options auto-key-retrieve</em> を <tt>gpg.conf</tt> に設定しておらず、署名か暗号化されているメッセージを読むと、<em>ペン</em>のアイコンが<em>?</em>と共に表示され、ヘッダのステータスラインに <em>メッセージの一部が署名されています; ペンまたは鍵のアイコンをクリックしてください</em> と表示され、メッセージペインにはOpenPGP メッセージブロックとシグネチャブロックが表示されます。</p>
+ <p>もしあなたが <em>keyserver-options auto-key-retrieve</em> を <tt>gpg.conf</tt> に設定しておらず、署名か暗号化されているメッセージを読むと、<em>ペン</em>のアイコンが<em>?</em>と共に表示され、ヘッダのステータスラインに <em>メッセージの一部が署名されています; ペンまたは鍵のアイコンをクリックしてください</em> と表示され、メッセージペインには OpenPGP メッセージブロックと署名ブロックが表示されます。</p>
<p><em>keyserver-options auto-key-retrieve</em> が <tt>gpg.conf</tt> に設定されている場合でも、OpenPGP 鍵がデフォルト鍵サーバに無い場合は同様のアイコンが表示されます。</p>
- <p><em>ペンと?</em> のアイコンをクリックすると、鍵がキーリングに無いという旨が表示されます。OKをクリックすると、鍵サーバのリストが表示された別ウィンドウが開きメールの送信者の公開鍵をダウンロードすることができます。</p>
- <p>あなたが使いたい公開鍵サーバのリストを編集するには、<b>Enigmail -> 設定 -> 基本</b> タブを選択し、<em>公開鍵サーバ:</em>の欄にアドレスをカンマ区切りで入力してください。<em>リストの一番上のサーバがデフォルトで利用されます。</em></p>
+ <p><em>ペンと?</em> のアイコンをクリックすると、鍵が鍵輪に存在しない旨が表示されます。OK をクリックすると、鍵サーバのリストが表示された別ウィンドウが開きメールの送信者の公開鍵をダウンロードすることができます。</p>
+ <p>あなたが使いたい公開鍵サーバのリストを編集するには、<b>Enigmail -> 設定 -> 基本</b> タブを選択し、<em>公開鍵サーバ:</em> の欄にアドレスをカンマ区切りで入力してください。<em>リストの一番上のサーバがデフォルトで利用されます。</em></p>
</li>
- <li><b>暗号化された添付ファイルを開く/添付されたOpenPGP鍵のインポート</b><br />
- 添付ファイル名が *.pgp, *.asc *.gpg のファイルはEnigmailで自動的に認識されます。 それらの添付ファイルを右クリックすると、2つの特別な選択肢がコンテキストメニューに表示されます。<em>復号して開く</em> と <em>復号して保存</em>です。これら2つの選択肢を、開いたり保存する前に添付ファイルをEnigmailで復号することができます。もし、この添付ファイルがOpenPGP鍵ファイルなら、キーリングに鍵をインポートするか聞かれます。
+ <li><b>暗号化された添付ファイルを開く/添付された OpenPGP鍵のインポート</b><br />
+ 添付ファイル名が *.pgp, *.asc *.gpg のファイルは Enigmail で自動的に認識されます。 それらの添付ファイルを右クリックすると、2 つの特別な選択肢がコンテキストメニューに表示されます。<em>復号して開く</em> と <em>復号して保存</em>です。これら 2 つの選択肢によって、開いたり保存する前に添付ファイルを Enigmail で復号することができます。もし、この添付ファイルが OpenPGP鍵ファイルなら、キーリングに鍵をインポートするか聞かれます。
</li>
</ul><hr/>
<p>
-更なるヘルプは以下のサイトで利用できます(英語)
+更なるヘルプは以下のサイトで利用できます(英語)
<a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail OpenPGP Help web page</a>
</p>
</body>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/help/rulesEditor.html
^
|
@@ -1,21 +1,21 @@
<html>
-<head><title>Enigmail Help: Rules Editor</title>
+<head><title>Enigmail ヘルプ: ルールエディタ</title>
</head>
<body>
<h1>Enigmail ヘルプ</h1>
<h3>Enigmail ルールエディタの使い方</h3>
-<p>ルールエディタでは、受取人ごとに暗号化、署名、PGP/MIMEを有効にするのを
-デフォルトとし、どのOpenPGP鍵を用いるかを設定できます。
-各ルールは、5つのフィールドからなり、1つの方針をあらわします。:
+<p>ルールエディタでは、受取人ごとに暗号化、署名、PGP/MIME を有効にするのを
+デフォルトとし、どの OpenPGP 鍵を用いるかを設定できます。
+各ルールは 5 つのフィールドからなり、1 つの方針をあらわします。:
</p>
<ul>
<li><span style="font-weight: bold;">Email</span>: メールを To:, Cc: そして Bcc: フィールドでマッチさせます。
マッチングは、<span style="font-style: italic;">部分一致</span>で行われます。 (詳細は ルール編集 ダイアログにあります。)
</li>
- <li><span style="font-weight: bold;">OpenPGP 鍵</span>: 受取人ごとに用いる
+ <li><span style="font-weight: bold;">OpenPGP鍵</span>: 受取人ごとに用いる
OpenPGP鍵IDを設定します。</li>
- <li><span style="font-weight: bold;">署名</span>: 署名する・しないを設定します。
+ <li><span style="font-weight: bold;">署名</span>: 署名する/しないを設定します。
メッセージ作成ウインドウの設定を使用したり、上書きすることがあります。設定値は:
</li>
<ul>
@@ -30,7 +30,7 @@
</ul>
</ul>
<div style="margin-left: 40px;">これらの設定はマッチするもの全てが適用されます。
-もし、ルールのうち1つが署名しないことにすると、他のルールが<i>常にする</i>と
+もし、ルールのうち 1 つが署名しないことにすると、他のルールが<i>常にする</i>と
なっていない限り、メッセージは署名されません。<br>
</div>
<ul>
@@ -38,20 +38,20 @@
するかしないかを設定します。設定可能な項目と意味は、署名と同様です。</li>
<li><span style="font-weight: bold;">PGP/MIME</span>: PGP/MIME (RFC 3156)
エンコードをするかしないかを設定します。
- もし PGP/MIME が無効なら、メッセージはインラインPGPでエンコードされます。
+ もし PGP/MIME が無効なら、メッセージはインライン PGP でエンコードされます。
設定可能な項目と意味は、署名と同様です。
</li>
</ul>
<p>ルールは表示されている順に処理されます。あるルールが受取人にあてはまり、
-OpenPGP鍵ID、さらに特定された鍵IDを含んでいる場合、その受取人については、
+OpenPGP鍵ID、さらに特定された鍵ID を含んでいる場合、その受取人については、
他のルールは考慮されません。</p>
<p><i>注意:</i> ルールエディタはまだ完成していません。ルールファイルを直接編集
-することで、より詳細なルールを設定することが可能です。(これらのルールはルール
-エディタで編集できなかったものです。)
+することで、より詳細なルールを設定することが可能です(これらのルールはルール
+エディタで編集できなかったものです)。
直接ファイルを編集することについての<a href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">詳細な情報 (英語)</a>はEnigmail Homepageにあります。</p>
<hr/>
<p>
-更なるヘルプは以下のサイトで利用できます(英語)
+更なるヘルプは以下のサイトで利用できます(英語)
<a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help web page</a>
</p>
</body>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/lang/ja-JP/upgrade_080.html
^
|
@@ -4,41 +4,41 @@
<head>
</head>
<body>
-<h1>Enigmail 0.8xアップグレード情報</h1>
+<h1>Enigmail 0.8x アップグレード情報</h1>
-<p>Enigmail v0.8x for Thunderbird は、新しいユーザーインターフェースを獲得しました!
-<b>もし、バージョン0.81.0以前のEnigmailに慣れているのであれば、使用する前に以下の情報をお読みください。</b>
+<p>Enigmail v0.8x for Thunderbird は、新しいユーザーインターフェイスを獲得しました!
+<b>もし、バージョン 0.81.0 以前の Enigmail に慣れているのであれば、使用する前に以下の情報をお読みください。</b>
</p>
-<h2>Enigmailの設定</h2>
-<p>Enigmailの設定は、今では2つのパートに分かれています:</p>
+<h2>Enigmail の設定</h2>
+<p>Enigmail の設定は、今では 2 つのパートに分かれています:</p>
<ul>
-<li>アカウント毎の設定(PGP鍵のID、暗号化/署名のデフォルト動作)
+<li>アカウント毎の設定(PGP 鍵の ID、暗号化/署名のデフォルト動作)
</li>
<li>共通の設定
</li>
</ul>
<h3>アカウント毎の設定</h3>
-<p>アカウント毎の設定は、メニューの<em>Tools
--> Account Settings</em>で設定できます。どのアカウントに対しても、
-<em>OpenPGP Security</em>というアイテムリストがあり、そこでアカウント毎の設定をします。
+<p>アカウント毎の設定は、メニューの <em>Tools
+-> Account Settings</em> で設定できます。どのアカウントに対しても、
+<em>OpenPGP Security</em> というアイテムリストがあり、そこでアカウント毎の設定をします。
</p>
-<p>バージョン0.80.0以前のEnigmailのPGP鍵の設定は、新しいアカウント毎の設定には
+<p>バージョン 0.80.0 以前の Enigmail の PGP 鍵の設定は、新しいアカウント毎の設定には
<b>反映されません</b>。
-Enigmailは、初期設定ではすべてのアカウントに対して<b>無効</b>になっています。
+Enigmail は、初期設定ではすべてのアカウントに対して<b>無効</b>になっています。
</p>
<h3>共通設定</h3>
<p>共通設定は、整理・統合され一つのダイアログになっています。
-設定はEnigmailのメニュー、またはアカウントマネージャのOpenPGP Security設定メニューの<em>詳細設定</em>ボタンをクリックすることで出来ます。
+設定は Enigmail のメニュー、またはアカウントマネージャの OpenPGP セキュリティ設定メニューの<em>詳細設定</em>ボタンをクリックすることで出来ます。
</p>
<p>新しいオプションとして、暗号化されたメッセージに対して返信する場合に自動的に暗号化するというのが追加されています。
なお、これはメッセージの署名に関しては無関係ということに注意してください。
</p>
<h2>メッセージの作成</h2>
-<p>Enigmailの振る舞いは、以前にも増してS/MIMEの振る舞いに適合するようになっています。
-新しいOpenPGPボタンが暗号化/署名の設定が選択できるような形で追加されました。
-Enigmailメニューはもはや暗号化/署名済みメールの送信メニューを提供しません。
+<p>Enigmail の振る舞いは、以前にも増して S/MIME の振る舞いに適合するようになっています。
+新しい OpenPGP ボタンが暗号化/署名の設定が選択できるような形で追加されました。
+Enigmailメニューはもはや暗号化/署名済みメールの送信メニューを提供しません。
送信は、通常の<em>送信</em>ボタンもしくは、ファイル->送信 のみ可能です。
-新しい振る舞いを理解するために、<b>実際に使用する前に、2,3通のメールを自分自身に
+新しい振る舞いを理解するために、<b>実際に使用する前に、2,3 通のメールを自分自身に
送るなどして新しい設定を試してください。</b>そうすれば、あなたはこの新しいを
理解できるでしょう。
</p>
@@ -49,7 +49,7 @@
<h2>既知の問題</h2>
<ul>
-<li>Enigmaiは、異なるPGP鍵の複数のパスワードを覚えておくことが出来ません。
+<li>Enigmai は、異なる PGP 鍵の複数のパスワードを覚えておくことが出来ません。
その都度入力するか、すべて使用する鍵すべてに同じパスワードを使用してください。
(訳者注:後者の方法はお勧めしません)
</li>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK
^
|
+(directory)
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/am-enigprefs.properties
^
|
@@ -0,0 +1,3 @@
+# Strings used in the Mozill AccountManager
+prefPanel-enigprefs=Zabezpečenie OpenPGP
+
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/contents.rdf
^
|
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
+
+ <!-- list all the packages being supplied by this jar -->
+ <RDF:Seq about="urn:mozilla:locale:root">
+ <RDF:li resource="urn:mozilla:locale:sk-SK"/>
+ </RDF:Seq>
+
+ <!-- locale information -->
+ <RDF:Description about="urn:mozilla:locale:sk-SK" chrome:name="sk-SK">
+
+ <chrome:packages>
+ <RDF:Seq about="urn:mozilla:locale:sk-SK:packages">
+ <RDF:li resource="urn:mozilla:locale:sk-SK:enigmail"/>
+ </RDF:Seq>
+ </chrome:packages>
+
+ </RDF:Description>
+
+</RDF:RDF>
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/enigmail.dtd
^
|
@@ -0,0 +1,673 @@
+<!ENTITY enigmail.label "Enigmail">
+<!ENTITY enigmail.openpgp.label "OpenPGP">
+
+<!ENTITY enigmail.keyUserId.label "Účet / ID používateľa">
+<!ENTITY enigmail.keygenTitle.label "Generovať OpenPGP kľúč">
+<!ENTITY enigmail.useForSigning.label "Použiť kľúč pre podpis">
+<!ENTITY enigmail.keyComment.label "Poznámka">
+<!ENTITY enigmail.keyNoPassphrase.label "Bez hesla">
+<!ENTITY enigmail.keyPassphrase.label "Heslo">
+<!ENTITY enigmail.keyPassphraseRepeat.label "Heslo (znovu)">
+<!ENTITY enigmail.generateKey.label "Generovať kľúč">
+<!ENTITY enigmail.generateKey.tooltip "Generovať nový OpenPGP kľúč kompatibilný pre šifrovanie a/alebo podpisovanie">
+<!ENTITY enigmail.cancelKey.label "Zrušiť">
+<!ENTITY enigmail.cancelKey.tooltip "Zrušiť generovanie kľúča">
+<!ENTITY enigmail.keyGen.expiry.title "Platnosť kľúča">
+<!ENTITY enigmail.keyGen.expire.label "Kľúč stratí platnosť o">
+<!ENTITY enigmail.keyGen.days.label "dní">
+<!ENTITY enigmail.keyGen.months.label "mesiacov">
+<!ENTITY enigmail.keyGen.years.label "rokov">
+<!ENTITY enigmail.keyGen.noExpiry.label "Kľúč nikdy nestratí platnosť">
+<!ENTITY enigmail.keyGen.keySize.label "Veľkosť kľúča">
+<!ENTITY enigmail.keyGen.console.label "Konzola generátora kľúčov">
+<!ENTITY enigmail.keyGen.keyType.label "Typ kľúča">
+<!ENTITY enigmail.keyGen.keyType.dsa "DSA & El Gamal">
+<!ENTITY enigmail.keyGen.keyType.rsa "RSA">
+
+<!ENTITY enigmail.preferences.label "Nastavenia OpenPGP">
+
+<!ENTITY enigmail.passwordSettings.label "Nastavenie prístupu">
+<!ENTITY enigmail.userNoPassphrase.label "Bez hesla">
+<!ENTITY enigmail.userNoPassphrase.tooltip "Aktivácia vášho OpenPGP kľúča nebude chránená.">
+<!ENTITY enigmail.expertUser.label "Zobraziť rozšírené nastavenia">
+<!ENTITY enigmail.expertUser.tooltip "Aktivuje rozšírené položky ponuky možností pre pokročilých používateľov.">
+
+<!ENTITY enigmail.defaultEncryptionOption.label "Zmena pôvodných nastavení šifrovania">
+<!ENTITY enigmail.usePGPMimeOption.label "Zmena PGP/MIME nastavení">
+<!ENTITY enigmail.mimeHashAlgorithm.label "Hash algoritmus">
+
+<!ENTITY enigmail.prefs.pathsTitle.label "Súbory a priečinky">
+<!ENTITY enigmail.prefs.overrideGpg.label "Nahradiť s">
+<!ENTITY enigmail.prefs.overrideGpg.tooltip "Kliknutím určíte umiestnenie GnuPG">
+
+
+<!ENTITY enigmail.agentPath.label "Cesta k spustiteľnému súboru GnuPG">
+<!ENTITY enigmail.agentAdditionalParam.label "Ďalšie parametre GnuPG">
+<!ENTITY enigmail.agentAdditionalParam.tooltip "Špecifikácia možností, ktoré možno v GnuPG využiť.">
+
+<!ENTITY enigmail.mime_parts_on_demand.label "Prílohy sťahovať až po otvorení správy (iba pre IMAP)">
+<!ENTITY enigmail.allowEmptySubject.label "Povoliť prázdny predmet správy">
+<!ENTITY enigmail.allowEmptySubject.tooltip "Označte, ak chcete vypnúť upozornenie, že správa neobsahuje žiadny predmet.">
+
+
+<!ENTITY enigmail.maxIdleMinutesHead.label "Pamätať si heslo">
+<!ENTITY enigmail.maxIdleMinutesTail.label "minút po zadaní">
+<!ENTITY enigmail.maxIdleMinutes.tooltip "Heslo ostáva v pamäti len obmedzený čas.">
+
+<!ENTITY enigmail.resetPrefsButton.label "Reset">
+<!ENTITY enigmail.resetPrefs.tooltip "Nastaví všetky nastavenia OpenPGP na predvolené hodnoty.">
+<!ENTITY enigmail.prefsHelpButton.label "Pomocník">
+
+<!ENTITY enigmail.upgradeButton.label "Aktualizovať Enigmail">
+<!ENTITY enigmail.uninstallButton.label "Odinštalovať Enigmail">
+
+<!ENTITY enigmail.basic.label "Základné">
+<!ENTITY enigmail.sending.label "Odosielanie">
+<!ENTITY enigmail.keySel.label "Výber kľúča">
+<!ENTITY enigmail.pgpMime.label "PGP/MIME">
+<!ENTITY enigmail.advancedPrefsButton.label "Rozšírené">
+<!ENTITY enigmail.debug.label "Ladenie">
+
+<!ENTITY enigmail.basicPrefs.label "Základné nastavenia">
+
+<!ENTITY enigmail.whenSending.label "Pri posielaní správy">
+<!ENTITY enigmail.moreOptions.label "Ďalšie nastavenia">
+
+<!ENTITY enigmail.encryptToSelf.label "Pridať môj kľúč do zoznamu príjemcov">
+<!ENTITY enigmail.encryptToSelf.tooltip "Ak povolíte, budete vždy môcť dešifrovať správy, ktoré ste odoslali.">
+<!ENTITY enigmail.alwaysTrustSend.label "Vždy dôverovať kľúčom používateľov">
+<!ENTITY enigmail.alwaysTrustSend.tooltip "Nepoužívať Web službu na overenie dôveryhodnosti a platnosti kľúčov.">
+<!ENTITY enigmail.useNonDefaultComment.label "Pridať komentár rozšírenia Enigmail v podpise OpenPGP">
+
+<!ENTITY enigmail.keyserver.label "Server kľúčov">
+<!ENTITY enigmail.keyserverDlg.label "Vyberte server kľúčov">
+<!ENTITY enigmail.keyservers.label "Servery kľúčov">
+<!ENTITY enigmail.keyservers.sample "Napríklad: sks.dnsalias.net, pgp.mit.edu, ldap://certserver.pgp.com">
+
+<!ENTITY enigmail.searchForKey.label "Hľadať kľúč">
+
+
+<!ENTITY enigmail.disableSMIMEui.label "Skryť S/MIME tlačidlá v ponuke">
+<!ENTITY enigmail.doubleDashSeparator.label "Použiť '- -' ako oddeľovač podpisu">
+<!ENTITY enigmail.useGpgAgent.label "Povoliť gpg-agenta">
+<!ENTITY enigmail.noHushMailSupport.label "Používať '<' a '>' pri zadávaní e-mailových adries">
+
+<!ENTITY enigmail.keepSettingsForReply.tooltip "Ak je to možné, zašifruje odpovede do zašifrovanej e-mailovej správy">
+<!ENTITY enigmail.doubleDashSeparator.tooltip "Dve pomlčky za sebou v riadku indikujú blok s podpisom">
+<!ENTITY enigmail.useGpgAgent.tooltip "Použije sa gpg-agent (časť GnuPG 2) pre všetky vstupy">
+<!ENTITY enigmail.noHushMailSupport.tooltip "Použije znaky '<' a '> na určenie e-mailovej adresy pre GnuPG. Vypnuté, ak má príjemca staré kľúče Hushmail.">
+<!ENTITY enigmail.mime_parts_on_demand.tooltip "Túto voľbu by ste mali vypnúť, ak prijímate správy typu PGP/MIME cez priečinky IMAP.">
+<!ENTITY enigmail.disableSMIMEui.tooltip "Odstráni tlačidlo S/MIME z panela nástrojov okna pri písaní novej správy">
+
+<!ENTITY enigmail.logdirectory.label "Log adresár">
+<!ENTITY enigmail.testemail.label "Testovacia správa">
+<!ENTITY enigmail.test.label "Odoslať TEST">
+
+<!ENTITY enigmail.decryptbutton.label "Dešifrovať">
+<!ENTITY enigmail.decryptbutton.tip "Dešifrovať alebo overiť správu s OpenPGP">
+
+<!ENTITY enigmail.messengermenu.accesskey "O">
+
+<!ENTITY enigmail.decryptverify.label "Dešifrovať/Overiť">
+<!ENTITY enigmail.importpublickey.label "Importovať verejný kľúč">
+<!ENTITY enigmail.savedecrypted.label "Uložiť dešifrovanú správu">
+
+<!ENTITY enigmail.autoDecrypt.label "Automaticky dešifrovať/overovať správy">
+<!ENTITY enigmail.clearPassphrase.label "Zmazať uložené heslo">
+<!ENTITY enigmail.editRules.label "Upraviť pravidlá šifrovania">
+
+<!ENTITY enigmail.prefs.label "Nastavenia">
+<!ENTITY enigmail.advprefs.label "Rozšírené nastavenia">
+
+<!ENTITY enigmail.debugMenu.label "Ladenie OpenPGP">
+<!ENTITY enigmail.viewconsole.label "Zobraziť konzolu">
+<!ENTITY enigmail.viewdebuglog.label "Zobraziť log">
+
+<!ENTITY enigmail.generatekey.label "Generovať kľúč">
+<!ENTITY enigmail.upgrade.label "Aktualizovať">
+<!ENTITY enigmail.help.label "Pomocník">
+<!ENTITY enigmail.about.title "O OpenPGP">
+<!ENTITY enigmail.about.label "O OpenPGP">
+<!ENTITY enigmail.reload.label "Obnoviť správu">
+<!ENTITY enigmail.browse.label "Vyhľadať...">
+<!ENTITY enigmail.sendersKeyMenu.label "Kľúč odosielateľa">
+<!ENTITY enigmail.adminSmartCard.label "Správa SmartCard ...">
+
+
+<!ENTITY enigmail.decryptverify.accesskey "D">
+<!ENTITY enigmail.importpublickey.accesskey "I">
+<!ENTITY enigmail.savedecrypted.accesskey "U">
+<!ENTITY enigmail.reload.accesskey "O">
+<!ENTITY enigmail.adminSmartCard.accesskey "S">
+
+<!ENTITY enigmail.autoDecrypt.accesskey "A">
+<!ENTITY enigmail.debugMenu.accesskey "L">
+
+<!ENTITY enigmail.clearPassphrase.accesskey "h">
+<!ENTITY enigmail.editRules.accesskey "r">
+
+<!ENTITY enigmail.prefs.accesskey "N">
+<!ENTITY enigmail.viewconsole.accesskey "k">
+<!ENTITY enigmail.viewdebuglog.accesskey "l">
+
+<!ENTITY enigmail.generatekey.accesskey "G">
+<!ENTITY enigmail.upgrade.accesskey "t">
+<!ENTITY enigmail.help.accesskey "c">
+<!ENTITY enigmail.about.accesskey "e">
+<!ENTITY enigmail.sendersKeyMenu.accesskey "K">
+
+<!ENTITY enigmail.securitybutton.label "OpenPGP">
+<!ENTITY enigmail.securitybutton.tip "OpenPGP - bezpečnostné nastavenia">
+
+<!ENTITY enigmail.signedsend.label "Podpísať správu">
+<!ENTITY enigmail.encryptedsend.label "Zašifrovať správu">
+<!ENTITY enigmail.disableRules.label "Ignorovať pravidlá príjemcov">
+
+<!ENTITY enigmail.composeOptionsMenu.label "Štandardné nastavenia">
+
+<!ENTITY enigmail.pgpAccountSettings.label "Nastavenia Podpisu/Šifrovania">
+<!ENTITY enigmail.mimeOptionsMenu.label "PGP/MIME nastavenia">
+<!ENTITY enigmail.sendOptionsMenu.label "Nastavenia odosielania">
+<!ENTITY enigmail.defaultKeySelOpts.label "Nastavenia výberu kľúča">
+<!ENTITY enigmail.sendPGPMime.label "Použiť PGP/MIME pre túto správu">
+
+<!ENTITY enigmail.undoencryption.label "Dešifrovať">
+<!ENTITY enigmail.insertkey.label "Vložiť verejný kľúč">
+<!ENTITY enigmail.attachkey.label "Priložiť verejný kľúč...">
+<!ENTITY enigmail.attachmykey.label "Priložiť môj verejný kľúč">
+
+<!ENTITY enigmail.composemenu.accesskey "O">
+
+<!ENTITY enigmail.signedsend.accesskey "P">
+<!ENTITY enigmail.signedsend.key "S">
+<!ENTITY enigmail.encryptedsend.accesskey "Z">
+<!ENTITY enigmail.encryptedsend.key "P">
+<!ENTITY enigmail.disableRules.accesskey "I">
+
+<!ENTITY enigmail.composeOptionsMenu.accesskey "d">
+<!ENTITY enigmail.sendOptionsMenu.accesskey "o">
+<!ENTITY enigmail.defaultKeySelOpts.accesskey "v">
+<!ENTITY enigmail.pgpAccountSettings.accesskey "a">
+<!ENTITY enigmail.mimeOptionsMenu.accesskey "P">
+<!ENTITY enigmail.sendPGPMime.accesskey "u">
+
+<!ENTITY enigmail.undoencryption.accesskey "f">
+<!ENTITY enigmail.insertkey.accesskey "k">
+<!ENTITY enigmail.attachkey.accesskey "e">
+<!ENTITY enigmail.attachmykey.accesskey "m">
+
+<!ENTITY enigmail.defaultEncryption.label "Správy vždy šifrovať">
+<!ENTITY enigmail.defaultEncryptionSign.label "Podpisovať šifrované správy">
+<!ENTITY enigmail.defaultSignPlainMsg.label "Podpisovať nešifrované správy">
+
+<!ENTITY enigmail.defaultEncryptionNone.label "Nešifrovať">
+<!ENTITY enigmail.defaultNotSignedsend.label "Nepodpisovať">
+
+<!ENTITY enigmail.recipientsSelectionOption.label "Akým spôsobom majú byť kľúče vyberané?">
+<!ENTITY enigmail.perRecipientRules.label "Len podľa nastavených pravidiel">
+<!ENTITY enigmail.perRecipientRules.tooltip "Vybrať kľúče podľa pravidiel a zároveň vyzve na vytvorenie nového pravidla pre príjemcov, pre ktorých ešte pravidá neexistuju.">
+<!ENTITY enigmail.perRecipientRulesAndEmail.label "Podľa pravidiel a e-mailových adries">
+<!ENTITY enigmail.perRecipientRulesAndEmail.tooltip "Umožniť ručný výber kľúčov, ak OpenPGP nemôže rozhodnúť na základe aplikovaných pravidiel a kontrolovaných e-mailových adries.">
+<!ENTITY enigmail.perEmailAddress.label "Podľa e-mailových adries">
+<!ENTITY enigmail.perEmailAddress.tooltip "Umožniť ručný výber kľúčov, ak OpenPGP nemôže rozhodnúť na základe kontrolovaných e-mailových adries (bez pravidiel).">
+<!ENTITY enigmail.askRecipientsAlways.label "Definovať pravidlá ručne">
+<!ENTITY enigmail.askRecipientsAlways.tooltip "OpenPGP nikdy nebude rozhodovať, aký kľúč má byť použitý. Rozhodovať budete vždy len vy.">
+<!ENTITY enigmail.neverAsk.label "Nepovoliť ručný výber kľúčov">
+<!ENTITY enigmail.neverAsk.tooltip "Ak nie je dostupný platný kľúč pre všetkých príjemcov, správa bude automaticky odoslaná v nezašifrovanom tvare.">
+<!ENTITY enigmail.defineRules.label "Upraviť pravidlá ...">
+<!ENTITY enigmail.defineRules.tooltip "Kliknite pre zobrazenie, pridanie, odstránenie, alebo úpravu pravidiel vybraných kľúčov.">
+
+<!ENTITY enigmail.usePGPMimeAlways.label "Vždy použiť PGP/MIME">
+<!ENTITY enigmail.usePGPMimePossible.label "Povoliť používanie PGP/MIME">
+<!ENTITY enigmail.usePGPMimeNever.label "Nikdy nepoužívať PGP/MIME">
+
+<!ENTITY enigmail.keepSettingsForReply.label "Zašifrovať, ak sa odpovedá na zašifrovanú správu">
+<!ENTITY enigmail.confirmBeforeSend.label "Vždy potvrdiť pred odoslaním">
+<!ENTITY enigmail.confirmBeforeSend.tooltip "Aktivuje zobrazenie informačného dialógu o podpísaní/zašifrovaní správy pred jej odoslaním">
+<!ENTITY enigmail.wrapHtmlBeforeSend.label "Zalamovať podpísaný HTML text pred odoslaním">
+<!ENTITY enigmail.wrapHtmlBeforeSend.tooltip "Zmení usporiadanie, aby ste sa uistili, že podpis ostane nedotknutý.">
+<!ENTITY enigmail.autoKeyRetrieve.label "Automaticky sťahovať kľúče pre overenie platnosti podpisov">
+<!ENTITY enigmail.autoKeyRetrieve2.label "z nasledovných serverov:">
+<!ENTITY enigmail.resetRememberedValues.label "Reset upozornení">
+<!ENTITY enigmail.resetRememberedValues.tooltip "Obnoví zobrazovanie upozorňujúcich dialógov a otázok, ktoré ste v minulosti zakázali zobrazovať. ">
+
+<!ENTITY enigmail.defaultEncryptionSign.accesskey "d">
+<!ENTITY enigmail.defaultEncryptionOnly.accesskey "s">
+<!ENTITY enigmail.defaultEncryptionNone.accesskey "e">
+
+<!ENTITY enigmail.usePGPMimeAlways.accesskey "V">
+<!ENTITY enigmail.usePGPMimePossible.accesskey "P">
+<!ENTITY enigmail.usePGPMimeNever.accesskey "N">
+
+<!ENTITY enigmail.defaultSignMsg.accesskey "a">
+<!ENTITY enigmail.defaultNotSignedsend.accesskey "o">
+<!ENTITY enigmail.confirmBeforeSend.accesskey "r">
+
+<!ENTITY enigmail.keygen.desc "<a class='enigmailStrong'>Poznámka: Generovanie kľúča môže trvať niekoľko minút.</a> Nevypínajte prosím program pokiaľ sa generuje kľúč. Medzitým môžete robiť na niečom inom. Ako náhle sa generovanie skončí, budete upozornení.">
+
+<!ENTITY enigmail.console.label "Zobraziť Enigmail konzolu">
+<!ENTITY enigmail.console.tooltip "Zobraziť Enigmail konzolu">
+
+<!ENTITY enigmail.uninstall.label "Odinštalovať Enigmail">
+<!ENTITY enigmail.uninstall.tooltip "Odinštalovať Enigmail">
+
+<!ENTITY enigmail.selectpanel.label "Vybrať OpenPGP Panel">
+<!ENTITY enigmail.selectpanel.tooltip "Vybrať OpenPGP Panel">
+
+<!ENTITY enigmail.userSelectionList.label "Výber OpenPGP kľúča">
+<!ENTITY enigmail.usersNotFound.label "Adresát neexistuje">
+<!ENTITY enigmail.keyExpiry.label "Koniec platnosti">
+<!ENTITY enigmail.keyTrust.label "Dôveryhodnosť">
+<!ENTITY enigmail.keySelection.label "Výber">
+<!ENTITY enigmail.keyId.label "ID kľúča">
+<!ENTITY enigmail.userSelPlainText.label "Odoslať nezašifrovanú správu">
+<!ENTITY enigmail.userSelPlainTextNotSigned.label "Odoslať nezašifrovanú a nepodpísanú správu">
+<!ENTITY enigmail.userSelPlainText.accesskey "O">
+<!ENTITY enigmail.displayNoLonger.label "Nezobrazovať dialóg znovu, ak je šifrovanie neúspešné">
+<!ENTITY enigmail.importMissingKeys.label "Stiahnuť chýbajúci kľúč">
+<!ENTITY enigmail.importMissingKeys.accesskey "S">
+<!ENTITY enigmail.importMissingKeys.tooltip "Vyskúšať importovať chýbajúci kľúč zo servera kľúčov">
+<!ENTITY enigmail.importMissingKeys.accesskey "V">
+<!ENTITY enigmail.refreshKeys.label "Obnoviť zoznam kľúčov">
+<!ENTITY enigmail.refreshKeys.accesskey "b">
+<!ENTITY enigmail.perRecipientsOption.label "Vytvoriť pravidlo pre adresátov">
+
+<!ENTITY enigmail.experimental.label "Použiť experimentálne inline podpisovanie/šifrovanie pre PGP/MIME">
+
+<!ENTITY enigmail.enigmailAttachDesc.label "Táto správa obsahuje prílohy. Chcete ich zašifrovať/podpísať?">
+<!ENTITY enigmail.enigEncryptAttachNone.label "Iba zašifrovať/podpísať text, nie prílohy">
+<!ENTITY enigmail.enigEncryptAttachInline.label "Zašifrovať každú prílohu zvlášť a odoslať správu pomocou inline PGP">
+<!ENTITY enigmail.enigEncryptAttachPgpMime.label "Zašifrovať/podpísať správu ako celok a odoslať správu pomocou inline PGP/MIME">
+<!ENTITY enigmail.encryptAttachSkipDlg.label "Použiť vybranú metódu pre všetky budúce prílohy">
+
+<!ENTITY enigmail.ctxDecryptOpen.label "Dešifrovať a otvoriť">
+<!ENTITY enigmail.ctxDecryptSave.label "Dešifrovať a Uložiť ako...">
+<!ENTITY enigmail.ctxImportKey.label "Importovať OpenPGP kľúč">
+<!ENTITY enigmail.ctxDecryptOpen.accesskey "D">
+<!ENTITY enigmail.ctxDecryptSave.accesskey "U">
+<!ENTITY enigmail.ctxImportKey.accesskey "I">
+
+<!ENTITY enigmail.amPrefTitle.label "OpenPGP nastavenia (Enigmail)">
+<!ENTITY enigmail.amPrefDesc.label "Podporu pre OpenPGP šifrovanie a podpisovanie správ poskytuje Enigmail. Na používanie tohto softvéru potrebujete mať nainštalovaný GnuPG (gpg).">
+<!ENTITY enigmail.amPrefEnablePgp.label "Povoliť OpenPGP podporu pre tento účet">
+<!ENTITY enigmail.amPrefUseFromAddr.label "Použiť adresu tejto identity pre identifikáciu PGP kľúča">
+<!ENTITY enigmail.amPrefUseKeyId.label "Použiť špecifický PGP ID kľúč (0x1234ABCD):">
+<!ENTITY enigmail.amPrefSelectKey.label "Vyberte kľúč ...">
+<!ENTITY enigmail.amPrefDefaultEncrypt.label "Možnosti písania správy">
+<!ENTITY enigmail.encryptionDlg.label "OpenPGP šifrovanie & Nastavenie podpisovania">
+<!ENTITY enigmail.encDlgEncrypt.label "Šifrovať správu">
+<!ENTITY enigmail.encDlgEncrypt.accesskey "f">
+<!ENTITY enigmail.encDlgSign.label "Podpísať správu">
+<!ENTITY enigmail.encDlgSign.accesskey "P">
+<!ENTITY enigmail.encDlgPgpMime.label "Použiť PGP/MIME">
+<!ENTITY enigmail.encDlgPgpMime.accesskey "u">
+<!ENTITY enigmail.amPrefPgpHeader.label "Odoslať 'OpenPGP' hlavičky">
+<!ENTITY enigmail.amPrefPgpHeader.none.label "Neposielať žiadne 'OpenPGP' hlavičky">
+<!ENTITY enigmail.amPrefPgpHeader.id.label "Odoslať OpenPGP ID kľúča">
+<!ENTITY enigmail.amPrefPgpHeader.url.label "Odoslať URL pre vrátenie kľúča:">
+
+<!ENTITY enigmail.retrieveKey.label "Získať kľúče">
+<!ENTITY enigmail.progressText.label "Priebeh:">
+<!ENTITY enigmail.retrieveKey.retrieveMsg.label "Získava sa kľúč, čakajte prosím ...">
+
+<!ENTITY enigmail.editPgpSecurity.label "OpenPGP bezpečnosť ...">
+<!ENTITY enigmail.editPgpSecurity.accesskey "O">
+
+<!ENTITY enigmail.openPgpSecurity.label "OpenPGP bezpečnosť">
+
+<!ENTITY enigmail.pgpSecurityInfo.label "OpenPGP bezpečnostné info ...">
+<!ENTITY enigmail.copySecurityInfo.label "Kopírovať OpenPGP bezpečnostné info">
+<!ENTITY enigmail.showPhoto.label "Zobraziť PGP foto ID">
+<!ENTITY enigmail.signSenderKey.label "Podpísať kľúč ...">
+<!ENTITY enigmail.trustSenderKey.label "Potvrdiť pravosť kľúča ...">
+<!ENTITY enigmail.signSenderKeyPopup.label "Podpísať odosielateľov kľúč ...">
+<!ENTITY enigmail.trustSenderKeyPopup.label "Potvrdiť pravosť odosielateľovho kľúča ...">
+<!ENTITY enigmail.smimeSecurityInfo.label "S/MIME bezpečnostné info ...">
+<!ENTITY enigmail.createRuleFromAddr.label "Vytvoriť OpenPGP pravidlo z adresy...">
+<!ENTITY enigmail.keyManWindow.label "Manažment kľúčov ">
+<!ENTITY enigmail.keyManWindow.accesskey "M">
+
+<!ENTITY enigmail.singleRcptSettings.label "OpenPGP - nastavenie adresáta">
+<!ENTITY enigmail.keysToUse.label "Kľúč(e) na použitie:">
+<!ENTITY enigmail.selKeysButton.label "Výber kľúčov...">
+<!ENTITY enigmail.action.label "Akcia">
+<!ENTITY enigmail.nextRule.label "Použiť ďalšie pravidlá pre porovnanie adries">
+<!ENTITY enigmail.nextAddress.label "Nekontrolovať ďalšie pravidlá k danej adrese">
+<!ENTITY enigmail.useKeys.label "Použiť nasledujúce OpenPGP kľúče:">
+<!ENTITY enigmail.selKeysButton.accesskey "V">
+<!ENTITY enigmail.setDefaultsFor.label "Základné nastavenia pre ...">
+<!ENTITY enigmail.encryption.label "Šifrovanie">
+<!ENTITY enigmail.signing.label "Podpisovanie">
+<!ENTITY enigmail.never.label "Nikdy">
+<!ENTITY enigmail.always.label "Vždy">
+<!ENTITY enigmail.maybe.label "Áno, ak bolo vybrané pri vytváraní správy">
+<!ENTITY enigmail.singleRcptSettings.desc "(Poznámka: Ak nastane konflikt, 'Nikdy' má vyššiu prioritu ako 'Vždy')">
+<!ENTITY enigmail.ruleEmail.label "Nastavenie OpenPGP pravidiel pre">
+<!ENTITY enigmail.ruleEmail.tooltip "Zadajte iba adresy, nezadávajte mená sdresátov\nNapríklad 'Nejaké Meno <nejake.meno@domena.net>' je nesprávne">
+<!ENTITY enigmail.sepratationDesc.label "(viac adries oddeľte medzerami)">
+<!ENTITY enigmail.matchDescStart.label "Použiť pravidlo, ak adresát">
+<!ENTITY enigmail.matchDescEnd.label "jedna z viacerých adries">
+<!ENTITY enigmail.matchExact.label "je presne">
+<!ENTITY enigmail.matchContains.label "obsahuje">
+<!ENTITY enigmail.matchBegin.label "začína s">
+<!ENTITY enigmail.matchEnd.label "končí na">
+<!ENTITY enigmail.not.label "Nie">
+
+<!ENTITY enigmail.rulesEditor.label "OpenPGP - editor pravidiel šifrovania">
+<!ENTITY enigmail.email.label "Správa">
+<!ENTITY enigmail.pgpKeys.label "OpenPGP kľúč">
+<!ENTITY enigmail.sign.label "Podpis">
+<!ENTITY enigmail.encrypt.label "Šifrovanie">
+<!ENTITY enigmail.edit.label "Upraviť">
+<!ENTITY enigmail.edit.accesskey "U">
+<!ENTITY enigmail.add.label "Pridať">
+<!ENTITY enigmail.add.accesskey "P">
+<!ENTITY enigmail.delete.label "Odstrániť">
+<!ENTITY enigmail.delete.accesskey "O">
+<!ENTITY enigmail.moveUp.label "Vyššie">
+<!ENTITY enigmail.moveUp.accesskey "V">
+<!ENTITY enigmail.moveDown.label "Nižšie">
+<!ENTITY enigmail.moveDown.accesskey "N">
+<!ENTITY enigmail.searchRule.label "Zobraziť pravidlá s adresou obsahujúcou:">
+<!ENTITY enigmail.clearSearch.label "Vymazať">
+<!ENTITY enigmail.clearSearch.accesskey "m">
+
+<!ENTITY enigmail.searchKeyDlg.label "Získať OpenPGP kľúče">
+<!ENTITY enigmail.searchKeyDlgCapt.label "Nájdené kľúče - Výber pre import">
+<!ENTITY enigmail.created.label "Vytvorený">
+<!ENTITY enigmail.valid.label "Platný">
+
+<!ENTITY enigmail.progress.label "Stav">
+
+<!ENTITY enigmail.sKeyDlg.title "OpenPGP - podpis kľúča">
+<!ENTITY enigmail.sKeyDlg.signKey.label "Kľúč je podpísaný:">
+<!ENTITY enigmail.sKeyDlg.fingerprint.label "Odtlačok prsta:">
+<!ENTITY enigmail.sKeyDlg.signWithKey.label "Kľúč pre podpisovanie:">
+<!ENTITY enigmail.sKeyDlg.checked.label "Ste si istí, že kľúč, ktorý sa práve chystáte podpísať, patrí osobe vyššie uvedenej?">
+<!ENTITY enigmail.sKeyDlg.noAnswer.label "Neviem">
+<!ENTITY enigmail.sKeyDlg.notChecked.label "Nekontroloval som">
+<!ENTITY enigmail.sKeyDlg.casualCheck.label "Vykonal som jednoduchú kontrolu">
+<!ENTITY enigmail.sKeyDlg.carefulCheck.label "Vykonal som podrobnú kontrolu">
+<!ENTITY enigmail.sKeyDlg.createLocal.label "Lokálny podpis (nemôže byť exportovaný)">
+<!ENTITY enigmail.sKeyDlg.alreadySigned.label "Poznámka: niektoré kľúče sú podpísané so zvoleným kľúčom pre podpis!">
+
+<!ENTITY enigmail.addUidDlg.title "OpenPGP - pridať používateľské ID">
+<!ENTITY enigmail.addUidDlg.name.label "Meno">
+<!ENTITY enigmail.addUidDlg.email.label "E-mail">
+<!ENTITY enigmail.addUidDlg.comment.label "Popis (nepovinné)">
+
+<!ENTITY enigmail.keyTrust.title "OpenPGP - nastavenie dôveryhodnosti vlastníka">
+<!ENTITY enigmail.keyTrust.trustKey.label "Dôveryhodnosť kľúča:">
+<!ENTITY enigmail.keyTrust.trustLevel.label "Ako chcete overiť kľúč?">
+<!ENTITY enigmail.keyTrust.dontKnow.label "Neviem">
+<!ENTITY enigmail.keyTrust.noTrust.label "Dôverujem">
+<!ENTITY enigmail.keyTrust.marginalTrust.label "Okrajovo dôverujem">
+<!ENTITY enigmail.keyTrust.fullTrust.label "Úplne dôverujem">
+<!ENTITY enigmail.keyTrust.ultimateTrust.label "Absolútne dôverujem">
+
+<!ENTITY enigmail.keyMan.title "OpenPGP - manažment kľúčov">
+<!ENTITY enigmail.keyMan.close.label "Zavrieť okno">
+<!ENTITY enigmail.keyMan.generate.label "Generovať">
+<!ENTITY enigmail.keyMan.sign.label "Podpísať">
+<!ENTITY enigmail.keyMan.setTrust.label "Overiť">
+<!ENTITY enigmail.keyMan.genRevoke.label "Znefunkčniť (revokovať)">
+<!ENTITY enigmail.keyMan.ctxGenRevoke.label "Generovať & uložiť certifikát znefunkčnenia">
+
+<!ENTITY enigmail.keyMan.fileMenu.label "Súbor">
+<!ENTITY enigmail.keyMan.editMenu.label "Upraviť">
+<!ENTITY enigmail.keyMan.viewMenu.label "Zobraziť">
+<!ENTITY enigmail.keyMan.keyserverMenu.label "Server kľúčov">
+<!ENTITY enigmail.keyMan.generateMenu.label "Generovanie">
+
+<!ENTITY enigmail.keyMan.fileMenu.accesskey "S">
+<!ENTITY enigmail.keyMan.editMenu.accesskey "U">
+<!ENTITY enigmail.keyMan.viewMenu.accesskey "Z">
+<!ENTITY enigmail.keyMan.keyserverMenu.accesskey "k">
+<!ENTITY enigmail.keyMan.generateMenu.accesskey "G">
+
+<!ENTITY enigmail.keyMan.importFromFile.label "Import zo súboru">
+<!ENTITY enigmail.keyMan.importFromServer.label "Hľadať kľúče">
+<!ENTITY enigmail.keyMan.importFromClipbrd.label "Import kľúčov zo schránky">
+<!ENTITY enigmail.keyMan.exportToFile.label "Do súboru">
+<!ENTITY enigmail.keyMan.sendKeys.label "Odoslať kľúče so správou">
+<!ENTITY enigmail.keyMan.uploadToServer.label "Odoslať na server kľúčov">
+<!ENTITY enigmail.keyMan.copyToClipbrd.label "Kopírovať do schránky">
+<!ENTITY enigmail.keyMan.ctxExportToFile.label "Export kľúčov do súboru">
+<!ENTITY enigmail.keyMan.ctxUploadToServer.label "Nahrať verejný kľúč na server kľúčov">
+<!ENTITY enigmail.keyMan.ctxCopyToClipbrd.label "Kopírovať verejný kľúč do schránky">
+<!ENTITY enigmail.keyMan.refreshKey.label "Obnoviť verejný kľúč">
+<!ENTITY enigmail.keyMan.refreshSelKeys.label "Obnoviť vybrané verejné kľúče">
+<!ENTITY enigmail.keyMan.refreshAllKeys.label "Obnoviť všetky verejné kľúče">
+<!ENTITY enigmail.keyMan.ctxRefreshKey.label "Obnoviť verejný kľúč zo serveru kľúčov">
+
+<!ENTITY enigmail.keyMan.reload.label "Obnoviť">
+<!ENTITY enigmail.keyMan.addUid.label "Pridať používateľské ID">
+<!ENTITY enigmail.keyMan.manageUid.label "Organizovať používateľské ID">
+<!ENTITY enigmail.keyMan.changePwd.label "Zmeniť heslo">
+<!ENTITY enigmail.keyMan.delKey.label "Odstrániť kľúč">
+<!ENTITY enigmail.keyMan.revokeKey.label "Znefunkčniť kľúč">
+<!ENTITY enigmail.keyMan.keyProps.label "Vlastnosti kľúča">
+<!ENTITY enigmail.keyMan.viewPhoto.label "Foto ID">
+<!ENTITY enigmail.keyMan.ctxViewPhoto.label "Zobraziť foto ID">
+<!ENTITY enigmail.keyMan.viewSig.label "Podpis">
+<!ENTITY enigmail.keyMan.ctxViewSig.label "Zobraziť podpis">
+<!ENTITY enigmail.keyMan.keyType.label "Typ">
+<!ENTITY enigmail.keyMan.calcTrust.label "Kalkulovaná dôveryhodnosť">
+<!ENTITY enigmail.keyMan.ownerTrust.label "Vlastník dôveryhodnosti">
+<!ENTITY enigmail.keyMan.stopTransfer.label "Zastaviť prenos">
+<!ENTITY enigmail.keyMan.fingerprint.label "Odtlačok prsta">
+<!ENTITY enigmail.keyMan.selectAll.label "Vybrať všetky kľúče">
+
+<!ENTITY enigmail.keyMan.filter.label "Filter pre používateľské ID alebo kľúč obsahuje:">
+<!ENTITY enigmail.keyMan.clearFilter.label "Vymazať">
+<!ENTITY enigmail.keyMan.clearFilter.accesskey "m">
+
+<!ENTITY enigmail.keyMan.window.accesskey "o">
+<!ENTITY enigmail.keyMan.close.accesskey "Z">
+<!ENTITY enigmail.keyMan.generate.accesskey "G">
+<!ENTITY enigmail.keyMan.sign.accesskey "P">
+<!ENTITY enigmail.keyMan.setTrust.accesskey "O">
+<!ENTITY enigmail.keyMan.genRevoke.accesskey "Z">
+<!ENTITY enigmail.keyMan.delKey.accesskey "d">
+<!ENTITY enigmail.keyMan.revokeKey.accesskey "n">
+<!ENTITY enigmail.keyMan.importFromFile.accesskey "I">
+<!ENTITY enigmail.keyMan.exportToFile.accesskey "D">
+<!ENTITY enigmail.keyMan.importFromServer.accesskey "H">
+<!ENTITY enigmail.keyMan.uploadToServer.accesskey "d">
+<!ENTITY enigmail.keyMan.reload.accesskey "b">
+<!ENTITY enigmail.keyMan.addUid.accesskey "P">
+<!ENTITY enigmail.keyMan.manageUid.accesskey "r">
+<!ENTITY enigmail.keyMan.changePwd.accesskey "Z">
+<!ENTITY enigmail.keyMan.viewSig.accesskey "P">
+<!ENTITY enigmail.keyMan.showPhoto.accesskey "F">
+<!ENTITY enigmail.keyMan.importMenu.accesskey "I">
+<!ENTITY enigmail.keyMan.exportMenu.accesskey "X">
+<!ENTITY enigmail.keyMan.importFromClipbrd.accesskey "I">
+<!ENTITY enigmail.keyMan.copyToClipbrd.accesskey "K">
+<!ENTITY enigmail.keyMan.keyDetails.accesskey "V">
+<!ENTITY enigmail.keyMan.enableKey.accesskey "">
+<!ENTITY enigmail.keyMan.refreshKey.accesskey "O">
+<!ENTITY enigmail.keyMan.refreshSelKeys.accesskey "b">
+<!ENTITY enigmail.keyMan.refreshAllKeys.accesskey "O">
+<!ENTITY enigmail.keyMan.selectAll.accesskey "V">
+<!ENTITY enigmail.keyMan.sendKeys.accesskey "O">
+
+<!ENTITY enigmail.keyMan.closeWin.key "W">
+<!ENTITY enigmail.keyMan.selectAll.key "A">
+
+<!ENTITY enigmail.viewKeySigDlg.title "Zoznam podpisov">
+<!ENTITY enigmail.viewKeySigDlg.sigForKey.label "Podpisy pre kľúč:">
+<!ENTITY enigmail.viewKeySigDlg.sigType.label "Typ podpisu">
+
+<!ENTITY enigmail.manageUidDlg.title "Zmeniť primárne používateľské ID">
+<!ENTITY enigmail.manageUidDlg.affectedKey.label "Zmeniť kľúč:">
+<!ENTITY enigmail.manageUidDlg.availableUid.label "Dostupné používateľské ID:">
+<!ENTITY enigmail.manageUidDlg.addUid.label "Pridať">
+<!ENTITY enigmail.manageUidDlg.deleteUid.label "Odstrániť">
+<!ENTITY enigmail.manageUidDlg.revokeUid.label "Znefunkčniť">
+<!ENTITY enigmail.manageUidDlg.setPrimary.label "Nastaviť ako primárne">
+
+<!ENTITY enigmail.keyDetails.title "Vlastnosti kľúča">
+<!ENTITY enigmail.keyDetails.userId.label "Primárne používateľské ID">
+<!ENTITY enigmail.keyDetails.keyId.label "ID kľúča">
+<!ENTITY enigmail.keyDetails.ID.label "ID">
+<!ENTITY enigmail.keyDetails.keyType.label "Typ">
+<!ENTITY enigmail.keyDetails.subType.label "Podkľúč">
+<!ENTITY enigmail.keyDetails.algorithm.label "Algoritmus">
+<!ENTITY enigmail.keyDetails.size.label "Veľkosť">
+<!ENTITY enigmail.keyDetails.created.label "Vytvorené">
+<!ENTITY enigmail.keyDetails.expiry.label "Platnosť">
+<!ENTITY enigmail.keyDetails.calcTrust.label "Kalkulovaná dôveryhodnosť">
+<!ENTITY enigmail.keyDetails.ownerTrust.label "Vlastník dôveryhodnosti">
+<!ENTITY enigmail.keyDetails.fingerprint.label "Odtlačok prsta">
+
+<!ENTITY enigmail.cardDetails.title "Detaily OpenPGP SmartCard">
+<!ENTITY enigmail.cardDetails.cardMenu.label "SmartCard">
+<!ENTITY enigmail.cardDetails.adminPin.label "Zmeniť PIN">
+<!ENTITY enigmail.cardDetails.genCardKey.label "Generovanie kľúča">
+
+<!ENTITY enigmail.cardDetails.vendor.label "Výrobca">
+<!ENTITY enigmail.cardDetails.serial.label "Sériové číslo">
+<!ENTITY enigmail.cardDetails.name.label "Meno, Priezvisko">
+<!ENTITY enigmail.cardDetails.lang.label "Jazyk">
+<!ENTITY enigmail.cardDetails.sex.label "Pohlavie">
+<!ENTITY enigmail.cardDetails.url.label "URL verejného kľúča">
+<!ENTITY enigmail.cardDetails.login.label "Prihlasovacie údaje">
+<!ENTITY enigmail.cardDetails.forcepin.label "Sila podpisu PIN">
+<!ENTITY enigmail.cardDetails.maxpinlen.label "Max. dĺžka PIN">
+<!ENTITY enigmail.cardDetails.pinretry.label "Počítadlo opakovaného zadávania PIN">
+<!ENTITY enigmail.cardDetails.sigcount.label "Počítadlo podpisov">
+<!ENTITY enigmail.cardDetails.sigKey.label "Podpisový kľúč">
+<!ENTITY enigmail.cardDetails.keyCreated.label "Vytvorený">
+<!ENTITY enigmail.cardDetails.encKey.label "Šifrovací kľúč">
+<!ENTITY enigmail.cardDetails.authKey.label "Overovací kľúč">
+<!ENTITY enigmail.cardDetails.yes.label "Áno">
+<!ENTITY enigmail.cardDetails.no.label "Nie">
+<!ENTITY enigmail.cardDetails.male.label "Muž">
+<!ENTITY enigmail.cardDetails.female.label "Žena">
+<!ENTITY enigmail.cardDetails.editData.label "Upraviť údaje">
+<!ENTITY enigmail.cardDetails.save.label "Uložiť">
+<!ENTITY enigmail.cardDetails.reset.label "Obnovenie">
+<!ENTITY enigmail.cardDetails.closeWindow.label "Zatvoriť">
+
+<!ENTITY enigmail.cardDetails.adminPin.accesskey "Z">
+<!ENTITY enigmail.cardDetails.genCardKey.accesskey "G">
+<!ENTITY enigmail.cardDetails.cardMenu.accesskey "S">
+<!ENTITY enigmail.cardDetails.editData.accesskey "U">
+
+<!ENTITY enigmail.genCardKey.title "Generovať OpenPGP kľúč">
+<!ENTITY enigmail.genCardKey.backupKey.label "Uložiť zálohu kľúča mimo karty">
+<!ENTITY enigmail.genCardKey.desc "<a class='enigmailStrong'>UPOZORNENIE: Generovanie kľúča môže trvať niekoľko minút.</a> Neukončujte aplikáciu pokiaľ sa kľúč nevygeneruje. Po vygenerovaní kľúča budete upozornení.">
+
+<!ENTITY enigmail.cardPin.title "Zmeniť SmartCard PIN">
+<!ENTITY enigmail.cardPin.action.label "Čo chcete urobiť">
+<!ENTITY enigmail.cardPin.changePin.label "Zmeniť PIN">
+<!ENTITY enigmail.cardPin.changeAdmPin.label "Zmeniť administrátorský PIN">
+<!ENTITY enigmail.cardPin.unblockPin.label "Odblokovať PIN">
+<!ENTITY enigmail.cardPin.currAdmPin.label "Aktuálny administrátorský PIN">
+<!ENTITY enigmail.cardPin.newAdminPin.label "Nový administrátorský PIN">
+<!ENTITY enigmail.cardPin.adminPinRepeat.label "Znovu nový PIN">
+<!ENTITY enigmail.cardPin.currPin.label "Aktuálny PIN">
+<!ENTITY enigmail.cardPin.newPin.label "Nový PIN">
+<!ENTITY enigmail.cardPin.pinRepeat.label "Opakovať nový PIN">
+
+<!ENTITY enigmail.changePasswd.title "Zmeniť OpenPGP heslo">
+<!ENTITY enigmail.changePasswd.currPasswd.label "Aktuálne heslo">
+<!ENTITY enigmail.changePasswd.newPasswd.label "Nové heslo">
+<!ENTITY enigmail.changePasswd.repeatPasswd.label "Zopakujte heslo">
+
+<!ENTITY enigmail.setupWiz.title "OpenPGP sprievodca nastavením">
+<!ENTITY enigmail.setupWiz.yes "Áno">
+<!ENTITY enigmail.setupWiz.no "Nie, ďakujem">
+<!ENTITY enigmail.setupWiz.pgWelcome.desc "Tento sprievodca Vám pomôže začať rýchlo a správne používať OpenPGP. Na nasledujúcich
+ niekoľkých obrazovkách odpoviete na niekoľko otázok a budete mať správne nastavenia.
+ <html:br/><html:br/>
+ Je to jednoduché, len odpovedzte na niekoľko otázok ohľadom konfigurácie.
+ Predpokladáme, že budete mať bezpečne nastavený systém aj pre priemerného používateľa
+ bez zbytočných problémov. Po skončení sprievodcu môžete kedykoľvek zmeniť svoje nastavenia.
+ Viac informácií o OpenPGP nájdete v Pomocníkovi, alebo na www stránke <a class='enigmailLink'><html:a
+ href='http://enigmail.mozdev.org/'>http://enigmail.mozdev.org/</html:a></a>.
+ <html:br/><html:br/>
+ Ak by ste mali akékoľvek problémy so sprievodcom, napíšte nám prosím na e-mail
+ <a class='enigmailLink'><html:a
+ href='mailto:enigmail@mozdev.org'>enigmail@mozdev.org</html:a></a>.
+ <html:br/><html:br/>
+ Tento sprievodca vám má pomôcť s prvými nastaveniami Enigmailu. Tento sprievodca sa nedá
+ spustiť znovu ani z ponuky programu.
+ <html:br/><html:br/>
+ Ďakujeme vám, že používate Enigmail OpenPGP!">
+<!ENTITY enigmail.setupWiz.pgWelcome.startNow "Chcete teraz použiť sprievodcu nastaveniami?">
+<!ENTITY enigmail.setupWiz.pgWelcome.yes "Áno, chcem použiť sprievodcu nastaveniami">
+<!ENTITY enigmail.setupWiz.pgWelcome.no "Nie, nastavím si systém manuálne">
+<!ENTITY enigmail.setupWiz.pgSelectId.title "Vyberte identitu">
+<!ENTITY enigmail.setupWiz.pgSelectId.subtitle "Vyberte účet alebo identitu, pre ktorú chcete OpenPGP nastaviť">
+<!ENTITY enigmail.setupWiz.pgSelectId.desc "OpenPGP nastavenia sú špecifické pre každý účet alebo identitu. Štandardne
+ OpenPGP nastaví konfiguráciu pre všetky účty a identity.
+ Ak nechcete spoločné nastavenia pre všetky účty a identity, vyberte účet alebo identitu pre ktoré budú nastavenia aplikované.">
+<!ENTITY enigmail.setupWiz.pgSelectId.allIds "Chcem nastaviť OpenPGP pre všetky identity">
+<!ENTITY enigmail.setupWiz.pgSelectId.selectIds "Chcem nastaviť OpenPGP iba pre vybrané identity:">
+<!ENTITY enigmail.setupWiz.pgSelectId.note "<a class='enigmailStrong'>Poznámka:</a> OpenPGP vždy overuje podpisy
+ v e-mailoch pre všetky účty a identity.">
+<!ENTITY enigmail.setupWiz.pgSign.title "Podpisovanie">
+<!ENTITY enigmail.setupWiz.pgSign.subtitle "Digitálny podpis vašich odchádzajúcich správ">
+<!ENTITY enigmail.setupWiz.pgSign.desc "OpenPGP umožňuje digitálne podpisovať vaše správy. Tento podpis považujte ako podpis na papieri,
+ a umožňuje ostatným overiť, či je správa naozaj od vás. Je dobré si zvyknúť podpisovať všetky odchádzajúce správy.
+ <html:br/><html:br/>
+ Pre overenie podpísanej správy musí aj príjemca správy používať mailového klienta s podporou OpenPGP.
+ Ak príjemca nemá mailového klienta s podporou OpenPGP môže bez problémov čítať vaše správy, ale podpis bude
+ zobrazený v prílohe alebo ako text v správe. Je naozaj dobré používať podpisovanie odchádzajúcich správ.">
+<!ENTITY enigmail.setupWiz.pgSign.signAllMsg "Chcete automaticky podpisovať všetky odchádzajúce správy?">
+<!ENTITY enigmail.setupWiz.pgSign.yesSign "Áno, chcem podpisovať všetky odchádzajúce správy">
+<!ENTITY enigmail.setupWiz.pgSign.noSign "Nie, budem podpisovať len niektoré správy">
+<!ENTITY enigmail.setupWiz.pgEnc.title "Šifrovanie">
+<!ENTITY enigmail.setupWiz.pgEnc.subtitle "Šifrovanie vašich odchádzajúcich správ">
+<!ENTITY enigmail.setupWiz.pgEnc.desc "OpenPGP umožňuje šifrovať vaše správy aj s prílohami.
+ Šifrovanie zabalí vaše dáta v správe do ochrannej obálky, aby ich nikto nepovolaný nemohol prečítať.
+ Nie je to len pre "tajné" správy, ale pre všetko, čo nechcete, aby niekto iný videl.
+ <html:br/><html:br/>
+ Po technickej stránke sa šifrovanie robí verejným kľúčom prijímateľa správy
+ a oproti podpisovaniu správy má tú nevýhodu (výhodu), že adresát správy si túto
+ správu prečíta len vtedy, ak má e-mailového klienta s podporou OpenPGP a súkromný kľúč na
+ dešifrovanie správy.
+ <html:br/><html:br/>
+ Nie všetci majú dostupný verejný kľúč na zašifrovanie správy, preto neodporúčame nastaviť automatické šifrovanie.">
+<!ENTITY enigmail.setupWiz.pgEnc.encryptAllMsg "Chcete automaticky šifrovať všetky odchádzajúce správy?">
+<!ENTITY enigmail.setupWiz.pgEnc.yesEncrypt "Áno, mám väčšinu verejných kľúčov pre adresy z môjho adresára">
+<!ENTITY enigmail.setupWiz.pgEnc.noEncrypt "Nie, nastavím si pravidlá pre šifrovanie">
+<!ENTITY enigmail.setupWiz.pgSettings.title "Nastavenia">
+<!ENTITY enigmail.setupWiz.pgSettings.subtitle "Zmeňte nastavenia, aby bolo vaše OpenPGP lepšie nastavené">
+<!ENTITY enigmail.setupWiz.pgSettings.desc "Tento sprievodca nastaví vaše nastavenia pre bezproblémové podpisovanie a šifrovanie správ vo vašom e-mailovom klientovi.
+ Tieto zmeny v nastaveniach majú technický význam a nastavia hlavne odosielanie správ v textovom formáte (nie HTML formát).">
+<!ENTITY enigmail.setupWiz.pgSettings.changePref "Chcete urobiť niekoľko nastavení pre lepší beh OpenPGP vo vašom PC?">
+<!ENTITY enigmail.setupWiz.pgSettings.details "Detaily ...">
+<!ENTITY enigmail.setupWiz.pgKeySel.title "Výber kľúča">
+<!ENTITY enigmail.setupWiz.pgKeySel.subtitle "Vytvoriť kľúč pre podpisovanie a šifrovanie správ">
+<!ENTITY enigmail.setupWiz.pgKeySel.desc "Sprievodca zistil, že už používate OpenPGP kľúč. Môžete používať existujúci kľúč, alebo vytvoriť nový pár kľúčov.">
+<!ENTITY enigmail.setupWiz.pgKeySel.createKey "Chcete vytvoriť nový pár kľúčov?">
+<!ENTITY enigmail.setupWiz.pgKeySel.newKey "Chcem vytvoriť nový pár kľúčov pre podpisovanie a šifrovanie správ">
+<!ENTITY enigmail.setupWiz.pgKeySel.useExistingKey "Chcem vybrať jeden z kľúčov pre popisovanie a šifrovqnie správ:">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.title "Vytvoriť kľúč">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.subtitle "Vytvoriť kľúč pre podpisovanie a šifrovanie správ">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc1 "Potrebujete mať dvojicu (pár) kľúčov pre podpisovanie a šifrovanie, alebo čítanie správ, ktoré sú zašifrované.
+ Pár kľúčov obsahuje dva kľúče. Verejný a Súkromný.">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.desc2 "Verejný kľúč slúži všetkým na zašifrovanie správy pre vás (odšifrujete ich súkromným kľúčom) a pre overenie podpísanej správy od Vás.
+ Súkromný kľúč je váš privátny kľúč pre dešifrovanie správ, ktoré pre vás niekto zašifroval. Súkromný kľúč je iba pre vás a nikomu ho neposielajte. Je to vaša digitálna identita. Kópiu si uložte na bezpečné miesto. Súkromný kľúč slúži aj na zrušenie platnosti (revokovanie) vášho kľúča. Súkromný kľúč je chránený heslom.">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.passRepeat "Potvrďte vaše heslo znovu zadaním hesla">
+<!ENTITY enigmail.setupWiz.pgSummary.title "Súhrn">
+<!ENTITY enigmail.setupWiz.pgSummary.subtitle "Dokončením sprievodcu nastaveniami sa vykonajú nasledujúce operácie">
+<!ENTITY enigmail.setupWiz.pgSummary.desc "Ste takmer na konci! Ak kliknete na tlačidlo 'Ďalej', sprievodca vykoná nasledujúce operácie:">
+<!ENTITY enigmail.setupWiz.pgKeygen.title "Vytvorenie kľúčov">
+<!ENTITY enigmail.setupWiz.pgKeygen.subtitle "Vaše kľúče boli práve vygenerované">
+<!ENTITY enigmail.setupWiz.pgComplete.title "Ďakujeme">
+<!ENTITY enigmail.setupWiz.pgComplete.desc "OpenPGP je teraz pripravené na používanie.<html:br/><html:br/>Ďakujeme, že používate Enigmail.">
+<!ENTITY enigmail.setupWiz.details.title "Nastavenia">
+<!ENTITY enigmail.setupWiz.details.subtitle "Upravte nastavenia">
+<!ENTITY enigmail.setupWiz.details.imapOnDemand "Zakázať načítavanie IMAP častí na požiadanie">
+<!ENTITY enigmail.setupWiz.details.changingPrefs "Sprievodca nastaveniami vykonal nasledujúce:">
+<!ENTITY enigmail.setupWiz.details.noFlowedMsg "Zakázať flowed text (RFC 2646)">
+<!ENTITY enigmail.setupWiz.details.viewAsPlain "Zobraziť telo správy ako obyčajný text">
+<!ENTITY enigmail.setupWiz.details.8bitEncoding "Použiť 8-bitové kódovanie pre odosielanie správ">
+<!ENTITY enigmail.setupWiz.details.noComposeHTML "Nevytvárať HTML správy">
+<!ENTITY enigmail.setupWiz.pgNoStart.title "Ukončiť sprievodcu nastaveniami">
+<!ENTITY enigmail.setupWiz.pgNoStart.desc "Zvolili ste možnosť bez sprievodcu nastaveniami OpenPGP.
+ <html:br/><html:br/>Ďakujeme, že používate Enigmail.">
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/enigmail.properties
^
|
@@ -0,0 +1,432 @@
+Enigmail=Enigmail
+
+# Strings used within enigmailCommon.js
+
+enigAlert=OpenPGP upozornenie
+enigConfirm=OpenPGP potvrdenie
+enigError=OpenPGP chyba
+enigPrompt=OpenPGP výzva
+
+dlgYes=OK
+dlgNo=Zrušiť
+dlgNever=Viac sa nepýtať
+dlgKeepSetting=Zapamätať si odpoveď a viac sa nepýtať
+dlgNoPrompt=Nezobrazovať znovu tento dialóg
+
+configNow=Želáte si Enigmail %S teraz nakonfigurovať?
+configEnigmail=Konfigurovať Enigmail?
+
+repeatPrefix=\n\nToto upozornenie bude zopakované %S
+repeatSuffixSingular=jeden krát.
+repeatSuffixPlural=viac krát.
+noRepeat=\n\nToto upozornenie bude zobrazované pokiaľ nebude Enigmail aktualizovaný.
+
+noLogDir=V ladení si nastavtepriečinok pre vytváranie tohto záznamu
+noLogFile=Logovací súbor ešte nebol vytvorený!
+restartForLog=Reštartujte prosím aplikáciu, aby sa vytvoril logovací súbor
+pgpNotSupported=PGP od verzie 6.x nie je v Enigmaile štandardne podporované\n\nAk chcete, aby Vám Enigmail fungoval spoľahlivo, používajte GnuPG (GPG).\n\nAk potrebujete pomoc s prechodom na GPG, pozrite si Pomocníka, alebo Enigmail web stránku.
+avoidInitErr=Tomuto hláseniu sa môžete vyhnúť odstránením problému, alebo odinštalovaním Enigmailu - použitím ponuky Enigmail->Nastavenia...
+passphraseCleared=Heslo bolo vymazané.
+keyGeneration=Enigmail - Generovanie kľúča
+noPhotoAvailable=Foto neexistuje
+
+# Strings in enigmailAbout.js
+usingVersion=Je spustený Enigmail verzia %S
+versionWarning=Upozornenie: Nekompatibilná EnigMime verzia %S
+enigmimeWarning=Upozornenie: EnigMime modul nie je dostupný
+
+usingAgent=Použite %S spustitelný %S pre šifrovanie a dešifrovanie
+agentError=Chyba: Chýba prístup k službe Enigmail!
+
+# Strings in enigmailKeygen.js
+accessError=Chyba prístupu k službám Enigmail
+onlyGPG=Generovanie kľúča pracuje len s GnuPG (nie s PGP)!
+
+keygenComplete=Generovanie kľúča bolo úspešne ukončené! Identitu <%S> je možné používať na podpisovanie.
+revokeCertRecommended=Dôrazne sa odporúča vytvoriť revokačný certifikát pre váš kľúč. Týmto certifikátom môžete znefunkčniť váš kľúč, napríklad ak by ste stratili súkromný kľúč alebo podobne a hrozilo by zneužitie. Chcete teraz vytvoriť revokačný certifikát?
+genCompleteNoSign=Generovanie kľúča bolo úspešne ukončené!
+genGoing=Prebieha generovanie kľúča!
+
+passNoMatch=Heslá sa nezhodujú, zadajte ich ešte raz
+passCheckBox=Označte, ak si neželáte použiť heslo (neodporúčame)
+passUserName=Zadajte prosím používateľa pre túto identitu
+passCharProblem=Použili ste špeciálne znaky v hesle. To môže spôsobiť problémy v iných aplikáciách. Zadajte prosím heslo pomocou nasledujúcich znakov:\na-z A-Z 0-9 /.;:-,!?(){}[]%*
+changePassFailed=Heslo NEBOLO zmenené.
+removePassphrase=Chcete odstrániť aktuálne heslo bez vytvorenia nového?
+
+keyConfirm=Vytvorit verejný aj súkromný kľúč pre '%S'?
+keyAbort=Zrušiť generovanie kľúča?
+expiryTooLong=Nemožno vytvoriť kľúč s časom vypršania väčším ako 100 rokov.
+expiryTooShort=Váš kľúč musí byť platný aspoň jeden nasledujúci deň.
+keyGenFailed=Generovanie kľúča zlyhalo. Skontrolujte prosím OpenPGP konzolu (Ponuka OpenPGP > Ladenie OpenPGP) , kde sa dozviete detaily.
+keyGenNoPassphrase=bez hesla
+
+# Strings in enigmailMessengerOverlay.js
+pubKeyNeeded=Pre overenie podpisu potrebujete verejný kľúč.
+keyImport=\n\nKliknite na tlačidlo OK pre import verejného kľúča %S zo servera kľúčov.
+keyImportError=Nemožno prijať verejný kľúč\n\n
+securityInfo=OpenPGP bezpečnostné informácie\n\n
+
+enigHeader=OpenPGP:
+enigNote=Poznámka z OpenPGP: Prílohy tejto správy nemôžu byť podpísané alebo zašifrované.
+enigContentNote=OpenPGP: *Prílohy tejto správy nemôžu byť podpísané alebo zašifrované*\r\n\r\n
+possiblyPgpMime=Správa je pravdepodobne šifrovaná pomocou PGP/MIME. Kliknite na tlačidlo Dešifrovať pre overenie.
+
+noDecrypted=Neexistuje dešifrovaná správa pre uloženie!\nPoužite možnosť Uložiť z ponuky Súbor
+noMessage=Žiadna správa pre uloženie!
+useButton=Použite tlačidlo Dešifrovať pre dešifrovanie správy
+saveHeader=OpenPGP: Uložiť dešifrovanú správu
+saveAttachmentHeader=OpenPGP: Uložiť dešifrovanú prílohu
+noTempDir=Nemožno nájsť dočasný priečinok (tmp) pre zápis\nNastavte prosím premennú TEMP (dočasný priečinok)
+attachmentPgpKey=Príloha '%S' nemôže byť otvorená pomocou PGP kľúča.\n\n Kliknite na OK pre import potrebného kľúča, alebo Zrušiť pre prehliadnutie obsahu v okne
+
+beginPgpPart=********* *ZACIATOK ZASIFROVANEJ alebo PODPISANEJ CASTI* *********
+endPgpPart=********** *KONIEC ZASIFROVANEJ alebo PODPISANEJ CASTI* **********
+notePartEncrypted=OpenPGP: *Niektoré časti správy nemôžu byť zašifrované alebo podpísané*
+noteCutMessage=OpenPGP: *Správa obsahuje viac častí -- dešifrovanie/overenie zlyhalo*
+
+decryptOkNoSig=Upozornenie\n\nDešifrovanie je ukončené, ale podpis nebol korektne overený
+contAnyway=Chcete pokračovať?
+noPgpMessage=Správa nie je zašifrovaná alebo podpísaná pomocou OpenPGP
+
+# Strings in enigmailMsgComposeOverlay.js
+keysToExport=Vyberte PGP kľúč pre vloženie
+keysToUse=Vyberte OpenPGP kľúč(e) pre %S
+pubKey=Verejný kľúč pre %S\n
+
+windowLocked=Vytvorenie správy je zamknuté; odoslanie zrušené
+sendUnencrypted=Nepodarilo sa inicializovať Enigmail.\nChcete odoslať správu nezašifrovanú?
+composeSpecifyEmail=Zadajte prosím svoju adresu, ktorá bude použitá pri podpisovaní odchádzajúcej správy.\n Ak túto položku nevyplníte, bude pre podpis použitá položka OD v adrese správy.
+sendingBCC=Táto správa je typu BCC (blind copy - skrytá kópia). Ak je táto správa určená pre zašifrovanie, všetci adresáti budú tiež použitý ako BCC adresáti a budú v šifrovacom zozname. \n\nKliknite na OK pre zašifrovanie, alebo Zrušiť pre zablokovanie odoslania.
+sendingNews=Správu sa nepodarilo zašifrovať a odoslať.\n\nTáto správa nemôže byť zašifrovaná pretože je to správa pre diskusnú skupinu. Pošlite prosím správu ako nešifrovanú.
+noPGPMIME=PGP/MIME nie je prístupné!\nPoužiť inline PGP pre podpis/šifrovanie?
+hasHTML=HTML e-mail upozornenie:\nTáto správa môže obsahovať HTML, ktoré nie je možné podpísať/zašifrovať. V budúcnosti ak budete klikať na tlačidlo Nová/Odoslať stlačte na klávesnici SHIFT, pre odoslanie podpísanej správy.\nAk chcete podpisovať správy štandardne, odznačte prosím 'Vytvoriť správu v HTML' a v nastaveniach permanentne zakážte HTML mail pre tento e-mail účet.
+strippingHTML=Správa obsahuje HTML formátovanie a toto bude pri konvertovaní do čistého text formátu pri podpise/šifrovaní odstránené. Chcete naozaj pokračovať?
+attachWarning=Prílohy tejto správy nie sú lokálne a preto nemôžu byť zašifrované. Požiadavka na zašifrovanie najskôr uloží prílohy ako lokálne a až potom ich pridá ako prílohy. Chcete pokračovať?
+savingMessage=Chcete dešifrovať správu pred jej uložením?\n\nStlačte OK pre dešifrovanie, alebo Zrušiť pre uloženie nedešifrovanej správy.
+quotedPrintableWarn=Máte povolené 'quoted-printable' kódovanie pre odosielané správy. Toto môže spôsobiť nekorektné dešifrovanie a/alebo overenie vašej správy.\n Chcete vypnúť kódovanie 'quoted-printable' správ teraz?
+minimalLineWrapping=Máte nastavené zalamovanie riadkov po %S znakoch. Pre korektné šifrovanie a/alebo podpisovanie treba nastaviť maximíálne 68 znakov.\nChcete nastaviť maximálne 68 znakov teraz?
+warning=Upozornenie
+signIconClicked=Môžete manuálne modifikovať podpis.
+
+sendAborted=Odosielanie správy zlyhalo.\n\n
+
+statPGPMIME=PGP/MIME
+statSigned=PODPÍSANÉ
+statEncrypted=ŠIFROVANÉ
+statPlain=IBA TEXT
+
+offlineSave=Uložiť %S správu do %S priečinku pre Neodoslanú poštu?
+
+onlineSend=Odoslať správu ako %S do %S?
+offlineNote=Momentálne ste offline. Chcete uložiť správu do priečinku Neodoslaná pošta?
+encryptKeysNote=Poznámka: správa je šifrovaná pomocou ID/kľúčov: %S
+
+signFailed=Chyba v Enigmail; Šifrovanie/Podpisovanie zlyhalo; odoslať poštu nezašifrovanú?
+acctNotConfigured=Na používanie OpenPGP tento účet nie je nakonfigurovaný.\nOdoslať poštu nezašifrovanú?
+recipientsSelectionHdr=Vyberte adresáta pre šifrovanie
+
+configureNow=Pre tento účet nemáte OpenPGP nakonfigurovaný. Chcete ho nakonfigurovať teraz?
+
+signYes=Správa bude podpísaná
+signNo=Správa nebude podpísaná
+encryptYes=Správa bude šifrovaná
+encryptNo=Správa nebude šifrovaná
+rulesConflict=Konflikt pravidiel pre adresátov \n%S\n\nOdoslať správu s týmito nastaveniami?
+
+# Strings in enigmailMsgHdrViewOverlay.js
+keyNeeded=Verejný kľúč %S nemá overený podpis
+clickDecrypt=; kliknite na Dešifrovať
+clickDecryptRetry=; kliknite na Dešifrovať znovu
+clickPen=; kliknite na ikonu zlomeného pera
+clickPenDetails=; pre získanie podrobnejších informácií kliknite na ikonu zlomeného pera
+clickQueryPenDetails=; kliknite na ikonu zlomeného pera pre získanie podrobnejších informácií
+clickKey=; kliknite na ikonu pera
+clickQueryKeyDetails=; kliknite na ikonu kľúča pre získanie podrobnejších informácií
+clickKeyDetails=; kliknite na ikonu pera pre získanie podrobnejších informácií
+clickPenKeyDetails=; kliknite na ikonu pera alebo kľúča pre získanie podrobnejších informácií
+msgPart=Časť správy je %S
+msgSigned=podpísaná
+msgEncrypted=šifrovaná
+msgSignedAndEnc=podpísaná a šifrovaná
+
+reloadImapMessage=Znovu načítať kompletne IMAP správy pre dešifrovanie/overenie?
+reloadImapError=Chyba - IMAP správy sú veľmi veľké pre dešifrovanie/overenie
+
+unverifiedSig=Neoverený podpis
+incompleteDecrypt=Nekompletné dešifrovanie
+failedSig=Chyba - overovanie podpisu zlyhalo
+needKey=Chyba - chýba súkromný kľúč pre dešifrovanie správy
+failedDecrypt=Chyba - dešifrovanie zlyhalo
+badPhrase=Chyba - zlé heslo
+failedDecryptVerify=Chyba - dešifrovanie/overenie zlyhalo
+viewInfo=; Zobraziť > Bezpečnostné informácie správy pre detaily
+
+decryptedMsg=Dešifrovaná správa
+
+# Strings in enigmailNavigatorOverlay.js
+navEncryptError=Chyba pri šifrovaní a/alebo podpise správy.\n
+navDecryptError=Chyba pri dešifrovaní správy.\n
+
+# Strings in pref-enigmail.js
+uninstallConfirm=Naozaj chcete odstrániť všetky súbory spojené s OpenPGP? Mozilla komponenty aj chrome priečinky?
+uninstallFailOverlay=Nemožno odinštalovať OpenPGP komunikátor kvôli prekrývaniu RDF; nemožno odstrániť chrome jar súbor
+uninstallFailDelete=Chyba pri odstraňovaní súboru
+uninstallFail=Nepodarilo sa odinštalovať Enigmail
+uninstallSuccess=Enigmail bol úspešne odinštalovaný
+testNoSvc=EnigTest: Nie je prístup k službe Enigmail
+testNoEmail=EnigTest: Zadajte e-mailovú adresu pre testovanie
+testSucceeded=OpenPGP pracuje správne. Detaily získate v konzole dostupnej cez OpenPGP menu
+oldGpgVersion=Stará verzia OpenPGP.\n\nPoužívate GnuPG verzie %S, ktorá už nie je podporovaná. OpenPGP(Enigmail) potrebuje GnuPG verzie 1.2.5 alebo novšie; nainštalujte si prosím GnuPG novšej verzie, lebo OpenPGP nebude pracovať.
+locateGpg=Cesta k programu GnuPG
+invalidGpgPath=GnuPG nemôže byť spustené zo zadanej cesty. Služba OpenPGP je teraz deaktivovaná pokiaľ nenastavíte správnu cestu k GnuPG a nereštartujete aplikáciu.
+warningsAreReset=Všetky upozornenia boli resetované.
+prefs.gpgFound=GnuPG sa nachádza v %S
+prefs.gpgNotFound=GnuPG sa nepodarilo nájsť
+prefs.warnAskNever=Upozornenie: aktivácia tejto možnosti spôsobí odosielanie nešifrovaných správ bez upozornenia aj v prípade, že bude chýbať kľúč pre jedného z príjemcov -- Ak sa toto stane, OpenPGP vás nebude o tomto stave informovať!
+
+# Strings used in components/enigmail.js
+# (said file also re-uses some strings given above)
+
+enterPass=Zadajte prosím vaše %S heslo
+enterPassOrPin=Zadajte prosím vaše OpenPGP heslo, alebo SmartCard PIN
+repeatPass=Zadajte prosím znovu vaše OpenPGP heslo
+rememberPass=Pamätať si %S minút
+enterAdminPin=Zadajte prosím ADMIN PIN pre vašu SmartCard
+enterCardPin=Zadajte prosím Smartcard PIN
+
+notInit=Chyba - OpenPGP(Enigmail) nebol inicializovaný
+badCommand=Chyba - zlý šifrovací príkaz
+cmdLine=príkazový riadok a výstup:
+notRequired=Chyba - nie je požadované šifrovanie
+notComplete=Chyba - generovanie kľúča nebolo kompletné
+invalidEmail=Chyba - chybná adresa (adresy)
+noPassphrase=Chyba - nebolo zadané heslo
+noPGPblock=Chyba - Nebol nájdený správny OpenPGP blok údajov
+unverifiedReply=Niektorá časť správy (odpovede) bola pravdepodobne modifikovaná (zmenená)
+decryptToImport=Kliknite na Dešifrovať pre import bloku verejného kľúča v správe
+sigMismatch=Chyba - Poškodený podpis
+cantImport=Chyba v importovanom verejnom kľúči\n\n
+messageSizeError=Správa je pre overenie príliš veľká
+sc.noCardAvailable=Vo vašej čítačke nebola nájdená SmartCard\nVložte prosím vašu SmartCard a skúste to znovu
+sc.noReaderAvailable=Vaša SmartCard nie je prístupná\nPripojte prosím vašu SmartCard čítačku, vložte vašu kartu, a skúste to znovu
+
+gpgNotFound=Nie je možné nájsť GnuPG agenta '%S'.\nUistite sa, či máte správne zadanú cestu, k spustiteľnému GnuPG súboru v OpenPGP nastaveniach
+gpgNotInPath=Na zadanej ceste nie je možné nájsť spustiteľný GnuPG súbor.\nUistite sa prosím, či máte k spustiteľnému GnuPG súboru cestu správne zadanú v OpenPGP nastaveniach
+enigmimeNotAvail=Služba Enigmime nie je dostupná
+gpgAgentNotStarted=Nepodarilo sa spustiť program pgp-agenta, ktorý je potrebný pre vašu verziu GnuPG %S.
+
+prefUntrusted=NEOVERENÝ
+prefRevoked=REVOKOVANÝ (znefunkčnený) kľúč
+prefExpiredKey=VYPRŠANÝ (neplatný) kľúč
+prefExpired=VYPRŠANÉ (neplatné)
+prefGood=Podpis od %S je SPRÁVNY
+prefBad=Podpis od %S je ZLÝ
+
+failFingerprint=Chyba - Príkaz na extrakciu odtlačku prsta (fingerprint) zlyhal
+failMultiple=Chyba - Nájdený mnohonásobný kľúč pre %S
+failNoKey=Chyba - Chýba kľúč pre %S
+failOnlyGPG=Chyba - Iba GnuPG kľúč môže byť prijatý zo servera kľúčov
+failCancel=Chyba - Príjem kľúča zrušený používateľom
+failNoServer=Error - Nie je špecifikovaný server kľúčov pre príjem kľúča z
+failNoID=Chyba - Nešpecifikované ID kľúča na príjem kľúča pre
+failKeyExtract=Chyba - Príkaz na extrakciu kľúča zlyhal
+notFirstBlock=Chyba - Prvý OpenPGP blok nie je blok verejného kľúča
+importKeyConfirm=Importovať verejný kľúč vložený v správe?
+failKeyImport=Chyba - import kľúča zlyhal
+fileWriteFailed=Nemožno zapisovať do súboru %S
+
+successKeyImport=Kľúče boli úspešne importované
+
+importKey=Import verejného kľúča %S zo servera kľúčov:
+uploadKey=Odoslať verejný kľúč %S na server kľúčov:
+keyId=ID kľúča
+keyAndSigDate=Kľúč ID: 0x%S / Podpísaný: %S
+keyFpr=Odtlačok prsta (fingerprint): %S
+photoFor=PGP foto ID pre %S
+noEmailProvided=Chýba adresa!
+invalidRecp=Chybný adresáti: %S
+
+# Strings used in enigmailUserSelection.js
+selKeyExpired=Platnosť kľúča %S vypršala
+createdHeader=Vytvorené
+keyInvalid=NEPLATNÝ kľúč
+keyDisabled=ZAKÁZANÝ kľúč
+atLeastOneKey=Nevybrali ste žiadny kľúč! Musíte vybrať aspoň jeden kľúč
+
+# Strings used in enigmailAttachmentDialog.js
+pgpMimeNote=POZNÁMKA: PGP/MIME je podporovaný iba v niektorých e-mailových klientoch! V prostredí Windows je to Enigmail, OpenPGP, Sylpheed, Pegasus a Mulberry; v Linuxe/UNIXe a Mac OS X je v najčastejšie používaných e-mailových klientoch plná podpora. Ak uznáte za vhodné, vyberte %S voľbu.
+first=prvý
+second=druhý
+
+# Strings used in am-enigprefs.js
+encryptKeyHeader=Vyberte PGP kľúč pre šifrovanie
+identityName=Identita: %S
+
+# Strings used in enigmailSingleRcptSettings.js
+noEncryption=Aktivovali ste šifrovanie, ale nevybrali ste kľúč. V príkaze na šifrovanie správ pre %S, musíte vybrať jeden alebo viac správnych kľúčov z vášho zoznamu. Nechcete zašifrovať správu pre %S?
+noKeyToUse=(nie - nešifrovať)
+noEmptyRule=Pravidlo nesmie byť prázdne! Zadajte prosím adresu(y) do prvého poľa.
+invalidAddress=Nezadali ste správne adresu(y). Nezadávajte mená adresátov, ale iba adresy. Napríklad:\nZlé: Nejaké Meno <nejake.meno@domena.sk>\nSprávne: najake.meno@domena.sk
+noCurlyBrackets=Klasické zátvorky {} majú špeciálny význam a nemožno ich použiť v adrese. Ak chcete upraviť použitie porovnávania pre toto pravidlo, použite 'Použiť pravidlo ak adresát ...'.\nViac informácií získate v Pomocníkovi.
+
+# Strings used in enigmailRulesEditor.js
+never=Nikdy
+always=Vždy
+possible=Možno
+deleteRule=Naozaj chcete odstrániť vybrané pravidlo?
+nextRcpt=(Ďalší adresát)
+negateRule=Nie
+
+# Strings used in enigmailSearchKey.js
+needOnline=Funkcia, ktorú ste vybrali, nie je prístupná v offline režime. Prepnite sa do online a skúste to znovu.
+protocolNotSupported=Protokol '%S://' ktorý ste vybrali nie je podporovaný pre získanie OpenPGP kľúčov.
+gpgkeysDisabled=Mohlo by Vám pomôcť povolenie nastavenia 'extensions.enigmail.useGpgKeysTool'.
+noKeyserverConn=Nemožno sa pripojiť na server kľúčov %S.
+keyDownloadFailed=Nepodarilo sa získať kľúče zo servera kľúčov. Informácia o stave:\n%S
+internalError=Nastala vnútorná chyba. Kľúče nemožno získať alebo importovať.
+noKeyFound=Prepáčte, nebol nájdený žiadny kľúč pre Vami zadané adresy.
+
+# gpgkeys_%S je jeden z nástrojov príkazového riadka gpg, gpgkeys_hkp, gpgkeys_ldap, atd.
+gpgKeysFailed=Nepodarilo sa nájsť alebo získať kľúč zo servera kľúčov: gpgkeys_%S nemožno spustiť.
+
+
+# Strings in enigmailEditKeyTrustDlg.xul
+setKeyTrustFailed=Kľúč sa nepodarilo overiť (trustovať)
+setKeyTrustOK=Kľúč bol úspešne overený (trustovaný)
+
+# Strings in enigmailSignKeyDlg.xul
+signKeyFailed=Kľúč sa nepodarilo podpísať
+signKeyOK=Kľúč bol podpísaný
+undefinedError=Nastala neočakávaná chyba.
+keyAlreadySigned=Kľúč je už podpísaný, nemôže mať dva podpisy.
+noSignKeyExpired=Kľúč je neplatný (vypršala jeho platnosť). Tento kľúč si môžete podpísať na vlastnú zodpovednosť.
+
+
+# Strings in enigmailKeyManager.js
+keyMan.loadingKeys=Načítavanie kľúčov, čakajte...
+keyValid.unknown=neznámy
+keyValid.invalid=zlý
+keyValid.disabled=zakázaný
+keyValid.revoked=znefunkčnený
+keyValid.expired=vypršaný
+keyValid.noSubkey=neplatný podkľúč
+
+keyTrust.untrusted=nedôveryhodný
+keyTrust.marginal=skoro dôveryhodný
+keyTrust.full=dôveryhodný
+keyTrust.ultimate=bezpodmienečne dôveryhodný
+keyType.public=verejný
+keyType.publicAndSec=verejný/súkromný
+keyMan.enableKey=Povoliť kľúč
+keyMan.disableKey=Zakázať kľúč
+userAtt.photo=Používateľov atribút (JPEG obrázok)
+
+asciiArmorFile=ASCII kódovanie (*.asc)
+gnupgFile=GnuPG súbory
+saveRevokeCertAs=Vytvoriť a uložiť certifikát znefunkčnenia.
+revokeCertOK=Certifikát znefunkčnenia bol vytvorený. Pomocou neho môžete zrušiť platnosť vášho verejného kľúča, v tom prípade prídete aj o súkromný kľúč.\n\nUložte si tento kľúč na CD alebo Floppy Disk kvôli bezpečnosti. Ak sa niekto dostane k tomuto kľúču, môže zrušiť platnosť vášho verejného aj súkromného kľúča.
+revokeCertFailed=Certifikát znefunkčnenia sa nepodarilo vytvoriť.
+
+addUidOK=UID bolo úspešne pridané
+addUidFailed=Nepodarilo sa pridať UID
+noKeySelected=Musíte vybrať aspoň jeden kľúč za účelom vykonania vybranej operácie
+exportToFile=Export verejného kľúča do súboru
+exportSecretKey=Chcete uložiť súkromný kľúč medzi uložené OpenPGP kľúče?
+saveKeysOK=Kľúč bol úspešne uložený
+saveKeysFailed=Kľúč sa nepodarilo uložiť
+importKeysFailed=Import kľúča zlyhal
+enableKeyFailed=Povolenie/Zakázanie kľúča zlyhalo
+specificPubKeyFilename=%S (0x%S) verejný
+specificPubSecKeyFilename=%S (0x%S) verejný-súkromný
+defaultPubKeyFilename=Exportovaný verejný kľúč
+defaultPubSecKeyFilename=Exportované-verejné-a-súkromné-kľúče
+noSecretKeys=Nebol nájdený súkromný kľúč.\n\nChcete teraz vygenerovať svoj vlastný kľúč?
+
+sendKeysOk=Kľúč(e) bol úspešne odoslaný
+sendKeysFailed=Odoslanie kľúčov zlyhalo
+receiveKeysOk=Kľúč(e) boli úspešne aktualizované
+receiveKeysFailed=Získanie kľúčov zlyhalo
+
+importFromClip=Chcete importovať nejaký kľúč(e) zo schránky?
+copyToClipbrdFailed=Vybraný kľúč(e) sa nedajú skopírovať do schránky.
+copyToClipbrdOK=Kľúč(e) boli skopírované do schránky
+
+deleteSecretKey=UPOZORNENIE: Chystáte sa odstrániť súkromný kľúč!\nAk ho odstránite, nebudete môcť už nikdy prečítať správy zašifrované týmto kľúčom.\n\nNaozaj chcete odstrániť súkromný aj verejný kľúč\n'%S'?
+deleteMix=UPOZORNENIE: Chystáte sa odstrániť tajný kľúč!\nAk odstránite svoj tajný kľúč, nebudete už môcť dešifrovať žiadne správy zašifrované vašim verejným kľúčom.\n\nNaozaj chcete odstrániť obidva kľúče?
+deletePubKey=Chcete odstrániť verejný kľúč\n'%S'?
+deleteSelectedPubKey=Naozaj chcete odstrániť verejný kľúč?
+deleteKeyOk=Kľúč bol úspešne odstránený
+deleteKeyFailed=Kľúč sa nepodarilo odstrániť.
+revokeKeyAsk=Táto funkcia vytvorí a importuje certifikát znefunkčnenia kľúča. Naozaj chcete znefunkčniť kľúč %S?
+revokeKeyOk=Kľúč bol úspešne znefunkčnený. Ak je vás kľúč dostupný na serveri kľúčov nahrajte tento kľúč na server kľúčov, aby aj ostatný vedeli, že tento kľúč je už neplatný.
+revokeKeyFailed=Kľúč sa nepodarilo znefunkčniť.
+uploadingKey=Aktualizovanie kľúča(ov)...
+downloadingKey=Získanie kľúča(ov)...
+keyserverAccessAborted=zrušené
+refreshAllQuestion=Nevybrali ste žiadny kľúč. Chcete obnoviť všetky kľúče?
+refreshKey.warn=Upozornenie: Uvážte prosím, koľko máte kľúčov a ako rýchle máte pripojenie, môže to trvať dlhšie!\n\nPokračovať?
+
+# Strings in enigmailViewKeySigDlg.xul
+keySignatureLocal=Lokálny
+keySignatureExportable=Exportovateľný
+keySignatureNoKey=Bez kľúča
+userIdNotFound=(UID nenájdené)
+retrieveKeyConfirm=Kľúč nie je dostupný - chcete ho získať zo servera kľúčov?
+
+# Strings in enigmailManageUidDlg.xul
+changePrimUidFailed=Zmena primárneho používateľského ID zlyhala
+changePrimUidOK=Zmena primárneho používateľského ID bola úspešná
+deleteUidFailed=Zrušenie používateľského ID %S zlyhalo
+deleteUidOK=Zrušenie používateľského ID %S bolo úspešné
+revokeUidFailed=Znefunkčnenie používateľského ID %S zlyhalo
+revokeUidOK=Znefunkčnenie používateľského ID %S bolo úspešné. Ak je váš kľúč dostupný na serveri kľúčov, nahrajte tento kľúč tiež na server kľúčov, aby aj ostatní vedeli, že tento kľúč je už neplatný.
+revokeUidQuestion=Naozaj chcete znefunkčniť používateľské ID %S?
+deleteUidQuestion=Naozaj chcete odstrániť používateľské ID %S?\n\nPoznámka: týmto spôsobom však neznefunkčníte kľúč, ak je publikovaný na serveri kľúčov. Na to sa používa znefunkčnenie kľúča (revokácia).
+
+# Strings in enigmailKeyDetailsDlg.xul
+keyTypePublic=verejný kľúč
+keyTypeSubkey=podkľúč
+keyTypePair=pár kľúčov
+keyExpiryNever=nikdy
+keyAlgorithm_1=RSA
+keyAlgorithm_2=RSA
+keyAlgorithm_3=RSA
+keyAlgorithm_16=ELG
+keyAlgorithm_17=DSA
+keyAlgorithm_20=ELG
+
+# Strings in enigmailGenCardKey.xul
+keygen.started=Čakajte prosím, generuje sa kľúč ....
+keygen.completed=Kľúč bol vygenerovaný. ID nového kľúča je: 0x%S
+keygen.keyBackup=Kľúč bol zálohovaný ako %S
+keygen.passRequired=Zadajte prosím heslo ak chcete vytvoriť záložnú kópiu vášho kľúča mimo vašej SmartCard.
+
+# Strings in enigmailSetCardPin.xul
+cardPin.dontMatch=PIN nebol zadaný správne, zadajte ho znovu prosím
+cardPin.minLength=PIN musí obsahovať aspoň %S znakov, alebo čísiel
+cardPin.processFailed=Nepodarilo sa zmeniť PIN
+
+# Strings in enigRetrieveProgress.xul
+keyserverProgress.refreshing=Obnovujú sa kľúče, čakajte prosím ...
+keyserverProgress.uploading=Odosielajú sa kľúče, čakajte prosím ...
+keyserverTitle.refreshing=Obnovovanie kľúčov
+keyserverTitle.uploading=Odosielanie kľúčov
+
+# Strings in enigmailSetupWizard
+setupWizard.gpgNotFound=Nemožno nájsť GnuPG, zadajte prosím správnu cestu
+passphrase.min8keys=Vaše heslo obsahuje menej ako 8 znakov!
+setupWizard.applyAllId=Aktivovať OpenPGP pre všetky identity
+setupWizard.applySomeId=Aktivovať OpenPGP pre identitu: %S
+setupWizard.applySingleId=Aktivovať OpenPGP pre váš účet
+setupWizard.setAllPrefs=Nastaviť všetky dôležité nastavenia
+setupWizard.setSomePrefs=Nastaviť všetky dôležité nastavenia ručne
+setupWizard.setNoPrefs=Nenastavovať žiadne dôležité nastavenia
+setupWizard.createKey=Vytvoriť nový 2048-bit OpenPGP kľúč, platný 5 rokov
+setupWizard.useKey=Použiť existujúci OpenPGP kľúč ID %S pre podpisovanie
+setupWizard.encryptAll=Šifrovať všetky správy
+setupWizard.encryptNone=Nešifrovať všetky správy
+setupWizard.signAll=Podpisovať všetky správy
+setupWizard.signNone=Nepodpisovať všetky správy
+setupWizard.reallyCancel=Naozaj chcete zrušiť sprievodcu nastavením OpenPGP?
+setupWizard.locateGpg=Sprievodca nastavením nemohol nájsť GnuPG spustiteľný súbor (exe), nájdite ho prosím manuálne v nasledujúcom dialógu. Ak nemáte nainštalované GnuPG, prejdite prosím na stránku http://www.gnupg.org a nainštalujte ho.
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/help
^
|
+(directory)
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/help/compose.html
^
|
@@ -0,0 +1,86 @@
+<html>
+<head><title>Enigmail Help: Message Composition</title>
+</head>
+<body>
+<h1>Enigmail Help</h1>
+
+<h3>Using Enigmail when composing messages</h3>
+
+<ul>
+ <li><b>Enigmail menu in Mail/Compose window</b>
+ <ul>
+ <li><b>Sign message</b>: Enable/Disable sending signed mail. User is notified
+ if signing fails.
+ </li>
+ <li><b>Encrypt message</b>: Enable/Disable encryption to all recipient(s) before
+ sending. User is notified if encryption fails.
+ <ul>
+ <p>If <em>Display selection when necessary</em> is set in <b>Preferences
+ -> Key Selection tab</b>, a list of keys will pop up if there are addresses
+ in the list of recipients for the message for whom you have no public key.</p>
+ <p>If <em>Never display OpenPGP key selection dialog</em> is set in <b>Preferences
+ -> Key Selection tab</b>, and there are addresses in the list of recipients for
+ the message for whom you have no public key, the message will be sent unencrypted.</p>
+ </ul>
+ </li>
+ <li><b>Use PGP/MIME for this message</b>: Enable/Disable the use of
+ <a href="http://community.roxen.com/developers/idocs/rfc/rfc3156.html" target="_blank">PGP/MIME</a>
+ for this message.
+ <ul>
+ <p>If you know the recipient(s) can read mail using the PGP/MIME format,
+ you should use it.</p>
+ <p>This feature is dependent on the settings in <b>Preferences
+ -> PGP/MIME tab</b> being set to <em>Allow to use PGP/MIME</em> or <em>Always use
+ PGP/MIME</em>.</p>
+ </ul></li>
+ <li><b>Default composition options</b>: Submenu.
+ </p>
+ <ul>
+ <li><b>Signing/Encryption Options...</b>: shortcut to <b>Account Settings ->
+ OpenPGP Options.</b>
+ </li>
+ <li><b>Send options...</b>: shortcut to <b>Preferences ->
+ Send</b> tab.
+ </li>
+ <li><b>Key selection options...</b>: shortcut to <b>Preferences ->
+ Key Selection</b> tab.
+ </li>
+ <li><b>PGP/MIME options...</b>: shortcut to <b>Preferences ->
+ PGP/MIME</b> tab.
+ </li>
+ </li>
+ </ul>
+ <li><b>Undo encryption</b>: If there is a failure when actually sending mail,
+ such as the POP server not accepting the request, Enigmail will not know
+ about it, and the encrypted message will continue to be displayed in the
+ Compose window. Choosing this menu item will undo the encryption/signing,
+ reverting the Compose window back to its original text.<br>
+ <em>As a temporary fix, this option may also be used to decrypt the quoted
+ text when replying to encrypted messages. Enigmail should automatically
+ decrypt the quoted message, but if that fails for some reason, you can use
+ this menu item to force it.</em>
+ </li>
+ <li><b>Insert public key</b>: insert ASCII-armored public key block at the
+ current cursor location in the Compose window. You will be prompted for the
+ email addresses of the key(s) to be inserted. Keys inserted in this manner
+ will automatically be recognized at the receiving end by Enigmail. After
+ key insertion, you may still choose to sign/encrypt the mail as
+ needed. Also, do not insert more than one key block in a message; just
+ specify multiple email addresses, separated by commas or spaces, when
+ prompted.
+ </li>
+ <li><b>Clear save passphrase</b>: Clears cached passphrase. Useful if you
+ have multiple passphrases.
+ </li>
+ <li><b>Help</b>: Displays Help information from the website (this page).
+ </li>
+ </li>
+ </ul>
+</ul>
+<hr/>
+<p>
+Further help is available on the
+<a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help web page</a>
+</p>
+</body>
+</html>
\ No newline at end of file
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/help/editRcptRule.html
^
|
@@ -0,0 +1,107 @@
+<html>
+<head><title>Enigmail Help: Edit OpenPGP Rule</title>
+</head>
+<body>
+<h1>Enigmail Help</h1>
+
+<h3>Using the Enigmail Rules Editor: Edit OpenPGP Rule</h3>
+<p>In the Rules Editor, you can specify defaults per recipient for enabling
+encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this
+dialog, you can specify the rules for a single recipient, and for a group
+of recipients with very similar attributes.
+</p>
+<ul>
+ <li><span style="font-weight: bold;">Set OpenPGP Rules for</span>: Contains the email
+ addresses of the recipients (without names, i.e. just an address like
+ <tt>somebody@email.domain</tt>). You can specify several email addresses, separated by spaces.
+ The address specified here can consist of
+ only the domain section so that mail to any address at that domain will
+ be matched, e.g. <tt>@email.domain will</tt> allow matching to <tt>body@email.domain</tt>,
+ <tt>somebody@email.domain</tt>, <tt>anybody@email.domain</tt>, etc.
+ </li>
+ <li><span style="font-weight: bold;">Apply rule if recipient ...</span>:
+ This modifies the matching of the email addresses.
+ If multiple addresses are entered, the setting will apply to all.
+ The examples below are based on <tt>body@email.domain</tt>
+ entered in the <i>OpenPGP Rules</i> field above.
+ <ul>
+ <li><i>Is exactly</i>: with this setting, the rule will only trigger on
+ emails to <tt>body@email.domain</tt> (exact, case insensitive matching).
+ </li>
+ <li><i>Contains</i>: with this setting, any email address containing the string
+ is matched,
+ e.g. <tt>anybody@email.domain</tt> or <tt>body@email.domain.net</tt>
+ </li>
+ <li><i>Begins with</i>: with this setting, any email address starting with
+ the string is matched, e.g. <tt>body@email.domain.net</tt>,
+ <tt>body@email.domain-name.com</tt>.
+ </li>
+ <li><i>Ends with</i>: with this setting, any email address ending with
+ the string is matched, e.g. <tt>anybody@email.domain</tt>,
+ <tt>somebody@email.domain</tt>.
+ </li>
+ </ul>
+
+ </li>
+ <li><span style="font-weight: bold;">Continue with the next rule for the matching address</span><br>
+ Enabling this function will allow you to define a rule but not have
+ to specify a KeyID in the <em>Use the following OpenPGP keys:</em>
+ field, so that the email address is used to check for a key at the
+ time of sending. Also, further rules for the same address(es) will
+ be processed as well.
+ </li>
+ <li><span style="font-weight: bold;">Do not check further rules for the matching address</span><br>
+ Enabling this function stops processing any other rules for the
+ matching address(es) if this rule is matched; i.e. rule processing
+ continues with the next recipient.
+ </li>
+ <li><span style="font-weight: bold;">Use the following OpenPGP keys:</span><br>
+ Use the <em>Select Key(s)..</em> button to select the recipient
+ keys to be used for encryption. As in the action above, no further
+ rules for the matching address(es) are processed.
+ </li>
+ <li><span style="font-weight: bold;">Default for Signing</span>: enable or disable
+ message signing. This either uses or overrides what you have specified
+ in the message composition window. The values are:
+ </li>
+ <ul>
+ <li><i>Never</i>: disable signing, even if it was enabled in the message
+ composition window (overrules the other values)<br>
+ </li>
+ <li><i>Yes, if selected from in Message Composition</i>: leave signing
+ as specified in the message composition window
+ </li>
+ <li><i>Always</i>: enable signing, even if it was <span
+ style="font-style: italic;">not</span> enabled in the message
+ composition window
+ </li>
+ </ul>
+</ul>
+<div style="margin-left: 40px;">These signing settings are applied for
+all rules that match. If one of the rules disables signing, the message
+will not be signed, regardless of other rules that specify <i>Always</i>.<br>
+</div>
+<ul>
+ <li><span style="font-weight: bold;">Encryption</span>: enable or
+ disable message encryption. The allowed settings and their meaning are
+ the same as for message signing.</li>
+ <li><span style="font-weight: bold;">PGP/MIME</span>: enable or
+ disable the use of the PGP/MIME (RFC 3156) message encoding.
+ If PGP/MIME is disabled, the
+ messages are encoded using "inline PGP". The allowed values and their
+ meaning are the same as for message signing.
+ </li>
+</ul>
+<p>The rules are processed in the order displayed in the list in the
+<em>OpenPGP Rules Editor</em>. Whenever a rule
+matches a recipient and contains a OpenPGP Key ID, in addition to using the
+specified Key ID, the recipient is not considered anymore when processing
+further rules.
+</p>
+<hr/>
+<p>
+Further help is available on the
+<a href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">Enigmail Per-Recipient Settings page</a>
+</p>
+</body>
+</html>
\ No newline at end of file
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/help/messenger.html
^
|
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="sk"><head><title>Pomocník Enigmailu: Čítanie
+správ</title></head>
+<body><h1>Pomocník OpenPGP</h1>
+<h3>Používanie OpenPGP pri čítaní správ</h3>
+<ul> <li><b>Tlačidlo dešifrovať v hlavnom
+okne </b><br>Toto
+tlačidlo má niekoľko funkcií: dešifrovanie, overovanie, alebo import
+verejných kľúčov. Bežne prebieha
+dešifrovanie/overovanie automaticky,
+ale táto funkcia môže byť zakázaná v Nastaveniach. Ak nastane chyba,
+zobrazí sa krátka správa v stavovom riadku správy. Ak kliknete na
+ikonu Dešifrovať, zobrazí sa detailný výpis chýb vrátane GnuPG
+príkazov. </li> <li><b>Ikony pera a kľúča v hlavičke
+správy</b><br>
+Ikony pera a kľúča v hlavičke správy indikujú, či správa, ktorú čítate
+je podpísaná a (alebo) šifrovaná a či je podpis platný tj. že
+správa
+nebola zmenená. Ak bola správa zmenená, ikona pera sa zmení na ikonu
+zlomeného pera, ktorá indikuje neplatný podpis.<em></em><em></em>
+Ak kliknete pravým tlačidlom na ikonu pera alebo kľúča zobrazí sa
+ponuka s nasledujúcimi možnosťami: <ul> <li><em>OpenPGP
+Bezpečnostné informácie</em>: umožní zobraziť
+výstup GnuPG pre túto správu.</li> <li><em>Kopírovať
+OpenPGP bezpečnostné informácie</em>: kopíruje výstup z GnuPG do
+schránky; umožní napríklad vloženie do odpovedi na správu.</li> <li><em>Zobraz OpenPGP
+foto ID</em>: umožní zobraziť <em>Foto ID</em>
+osoby, ktorá zaslala danú správu, ak ho verejný kľúč obsahuje. (<em>Táto
+možnosť je dostupná len ak je fotografia vo verejnom kľúči uložená.)</em></li>
+<li><em>S/MIME Bezpečnostné informácie</em>: umožní
+zobraziť S/MIME Bezpečnostné informácie správy.</li> </ul>
+<p>Ak nemáte nastavené <em>keyserver-options
+auto-key-retrieve</em> v súbore <tt>gpg.conf</tt> a
+čítate správy, ktoré sú podpísané alebo šifrované, uvidíte v paneli
+správy ikonku <em>Pera</em>, na ktorom bude ešte <em>Otáznik</em>
+a v hornej časti sa zobrazí: <em>Časť správy bola podpísaná;
+kliknite na ikonku pera pre viac informácií</em> a potom sa vám na
+paneli zobrazia všetky OpenPGP údaje o podpísanej správe.</p>
+<p>Toto sa môže stať aj v prípade, že máte možnosť <em>keyserver-options
+auto-key-retrieve</em> nastavenú v súbore <tt>gpg.conf</tt>
+ale OpenPGP kľúč nie je dostupný na prednastavenom keyservere.</p>
+<p>Kliknutím na ikonku <em>Pera a Otázniku</em>
+sa vám zobrazí hlásenie že kľúč, ktorým bola správa podpísaná nemáte
+dostupný. Kliknutím na tlačidlo OK sa dostanete k ďalšiemu oknu, kde si
+môžete zo zoznamu keyserverov odkiaľ je možné stiahnuť odosieľateľov verejný
+kľúč.</p> <p>Pre nastavenia, ktorý z keyserverov chcete
+používať použite ponuku <b>OpenPGP -> Nastavenia
+-> Základné</b> a napíšte adresy do riadku<em>
+Keyserver(y) kľúčov:</em> viac adries oddelte čiarkou. <em>Prvý
+keyserver bude použitý ako predvolený.</em></p> </li> <li><b>Otváranie
+šifrovaných príloh / import priložených OpenPGP kľúčov</b><br>Prílohy
+nazvané *.pgp, *,asc a *.gpg je OpenPGP schopné rozpoznať a použiť.
+Pravým kliknutím na túto prílohu máte k dispozícií dve špecifické položky v
+kontextovej ponuke: <span style="font-style: italic;">Dešifrovať
+a Otvoriť</span> a <span style="font-style: italic;">Dešifrovať
+a uložiť</span>. Môžete použiť prvú možnosť, ak
+chcete prílohu najskôr otvoriť alebo druhú, ak
+chcete kľúč uložiť. Ak je príloha správy
+rozpoznaná ako súbor obsahujúci OpenPGP kľúč, budete vyzvaní či
+chcete kľúč importovať do vášho zoznamu kľúčov. </li>
+</ul><hr><p>Ďalšia pomoc je dostupná na
+stánkach <a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help (anglicky)</a>
+</p></body></html>
+
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/help/rulesEditor.html
^
|
@@ -0,0 +1,68 @@
+<html>
+<head><title>Enigmail Help: Rules Editor</title>
+</head>
+<body>
+<h1>Enigmail Help</h1>
+
+<h3>Using the Enigmail Rules Editor</h3>
+<p>In the Rules Editor, you can specify defaults per recipient for enabling
+encryption, signing and PGP/MIME, and to
+define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented
+on a single line:
+</p>
+<ul>
+ <li><span style="font-weight: bold;">Email</span>: the e-mail(s) from
+ the To:, Cc: and Bcc: fields to match. The matching works on <span
+ style="font-style: italic;">substrings</span> (Further details can be
+ found in the Edit Rule dialog)
+ </li>
+ <li><span style="font-weight: bold;">OpenPGP Key(s)</span>: a list of OpenPGP
+Key ID's to use for the recipient</li>
+ <li><span style="font-weight: bold;">Sign</span>: enable or disable
+ message signing. This either uses or overrides what you have specified
+ in the message composition window. The values are:
+ </li>
+ <ul>
+ <li><i>Never</i>: disable signing, even if it was enabled in the message
+ composition window (overrules the other values)<br>
+ </li>
+ <li><i>Possible</i>: leave signing as specified in the message composition
+ window</li>
+ <li><i>Always</i>: enable signing, even if it was <span
+ style="font-style: italic;">not</span> enabled in the message
+ composition window
+ </li>
+ </ul>
+</ul>
+<div style="margin-left: 40px;">These signing settings are applied for
+all rules that match. If one of the rules disables signing, the message
+will not be signed, regardless of other rules that specify <i>Always</i>.<br>
+</div>
+<ul>
+ <li><span style="font-weight: bold;">Encrypt</span>: enable or
+ disable message encryption. The allowed settings and their meaning are
+ the same as for message signing.</li>
+ <li><span style="font-weight: bold;">PGP/MIME</span>: enable or
+ disable the use of the PGP/MIME (RFC 3156) message encoding.
+ If PGP/MIME is disabled, the
+ messages are encoded using "inline PGP". The allowed values and their
+ meaning are the same as for message signing.
+ </li>
+</ul>
+<p>The rules are processed in the order displayed in the list. Whenever a rule
+matches a recipient and contains a OpenPGP Key ID, in addition to using the
+specified Key ID, the recipient is not considered anymore when processing
+further rules.</p>
+<p><i>Note:</i> The rule editor is not yet complete. It is possible to write
+some more advanced rules by directly editing the rules file (these rules
+should then not be edited anymore in the rule editor). <a
+href="http://enigmail.mozdev.org/pgprules_file.html" target="_blank">Further
+information</a> for directly editing the file
+is available on the Enigmail Homepage</p>
+<hr/>
+<p>
+Further help is available on the
+<a href="http://enigmail.mozdev.org/help.html" target="_blank">Enigmail Help web page</a>
+</p>
+</body>
+</html>
\ No newline at end of file
|
[-]
[+]
|
Added |
enigmail-0.95.7.tar.bz2/lang/sk-SK/upgrade_080.html
^
|
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/st
+rict.dtd">
+<html>
+<head>
+</head>
+<body>
+<h1>Upgrade Information for Enigmail 0.8x</h1>
+
+<p>Enigmail v0.8x for Thunderbird has received a new user interface!
+<b>If you are familiar with Enigmail versions prior to 0.81.0, please
+read this information before proceeding</b>.
+</p>
+<h2>Configuring Enigmail</h2>
+<p>Enigmail configuration is now split into two parts:</p>
+<ul>
+<li>Account specific settings for PGP key ID, default encryption
+/ signing
+</li>
+<li>Common global preferences
+</li>
+</ul>
+<h3>Account Specific Settings</h3>
+<p>The account specific settings are available through the menu <em>Tools
+-> Account Settings</em>. For each account there is now an
+<em>OpenPGP Security</em> list item which holds the options specific
+for each account.
+</p>
+<p>The PGP key settings from Enigmail v0.80.0 and earlier version are
+<b>not</b> converted into the new per-account settings.
+Enigmail is by default <b>disabled</b> for all accounts!
+</p>
+<h3>Common Global Preferences</h3>
+<p>The common global settings have been cleaned up and merged into one dialog.
+The preferences are either available through the Enigmail menu, or by clicking
+the <em>Advanced</em> button in the Account Manager's OpenPGP Security Preferences.
+</p>
+<p>A new option has been added that enables you to turn on encryption
+automatically if replying to an encrypted message. Note that this
+doesn't influence the settings for message signing.
+</p>
+<h2>Composing Messages</h2>
+<p>The behavior of Enigmail has been adapted to be more similar
+to the behavior of S/MIME. A new OpenPGP button has been added
+from where the encryption / signature settings can be selected.
+The Enigmail menu does no longer serve for sending encrypted or
+signed mails, sending isdone uniquely from the normal
+<em>Send</em> button or the File -> Send menu. <b>It is
+suggested that you try the new settings by sending a couple of
+mails to yourself before you use it actively</b>, so that you
+understand the new behavior.
+</p>
+<p>The settings for encrypting or signing a message are now visible
+in the lower right corner of the compose window, with small icons
+being displayed if signing or encryption is turned on.
+</p>
+
+<h2>Known Issues</h2>
+
+<ul>
+<li>Enigmail is not yet capable of remembering several passwords for
+different PGP keys. Either type in the password each time, or
+set the same password for all keys you're using.
+</li>
+</ul>
+</body>
+</html>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/Makefile.in
^
|
@@ -35,7 +35,7 @@
# Specify these as parameters to the make command
XPI_MODULE = enigmail
-XPI_MODULE_VERS = 0.95.6.0
+XPI_MODULE_VERS = 0.95.7.0
DEPTH = ../../../..
topsrcdir = @top_srcdir@
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/enigmail.js
^
|
@@ -67,6 +67,8 @@
const NS_ENIGCLINE_SERVICE_CID =
Components.ID("{847b3ab1-7ab1-11d4-8f02-006008948af5}");
+const ENIGMAIL_EXTENSION_ID = "{847b3a00-7ab1-11d4-8f02-006008948af5}";
+
// Contract IDs and CIDs used by this module
const NS_IPCSERVICE_CONTRACTID = "@mozilla.org/process/ipc-service;1";
const NS_IPCBUFFER_CONTRACTID = "@mozilla.org/process/ipc-buffer;1";
@@ -92,6 +94,7 @@
const NS_DOMSERIALIZER_CONTRACTID = "@mozilla.org/xmlextras/xmlserializer;1";
const NS_CATMAN_CONTRACTID = "@mozilla.org/categorymanager;1";
const NS_CLINE_SERVICE_CONTRACTID = "@mozilla.org/enigmail/cline-handler;1";
+const NS_EXTENSION_MANAGER_CONTRACTID = "@mozilla.org/extensions/manager;1"
// Interfaces
const nsISupports = Components.interfaces.nsISupports;
@@ -919,6 +922,7 @@
Enigmail.prototype.isUnix = false;
Enigmail.prototype.isWin32 = false;
+Enigmail.prototype.isMacOs = false;
Enigmail.prototype.isOs2 = false;
Enigmail.prototype.isDosLike = false;
@@ -1229,6 +1233,7 @@
this.isUnix = (this.platform.search(/X11/i) == 0);
this.isWin32 = (this.platform.search(/Win/i) == 0);
this.isOs2 = (this.platform.search(/OS\/2/i) == 0);
+ this.isMacOs = (this.platform.search(/Mac/i) == 0);
if (this.isOs2) {
this.quoteSign="\\\"";
@@ -1331,7 +1336,7 @@
this.detectGpgAgent(domWindow);
- if (this.useGpgAgent()) {
+ if (this.useGpgAgent() & (! this.isDosLike)) {
gEnvList.push("GPG_AGENT_INFO="+this.gpgAgentInfo.envStr);
}
@@ -1355,7 +1360,13 @@
var useAgent = false;
try {
- useAgent= (this.gpgAgentInfo.envStr.length>0 || this.prefBranch.getBoolPref("useGpgAgent"));
+ if (this.isDosLike && this.agentVersion < "2.0") {
+ // gpg-agent is not allowed for gpg v1.x on Dos-like systems
+ useAgent = false;
+ }
+ else {
+ useAgent= (this.gpgAgentInfo.envStr.length>0 || this.prefBranch.getBoolPref("useGpgAgent"));
+ }
}
catch (ex) {}
return useAgent;
@@ -1499,6 +1510,20 @@
command += " --version --version --batch --no-tty --charset utf8";
}
+ if (this.isMacOs) {
+ try {
+ var installLoc = Components.classes[NS_EXTENSION_MANAGER_CONTRACTID]
+ .getService(Components.interfaces.nsIExtensionManager)
+ .getInstallLocation(ENIGMAIL_EXTENSION_ID);
+ var extensionLoc = installLoc.getItemFile(ENIGMAIL_EXTENSION_ID, "components");
+ extensionLoc.append("gpg-wrapper.sh");
+ command = extensionLoc.path + " " + command;
+ }
+ catch (ex) {
+ ERROR_LOG("enigmail.js: Enigmail.initialize: cannot get extension location\n");
+ }
+ }
+
// This particular command execution seems to be essential on win32
// (In particular, this should be the first command executed and
// *should* use the shell, i.e., command.com)
@@ -1530,7 +1555,7 @@
this.agentPath = agentPath.replace(/\\/g, "\\\\");
}
- var versionParts = outStr.replace(/[\r\n].*/g,"").split(/ /);
+ var versionParts = outStr.replace(/[\r\n].*/g,"").replace(/ *\(gpg4win.*\)/i, "").split(/ /);
var gpgVersion = versionParts[versionParts.length-1]
this.agentVersion = gpgVersion;
@@ -1597,7 +1622,7 @@
DEBUG_LOG("enigmail.js: detectGpgAgent: no GPG_AGENT_INFO variable set\n");
this.gpgAgentInfo.preStarted = false;
- if ((this.agentVersion >= "1.9.92") && (! this.isDosLike)) {
+ if (this.agentVersion >= "2.0") {
var command = null;
var gpgConnectAgent = resolveAgentPath("gpg-connect-agent");
@@ -1616,7 +1641,7 @@
envFile.initWithPath(this.determineGpgHomeDir());
envFile.append(".gpg-agent-info");
- if (envFile.exists() && gpgConnectAgent &&
+ if (envFile.exists() && (!this.isDosLike) && gpgConnectAgent &&
gpgConnectAgent.isExecutable()) {
// try to connect to a running gpg-agent
@@ -1650,25 +1675,49 @@
throw Components.results.NS_ERROR_FAILURE;
}
- command += " --sh --daemon --write-env-file '"+envFile.path+"'";
- command += " --default-cache-ttl " + (this.getMaxIdleMinutes()*60);
- command += " --max-cache-ttl 999999"; // ca. 11 days
-
- var exitCode = this.ipcService.execPipe(command, false, "", "", 0,
- envList, envList.length,
- outStrObj, outLenObj, errStrObj, errLenObj);
-
- CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
- if (exitCode == 0) {
- var outStr = outStrObj.value;
- this.gpgAgentInfo.envStr = extractAgentInfo(outStrObj.value);
+ if (! this.isDosLike) {
+ command += " --sh --write-env-file '"+envFile.path+"'";
+ command += " --daemon";
+ command += " --default-cache-ttl " + (this.getMaxIdleMinutes()*60);
+ command += " --max-cache-ttl 999999"; // ca. 11 days
+
+ CONSOLE_LOG("enigmail> "+command.replace(/\\\\/g, "\\")+"\n");
+
+ var exitCode = this.ipcService.execPipe(command, false, "", "", 0,
+ envList, envList.length,
+ outStrObj, outLenObj, errStrObj, errLenObj);
+
+ if (exitCode == 0) {
+ var outStr = outStrObj.value;
+ this.gpgAgentInfo.envStr = extractAgentInfo(outStrObj.value);
+ }
+ else {
+ ERROR_LOG("enigmail.js: detectGpgAgent: gpg-agent output: "+errStrObj.value+"\n");
+ this.alertMsg(domWindow, EnigGetString("gpgAgentNotStarted", this.agentVersion));
+ throw Components.results.NS_ERROR_FAILURE;
+ }
}
else {
- ERROR_LOG("enigmail.js: detectGpgAgent: gpg-agent output: "+errStrObj.value+"\n");
- this.alertMsg(domWindow, EnigGetString("gpgAgentNotStarted", this.agentVersion));
- throw Components.results.NS_ERROR_FAILURE;
+ this.gpgAgentInfo.envStr = "dummy";
+ envFile.initWithPath(this.determineGpgHomeDir());
+ envFile.append("gpg-agent.conf");
+
+ var data="default-cache-ttl " + (this.getMaxIdleMinutes()*60)+"\n";
+ data += "max-cache-ttl 999999";
+ if (! envFile.exists()) {
+ try {
+ var flags = 0x02 | 0x08 | 0x20;
+ var fileOutStream = Components.classes[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Components.interfaces.nsIFileOutputStream);
+ fileOutStream.init(envFile, flags, 0600, 0);
+ fileOutStream.write(data, data.length);
+ fileOutStream.flush();
+ fileOutStream.close();
+ }
+ catch (ex) {}
+ }
}
+
}
}
DEBUG_LOG("enigmail.js: detectGpgAgent: GPG_AGENT_INFO='"+this.gpgAgentInfo.envStr+"'\n");
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/enigmail.spec
^
|
@@ -1,7 +1,7 @@
Name: mozilla-enigmail
-Version: 0.95.6.0
+Version: 0.95.7.0
Release: 1
-Requires: mozilla = 1.5, mozilla-mail = 1.5, mozilla-enigmime = 0.95.6.0
+Requires: mozilla = 1.5, mozilla-mail = 1.5, mozilla-enigmime = 0.95.7.0
Summary: Enigmail: GPG/PGP integration in Mozilla
Copyright: Mozilla Public License 1.1/GPL
Group: Applications/Internet
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/install.js
^
|
@@ -1,7 +1,7 @@
// Install script for Enigmail
var err;
-const APP_VERSION="0.95.6.0";
+const APP_VERSION="0.95.7.0";
const ABI_PLATFORM_LINUX="Linux_x86-gcc3";
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/install.rdf
^
|
@@ -5,7 +5,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>{847b3a00-7ab1-11d4-8f02-006008948af5}</em:id>
- <em:version>0.95.6</em:version>
+ <em:version>0.95.7</em:version>
<em:type>2</em:type> <!-- type = extension -->
<!-- Target Applications this extension can install into,
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/package/prefs/enigmail.js
^
|
@@ -155,7 +155,7 @@
pref("extensions.enigmail.warnClearPassphrase",true);
// display a warning if ISO-2022-JP is used
-pref("extensions.enigmail.warnIso2022jp", 1)
+pref("extensions.enigmail.warnIso2022jp", 1);
// display a warning when all keys are to be refreshed
pref("extensions.enigmail.warnRefreshAll",true);
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/content/contents.rdf
^
|
@@ -9,7 +9,7 @@
<!-- enigmail package information -->
<RDF:Description about="urn:mozilla:package:enigmail"
- chrome:displayName="Enigmail v0.95.6.0"
+ chrome:displayName="Enigmail v0.95.7.0"
chrome:author="Team Enigmail"
chrome:authorURL="http://enigmail.mozdev.org/"
chrome:name="enigmail"
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/content/enigmailAbout.htm
^
|
@@ -13,7 +13,7 @@
<p>
<font size="+1">
- OpenPGP provided by <b><a target="_new" href="http://enigmail.mozdev.org">Enigmail</a></b>
+ OpenPGP provided by <b><a target="_new" href="http://enigmail.mozdev.org/">Enigmail</a></b>
</font>
</p>
@@ -38,12 +38,12 @@
<li>User Support: <em>Barry Porter, John Clizbe, Olav Seyfarth</em></li>
<li> Website Management: <em>Olav Seyfarth, Shane M. Coughlan</em></li>
<li> Icons: <em>Jochen Eisinger (Modern), Jan Gerber (Classic), Frank Gerhardt</em></li>
- <li> Localization: <em>See the <a href="http://enigmail.mozdev.org/langpack.html" target="_blank">Enigmail Language Packs page</a></em></li>
- <li>Website hosting: <em><a href="http://www.mozdev.org" target="_blank">mozdev.org</a></em></li>
+ <li> Localization: <em>See the <a href="http://enigmail.mozdev.org/download/langpack.php" target="_blank">Enigmail Language Packs page</a></em></li>
+ <li>Website hosting: <em><a href="http://www.mozdev.org/" target="_blank">mozdev.org</a></em></li>
</ul>
- <p>Enigmail OpenPGP is updated frequently. Visit the Enigmail OpenPGP <a target="_blank" href="http://enigmail.mozdev.org/download.html">download page</a> to check for newer versions</p>
+ <p>Enigmail OpenPGP is updated frequently. Visit the Enigmail OpenPGP <a target="_blank" href="http://enigmail.mozdev.org/download/">download page</a> to check for newer versions</p>
<p> Enigmail OpenPGP is open source and licensed under the <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank"> GNU General Public License </a> and the <a href="http://www.mozilla.org/MPL/" target="_blank">Mozilla Public License</a></p>
- <p>Visit our homepage at <a target="_blank" href="http://enigmail.mozdev.org">http://enigmail.mozdev.org</a></p>
+ <p>Visit our homepage at <a target="_blank" href="http://enigmail.mozdev.org/">http://enigmail.mozdev.org</a></p>
</body>
</html>
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/content/enigmailCommon.js
^
|
@@ -34,8 +34,8 @@
// enigmailCommon.js: shared JS functions for Enigmail
// This Enigmail version and compatible Enigmime version
-var gEnigmailVersion = "0.95.6";
-var gEnigmimeVersion = "0.95.6.0";
+var gEnigmailVersion = "0.95.7";
+var gEnigmimeVersion = "0.95.7.0";
// Maximum size of message directly processed by Enigmail
const ENIG_MSG_BUFFER_SIZE = 96000;
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/content/enigmailMsgComposeOverlay.js
^
|
@@ -2381,6 +2381,8 @@
},
+ NotifyComposeBodyReady: function() {},
+
SaveInFolderDone: function(folderURI) {
}
};
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/enigmail-en-US.spec
^
|
@@ -1,7 +1,7 @@
Name: mozilla-enigmail-en-US
-Version: 0.95.6.0
+Version: 0.95.7.0
Release: 1
-Requires: mozilla-enigmail = 0.95.6.0
+Requires: mozilla-enigmail = 0.95.7.0
Summary: Language pack for Enigmail (en-US)
Copyright: Mozilla Public License 1.1/GPL
Group: Applications/Internet
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/install.js
^
|
@@ -2,7 +2,7 @@
var chromeNode = "en-US";
-var vers = "0.95.6.0";
+var vers = "0.95.7.0";
var srDest = 10; // Disk space required for installation (KB)
var prettyName = chromeNode + " language pack for Enigmail";
|
[-]
[+]
|
Changed |
enigmail-0.95.7.tar.bz2/ui/locale/en-US/enigmail.dtd
^
|
@@ -27,7 +27,7 @@
<!ENTITY enigmail.preferences.label "OpenPGP Preferences">
<!ENTITY enigmail.passwordSettings.label "Passphrase settings">
-<!ENTITY enigmail.userNoPassphrase.label "Never ask for any passprase">
+<!ENTITY enigmail.userNoPassphrase.label "Never ask for any passphrase">
<!ENTITY enigmail.userNoPassphrase.tooltip "Activate if your OpenPGP key is not protected by a passphrase.">
<!ENTITY enigmail.expertUser.label "Display expert settings">
<!ENTITY enigmail.expertUser.tooltip "Activate if you want to see menu items and options for advanced users.">
|
[-]
[+]
|
Added |
seamonkey-desktop.tar.bz2/.
^
|
+(directory)
|
[-]
[+]
|
Changed |
seamonkey-desktop.tar.bz2/seamonkey.desktop
^
|
@@ -6,5 +6,5 @@
Exec=seamonkey %u
Icon=seamonkey
Terminal=false
-MimeType=text/html;application/xhtml+xml
+MimeType=text/html;application/xhtml+xml;
Type=Application
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/.mozconfig.mk
^
|
@@ -4,4 +4,4 @@
# To create a new .mozconfig file, you can visit,
# http://webtools.mozilla.org/build/config.cgi
-# PATH=/home/wolfi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:.
+# PATH=/home/wolfi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:.:/opt/real/RealPlayer
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/allmakefiles.sh
^
|
@@ -1100,6 +1100,8 @@
calendar/providers/memory/Makefile
calendar/providers/storage/Makefile
calendar/providers/composite/Makefile
+calendar/timezones/Makefile
+calendar/timezones/locales/Makefile
"
MAKEFILES_sunbird="
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/browser/config/version.txt
^
|
@@ -1 +1 @@
-2.0.0.16
+2.0.0.18
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/client.mk
^
|
@@ -257,11 +257,11 @@
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.
-MOZ_CO_TAG = SEAMONKEY_1_1_11_RELEASE
-NSPR_CO_TAG = SEAMONKEY_1_1_11_RELEASE
-NSS_CO_TAG = SEAMONKEY_1_1_11_RELEASE
-LDAPCSDK_CO_TAG = SEAMONKEY_1_1_11_RELEASE
-LOCALES_CO_TAG = SEAMONKEY_1_1_11_RELEASE
+MOZ_CO_TAG = SEAMONKEY_1_1_13_RELEASE
+NSPR_CO_TAG = SEAMONKEY_1_1_13_RELEASE
+NSS_CO_TAG = SEAMONKEY_1_1_13_RELEASE
+LDAPCSDK_CO_TAG = SEAMONKEY_1_1_13_RELEASE
+LOCALES_CO_TAG = SEAMONKEY_1_1_13_RELEASE
NSS_FIPS_CO_TAG = NSS_3_11_4_RTM
NSS_FIPS_CO_DIR = nss-fips
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/config/milestone.txt
^
|
@@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
-1.8.1.16
+1.8.1.18
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/configure
^
|
@@ -5298,7 +5298,7 @@
;;
AIX)
OS_RELEASE=`uname -v`.`uname -r`
- OS_TEST=`uname -p`
+ OS_TEST=${target_cpu}
;;
BSD_386)
OS_ARCH=BSD
@@ -5396,7 +5396,7 @@
CPU_ARCH=x86
;;
-powerpc* | ppc)
+powerpc* | ppc | rs6000)
CPU_ARCH=ppc
;;
@@ -5810,6 +5810,8 @@
DSO_CFLAGS='-qflag=w:w'
DSO_PIC_CFLAGS=
LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
+ echo "configure: warning: Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075." 1>&2
+ MOZ_FIX_LINK_PATHS=
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
if test "$COMPILE_ENVIRONMENT"; then
@@ -5822,9 +5824,9 @@
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for VisualAge C++ compiler version >= 5.0.2.0""... $ac_c" 1>&6
-echo "configure:5826: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5
+echo "configure:5828: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5
cat > conftest.$ac_ext <<EOF
-#line 5828 "configure"
+#line 5830 "configure"
#include "confdefs.h"
int main() {
@@ -5833,7 +5835,7 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:5837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_BAD_COMPILER=
else
@@ -5871,17 +5873,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5875: checking for $ac_hdr" >&5
+echo "configure:5877: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5880 "configure"
+#line 5882 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5885: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5923,7 +5925,7 @@
LIBS="$LIBS -lbe"
if test "$COMPILE_ENVIRONMENT"; then
echo $ac_n "checking for main in -lbind""... $ac_c" 1>&6
-echo "configure:5927: checking for main in -lbind" >&5
+echo "configure:5929: checking for main in -lbind" >&5
ac_lib_var=`echo bind'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5931,14 +5933,14 @@
ac_save_LIBS="$LIBS"
LIBS="-lbind $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5935 "configure"
+#line 5937 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5959,7 +5961,7 @@
fi
echo $ac_n "checking for main in -lzeta""... $ac_c" 1>&6
-echo "configure:5963: checking for main in -lzeta" >&5
+echo "configure:5965: checking for main in -lzeta" >&5
ac_lib_var=`echo zeta'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5967,14 +5969,14 @@
ac_save_LIBS="$LIBS"
LIBS="-lzeta $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5971 "configure"
+#line 5973 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6042,18 +6044,18 @@
MACOSX=1
echo $ac_n "checking for -dead_strip option to ld""... $ac_c" 1>&6
-echo "configure:6046: checking for -dead_strip option to ld" >&5
+echo "configure:6048: checking for -dead_strip option to ld" >&5
_SAVE_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-dead_strip"
cat > conftest.$ac_ext <<EOF
-#line 6050 "configure"
+#line 6052 "configure"
#include "confdefs.h"
int main() {
return 0;
; return 0; }
EOF
-if { (eval echo configure:6057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
_HAVE_DEAD_STRIP=1
else
@@ -6921,14 +6923,14 @@
_SAVE_LDFLAGS=$LDFLAGS
LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 6925 "configure"
+#line 6927 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
printf("Hello World\n");
; return 0; }
EOF
-if { (eval echo configure:6932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
:
else
echo "configure: failed program was:" >&5
@@ -6956,7 +6958,7 @@
CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
echo $ac_n "checking for Forte compiler version >= WS6U2""... $ac_c" 1>&6
-echo "configure:6960: checking for Forte compiler version >= WS6U2" >&5
+echo "configure:6962: checking for Forte compiler version >= WS6U2" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -6966,7 +6968,7 @@
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 6970 "configure"
+#line 6972 "configure"
#include "confdefs.h"
int main() {
@@ -6975,7 +6977,7 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:6979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_BAD_COMPILER=
else
@@ -7125,12 +7127,12 @@
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:7129: checking for ANSI C header files" >&5
+echo "configure:7131: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7134 "configure"
+#line 7136 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -7138,7 +7140,7 @@
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7144: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7155,7 +7157,7 @@
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 7159 "configure"
+#line 7161 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -7173,7 +7175,7 @@
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 7177 "configure"
+#line 7179 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -7194,7 +7196,7 @@
:
else
cat > conftest.$ac_ext <<EOF
-#line 7198 "configure"
+#line 7200 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -7205,7 +7207,7 @@
exit (0); }
EOF
-if { (eval echo configure:7209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -7229,12 +7231,12 @@
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:7233: checking for working const" >&5
+echo "configure:7235: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7238 "configure"
+#line 7240 "configure"
#include "confdefs.h"
int main() {
@@ -7283,7 +7285,7 @@
; return 0; }
EOF
-if { (eval echo configure:7287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -7304,12 +7306,12 @@
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:7308: checking for mode_t" >&5
+echo "configure:7310: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7313 "configure"
+#line 7315 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7337,12 +7339,12 @@
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:7341: checking for off_t" >&5
+echo "configure:7343: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7346 "configure"
+#line 7348 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7370,12 +7372,12 @@
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:7374: checking for pid_t" >&5
+echo "configure:7376: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7379 "configure"
+#line 7381 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7403,12 +7405,12 @@
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:7407: checking for size_t" >&5
+echo "configure:7409: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7412 "configure"
+#line 7414 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7436,12 +7438,12 @@
fi
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
-echo "configure:7440: checking for st_blksize in struct stat" >&5
+echo "configure:7442: checking for st_blksize in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7445 "configure"
+#line 7447 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -7449,7 +7451,7 @@
struct stat s; s.st_blksize;
; return 0; }
EOF
-if { (eval echo configure:7453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blksize=yes
else
@@ -7470,12 +7472,12 @@
fi
echo $ac_n "checking for siginfo_t""... $ac_c" 1>&6
-echo "configure:7474: checking for siginfo_t" >&5
+echo "configure:7476: checking for siginfo_t" >&5
if eval "test \"`echo '$''{'ac_cv_siginfo_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7479 "configure"
+#line 7481 "configure"
#include "confdefs.h"
#define _POSIX_C_SOURCE 199506L
#include <signal.h>
@@ -7483,7 +7485,7 @@
siginfo_t* info;
; return 0; }
EOF
-if { (eval echo configure:7487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_siginfo_t=true
else
@@ -7517,12 +7519,12 @@
fi
echo $ac_n "checking for int16_t""... $ac_c" 1>&6
-echo "configure:7521: checking for int16_t" >&5
+echo "configure:7523: checking for int16_t" >&5
if eval "test \"`echo '$''{'ac_cv_int16_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7526 "configure"
+#line 7528 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7530,7 +7532,7 @@
int16_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_int16_t=true
else
@@ -7552,12 +7554,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for int32_t""... $ac_c" 1>&6
-echo "configure:7556: checking for int32_t" >&5
+echo "configure:7558: checking for int32_t" >&5
if eval "test \"`echo '$''{'ac_cv_int32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7561 "configure"
+#line 7563 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7565,7 +7567,7 @@
int32_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_int32_t=true
else
@@ -7587,12 +7589,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for int64_t""... $ac_c" 1>&6
-echo "configure:7591: checking for int64_t" >&5
+echo "configure:7593: checking for int64_t" >&5
if eval "test \"`echo '$''{'ac_cv_int64_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7596 "configure"
+#line 7598 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7600,7 +7602,7 @@
int64_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_int64_t=true
else
@@ -7622,12 +7624,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for int64""... $ac_c" 1>&6
-echo "configure:7626: checking for int64" >&5
+echo "configure:7628: checking for int64" >&5
if eval "test \"`echo '$''{'ac_cv_int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7631 "configure"
+#line 7633 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7635,7 +7637,7 @@
int64 foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_int64=true
else
@@ -7657,12 +7659,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for uint""... $ac_c" 1>&6
-echo "configure:7661: checking for uint" >&5
+echo "configure:7663: checking for uint" >&5
if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7666 "configure"
+#line 7668 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7670,7 +7672,7 @@
uint foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_uint=true
else
@@ -7692,12 +7694,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for uint_t""... $ac_c" 1>&6
-echo "configure:7696: checking for uint_t" >&5
+echo "configure:7698: checking for uint_t" >&5
if eval "test \"`echo '$''{'ac_cv_uint_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7701 "configure"
+#line 7703 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7705,7 +7707,7 @@
uint_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_uint_t=true
else
@@ -7727,12 +7729,12 @@
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
-echo "configure:7731: checking for uint16_t" >&5
+echo "configure:7733: checking for uint16_t" >&5
if eval "test \"`echo '$''{'ac_cv_uint16_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7736 "configure"
+#line 7738 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -7740,7 +7742,7 @@
uint16_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_uint16_t=true
else
@@ -7771,12 +7773,12 @@
echo $ac_n "checking for uname.domainname""... $ac_c" 1>&6
-echo "configure:7775: checking for uname.domainname" >&5
+echo "configure:7777: checking for uname.domainname" >&5
if eval "test \"`echo '$''{'ac_cv_have_uname_domainname_field'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7780 "configure"
+#line 7782 "configure"
#include "confdefs.h"
#include <sys/utsname.h>
int main() {
@@ -7784,7 +7786,7 @@
(void)uname(res); if (res != 0) { domain = res->domainname; }
; return 0; }
EOF
-if { (eval echo configure:7788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_uname_domainname_field=true
else
@@ -7808,12 +7810,12 @@
fi
echo $ac_n "checking for uname.__domainname""... $ac_c" 1>&6
-echo "configure:7812: checking for uname.__domainname" >&5
+echo "configure:7814: checking for uname.__domainname" >&5
if eval "test \"`echo '$''{'ac_cv_have_uname_us_domainname_field'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7817 "configure"
+#line 7819 "configure"
#include "confdefs.h"
#include <sys/utsname.h>
int main() {
@@ -7821,7 +7823,7 @@
(void)uname(res); if (res != 0) { domain = res->__domainname; }
; return 0; }
EOF
-if { (eval echo configure:7825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_uname_us_domainname_field=true
else
@@ -7854,12 +7856,12 @@
echo $ac_n "checking for usable wchar_t (2 bytes, unsigned)""... $ac_c" 1>&6
-echo "configure:7858: checking for usable wchar_t (2 bytes, unsigned)" >&5
+echo "configure:7860: checking for usable wchar_t (2 bytes, unsigned)" >&5
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar_v2'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7863 "configure"
+#line 7865 "configure"
#include "confdefs.h"
#include <stddef.h>
$configure_static_assert_macros
@@ -7868,7 +7870,7 @@
CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)
; return 0; }
EOF
-if { (eval echo configure:7872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_usable_wchar_v2="yes"
else
@@ -7901,12 +7903,12 @@
CXXFLAGS="$CXXFLAGS -fshort-wchar"
echo $ac_n "checking for compiler -fshort-wchar option""... $ac_c" 1>&6
-echo "configure:7905: checking for compiler -fshort-wchar option" >&5
+echo "configure:7907: checking for compiler -fshort-wchar option" >&5
if eval "test \"`echo '$''{'ac_cv_have_usable_wchar_option_v2'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7910 "configure"
+#line 7912 "configure"
#include "confdefs.h"
#include <stddef.h>
$configure_static_assert_macros
@@ -7915,7 +7917,7 @@
CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)
; return 0; }
EOF
-if { (eval echo configure:7919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_usable_wchar_option_v2="yes"
else
@@ -7949,7 +7951,7 @@
if test "$GNU_CC"; then
echo $ac_n "checking for visibility(hidden) attribute""... $ac_c" 1>&6
-echo "configure:7953: checking for visibility(hidden) attribute" >&5
+echo "configure:7955: checking for visibility(hidden) attribute" >&5
if eval "test \"`echo '$''{'ac_cv_visibility_hidden'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7974,7 +7976,7 @@
echo $ac_n "checking for visibility(default) attribute""... $ac_c" 1>&6
-echo "configure:7978: checking for visibility(default) attribute" >&5
+echo "configure:7980: checking for visibility(default) attribute" >&5
if eval "test \"`echo '$''{'ac_cv_visibility_default'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7999,7 +8001,7 @@
echo $ac_n "checking for visibility pragma support""... $ac_c" 1>&6
-echo "configure:8003: checking for visibility pragma support" >&5
+echo "configure:8005: checking for visibility pragma support" >&5
if eval "test \"`echo '$''{'ac_cv_visibility_pragma'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8024,7 +8026,7 @@
echo "$ac_t""$ac_cv_visibility_pragma" 1>&6
if test "$ac_cv_visibility_pragma" = "yes"; then
echo $ac_n "checking For gcc visibility bug with class-level attributes (GCC bug 26905)""... $ac_c" 1>&6
-echo "configure:8028: checking For gcc visibility bug with class-level attributes (GCC bug 26905)" >&5
+echo "configure:8030: checking For gcc visibility bug with class-level attributes (GCC bug 26905)" >&5
if eval "test \"`echo '$''{'ac_cv_have_visibility_class_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8052,7 +8054,7 @@
echo "$ac_t""$ac_cv_have_visibility_class_bug" 1>&6
echo $ac_n "checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)""... $ac_c" 1>&6
-echo "configure:8056: checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)" >&5
+echo "configure:8058: checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)" >&5
if eval "test \"`echo '$''{'ac_cv_have_visibility_builtin_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8100,12 +8102,12 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:8104: checking for $ac_hdr that defines DIR" >&5
+echo "configure:8106: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8109 "configure"
+#line 8111 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -8113,7 +8115,7 @@
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:8117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -8138,7 +8140,7 @@
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:8142: checking for opendir in -ldir" >&5
+echo "configure:8144: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8146,7 +8148,7 @@
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8150 "configure"
+#line 8152 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8157,7 +8159,7 @@
opendir()
; return 0; }
EOF
-if { (eval echo configure:8161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8179,7 +8181,7 @@
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:8183: checking for opendir in -lx" >&5
+echo "configure:8185: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8187,7 +8189,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8191 "configure"
+#line 8193 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8198,7 +8200,7 @@
opendir()
; return 0; }
EOF
-if { (eval echo configure:8202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8230,17 +8232,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8234: checking for $ac_hdr" >&5
+echo "configure:8236: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8239 "configure"
+#line 8241 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8270,17 +8272,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8274: checking for $ac_hdr" >&5
+echo "configure:8276: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8279 "configure"
+#line 8281 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8310,17 +8312,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8314: checking for $ac_hdr" >&5
+echo "configure:8316: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8319 "configure"
+#line 8321 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8326: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8350,17 +8352,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8354: checking for $ac_hdr" >&5
+echo "configure:8356: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8359 "configure"
+#line 8361 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8390,17 +8392,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8394: checking for $ac_hdr" >&5
+echo "configure:8396: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8399 "configure"
+#line 8401 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8431,17 +8433,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8435: checking for $ac_hdr" >&5
+echo "configure:8437: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8440 "configure"
+#line 8442 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8445: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8472,17 +8474,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8476: checking for $ac_hdr" >&5
+echo "configure:8478: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8481 "configure"
+#line 8483 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8519,17 +8521,17 @@
NEW_H=new.h
ac_safe=`echo "new" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for new""... $ac_c" 1>&6
-echo "configure:8523: checking for new" >&5
+echo "configure:8525: checking for new" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8528 "configure"
+#line 8530 "configure"
#include "confdefs.h"
#include <new>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8570,17 +8572,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8574: checking for $ac_hdr" >&5
+echo "configure:8576: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8579 "configure"
+#line 8581 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8614,7 +8616,7 @@
;;
*)
echo $ac_n "checking for gethostbyname_r in -lc_r""... $ac_c" 1>&6
-echo "configure:8618: checking for gethostbyname_r in -lc_r" >&5
+echo "configure:8620: checking for gethostbyname_r in -lc_r" >&5
ac_lib_var=`echo c_r'_'gethostbyname_r | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8622,7 +8624,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lc_r $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8626 "configure"
+#line 8628 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8633,7 +8635,7 @@
gethostbyname_r()
; return 0; }
EOF
-if { (eval echo configure:8637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8663,7 +8665,7 @@
;;
esac
echo $ac_n "checking for atan in -lm""... $ac_c" 1>&6
-echo "configure:8667: checking for atan in -lm" >&5
+echo "configure:8669: checking for atan in -lm" >&5
ac_lib_var=`echo m'_'atan | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8671,7 +8673,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8675 "configure"
+#line 8677 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8682,7 +8684,7 @@
atan()
; return 0; }
EOF
-if { (eval echo configure:8686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8716,7 +8718,7 @@
;;
*)
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:8720: checking for dlopen in -ldl" >&5
+echo "configure:8722: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8724,7 +8726,7 @@
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8728 "configure"
+#line 8730 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8735,7 +8737,7 @@
dlopen()
; return 0; }
EOF
-if { (eval echo configure:8739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8752,17 +8754,17 @@
echo "$ac_t""yes" 1>&6
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:8756: checking for dlfcn.h" >&5
+echo "configure:8758: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8761 "configure"
+#line 8763 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8798,7 +8800,7 @@
case $target in
*-aix*)
echo $ac_n "checking for demangle in -lC_r""... $ac_c" 1>&6
-echo "configure:8802: checking for demangle in -lC_r" >&5
+echo "configure:8804: checking for demangle in -lC_r" >&5
ac_lib_var=`echo C_r'_'demangle | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8806,7 +8808,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lC_r $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8810 "configure"
+#line 8812 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8817,7 +8819,7 @@
demangle()
; return 0; }
EOF
-if { (eval echo configure:8821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8847,7 +8849,7 @@
;;
*)
echo $ac_n "checking for demangle in -lC""... $ac_c" 1>&6
-echo "configure:8851: checking for demangle in -lC" >&5
+echo "configure:8853: checking for demangle in -lC" >&5
ac_lib_var=`echo C'_'demangle | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8855,7 +8857,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lC $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8859 "configure"
+#line 8861 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8866,7 +8868,7 @@
demangle()
; return 0; }
EOF
-if { (eval echo configure:8870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8897,7 +8899,7 @@
esac
fi
echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:8901: checking for socket in -lsocket" >&5
+echo "configure:8903: checking for socket in -lsocket" >&5
ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8905,7 +8907,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8909 "configure"
+#line 8911 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8916,7 +8918,7 @@
socket()
; return 0; }
EOF
-if { (eval echo configure:8920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8961,7 +8963,7 @@
_SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$XLDFLAGS $LDFLAGS"
echo $ac_n "checking for XDrawLines in -lX11""... $ac_c" 1>&6
-echo "configure:8965: checking for XDrawLines in -lX11" >&5
+echo "configure:8967: checking for XDrawLines in -lX11" >&5
ac_lib_var=`echo X11'_'XDrawLines | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8969,7 +8971,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lX11 $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8973 "configure"
+#line 8975 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8980,7 +8982,7 @@
XDrawLines()
; return 0; }
EOF
-if { (eval echo configure:8984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9002,7 +9004,7 @@
fi
echo $ac_n "checking for XextAddDisplay in -lXext""... $ac_c" 1>&6
-echo "configure:9006: checking for XextAddDisplay in -lXext" >&5
+echo "configure:9008: checking for XextAddDisplay in -lXext" >&5
ac_lib_var=`echo Xext'_'XextAddDisplay | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9010,7 +9012,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXext $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9014 "configure"
+#line 9016 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9021,7 +9023,7 @@
XextAddDisplay()
; return 0; }
EOF
-if { (eval echo configure:9025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9045,7 +9047,7 @@
echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
-echo "configure:9049: checking for XtFree in -lXt" >&5
+echo "configure:9051: checking for XtFree in -lXt" >&5
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9053,7 +9055,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9057 "configure"
+#line 9059 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9064,7 +9066,7 @@
XtFree()
; return 0; }
EOF
-if { (eval echo configure:9068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9085,7 +9087,7 @@
unset ac_cv_lib_Xt_XtFree
echo $ac_n "checking for IceFlush in -lICE""... $ac_c" 1>&6
-echo "configure:9089: checking for IceFlush in -lICE" >&5
+echo "configure:9091: checking for IceFlush in -lICE" >&5
ac_lib_var=`echo ICE'_'IceFlush | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9093,7 +9095,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lICE $XT_LIBS $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9097 "configure"
+#line 9099 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9104,7 +9106,7 @@
IceFlush()
; return 0; }
EOF
-if { (eval echo configure:9108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9125,7 +9127,7 @@
fi
echo $ac_n "checking for SmcCloseConnection in -lSM""... $ac_c" 1>&6
-echo "configure:9129: checking for SmcCloseConnection in -lSM" >&5
+echo "configure:9131: checking for SmcCloseConnection in -lSM" >&5
ac_lib_var=`echo SM'_'SmcCloseConnection | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9133,7 +9135,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lSM $XT_LIBS $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9137 "configure"
+#line 9139 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9144,7 +9146,7 @@
SmcCloseConnection()
; return 0; }
EOF
-if { (eval echo configure:9148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9165,7 +9167,7 @@
fi
echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6
-echo "configure:9169: checking for XtFree in -lXt" >&5
+echo "configure:9171: checking for XtFree in -lXt" >&5
ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9173,7 +9175,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXt $X_PRE_LIBS $XT_LIBS $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9177 "configure"
+#line 9179 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9184,7 +9186,7 @@
XtFree()
; return 0; }
EOF
-if { (eval echo configure:9188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9218,7 +9220,7 @@
esac
echo $ac_n "checking for XineramaIsActive in -lXinerama""... $ac_c" 1>&6
-echo "configure:9222: checking for XineramaIsActive in -lXinerama" >&5
+echo "configure:9224: checking for XineramaIsActive in -lXinerama" >&5
ac_lib_var=`echo Xinerama'_'XineramaIsActive | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9226,7 +9228,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXinerama $XLIBS $XEXT_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9230 "configure"
+#line 9232 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9237,7 +9239,7 @@
XineramaIsActive()
; return 0; }
EOF
-if { (eval echo configure:9241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9259,17 +9261,17 @@
ac_safe=`echo "X11/extensions/Xinerama.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for X11/extensions/Xinerama.h""... $ac_c" 1>&6
-echo "configure:9263: checking for X11/extensions/Xinerama.h" >&5
+echo "configure:9265: checking for X11/extensions/Xinerama.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9268 "configure"
+#line 9270 "configure"
#include "confdefs.h"
#include <X11/extensions/Xinerama.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -9292,7 +9294,7 @@
echo $ac_n "checking for XShmCreateImage in -lXext""... $ac_c" 1>&6
-echo "configure:9296: checking for XShmCreateImage in -lXext" >&5
+echo "configure:9298: checking for XShmCreateImage in -lXext" >&5
ac_lib_var=`echo Xext'_'XShmCreateImage | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9300,7 +9302,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXext $XLIBS $XEXT_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9304 "configure"
+#line 9306 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9311,7 +9313,7 @@
XShmCreateImage()
; return 0; }
EOF
-if { (eval echo configure:9315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9333,17 +9335,17 @@
ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6
-echo "configure:9337: checking for X11/extensions/XShm.h" >&5
+echo "configure:9339: checking for X11/extensions/XShm.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9342 "configure"
+#line 9344 "configure"
#include "confdefs.h"
#include <X11/extensions/XShm.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9347: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -9373,7 +9375,7 @@
fi
echo $ac_n "checking for XieFloGeometry in -lXIE""... $ac_c" 1>&6
-echo "configure:9377: checking for XieFloGeometry in -lXIE" >&5
+echo "configure:9379: checking for XieFloGeometry in -lXIE" >&5
ac_lib_var=`echo XIE'_'XieFloGeometry | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -9381,7 +9383,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXIE $XLIBS $XEXT_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 9385 "configure"
+#line 9387 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -9392,7 +9394,7 @@
XieFloGeometry()
; return 0; }
EOF
-if { (eval echo configure:9396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9414,17 +9416,17 @@
ac_safe=`echo "X11/extensions/XIElib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for X11/extensions/XIElib.h""... $ac_c" 1>&6
-echo "configure:9418: checking for X11/extensions/XIElib.h" >&5
+echo "configure:9420: checking for X11/extensions/XIElib.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9423 "configure"
+#line 9425 "configure"
#include "confdefs.h"
#include <X11/extensions/XIElib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -9498,7 +9500,7 @@
# Extract the first word of "freetype-config", so it can be a program name with args.
set dummy freetype-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9502: checking for $ac_word" >&5
+echo "configure:9504: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_FT2_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9534,7 +9536,7 @@
min_ft_version=6.1.0
echo $ac_n "checking for FreeType - version >= $min_ft_version""... $ac_c" 1>&6
-echo "configure:9538: checking for FreeType - version >= $min_ft_version" >&5
+echo "configure:9540: checking for FreeType - version >= $min_ft_version" >&5
no_ft=""
if test "$FT2_CONFIG" = "no" ; then
no_ft=yes
@@ -9582,7 +9584,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 9586 "configure"
+#line 9588 "configure"
#include "confdefs.h"
#include <ft2build.h>
@@ -9608,7 +9610,7 @@
}
EOF
-if { (eval echo configure:9612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -9660,7 +9662,7 @@
echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
-echo "configure:9664: checking for pthread_create in -lpthreads" >&5
+echo "configure:9666: checking for pthread_create in -lpthreads" >&5
echo "
#include <pthread.h>
void *foo(void *v) { int a = 1; }
@@ -9682,7 +9684,7 @@
echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
-echo "configure:9686: checking for pthread_create in -lpthread" >&5
+echo "configure:9688: checking for pthread_create in -lpthread" >&5
echo "
#include <pthread.h>
void *foo(void *v) { int a = 1; }
@@ -9704,7 +9706,7 @@
echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
-echo "configure:9708: checking for pthread_create in -lc_r" >&5
+echo "configure:9710: checking for pthread_create in -lc_r" >&5
echo "
#include <pthread.h>
void *foo(void *v) { int a = 1; }
@@ -9726,7 +9728,7 @@
echo "$ac_t""no" 1>&6
echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
-echo "configure:9730: checking for pthread_create in -lc" >&5
+echo "configure:9732: checking for pthread_create in -lc" >&5
echo "
#include <pthread.h>
void *foo(void *v) { int a = 1; }
@@ -9782,7 +9784,7 @@
rm -f conftest*
ac_cv_have_dash_pthread=no
echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
-echo "configure:9786: checking whether ${CC-cc} accepts -pthread" >&5
+echo "configure:9788: checking whether ${CC-cc} accepts -pthread" >&5
echo 'int main() { return 0; }' | cat > conftest.c
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
if test $? -eq 0; then
@@ -9805,7 +9807,7 @@
ac_cv_have_dash_pthreads=no
if test "$ac_cv_have_dash_pthread" = "no"; then
echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
-echo "configure:9809: checking whether ${CC-cc} accepts -pthreads" >&5
+echo "configure:9811: checking whether ${CC-cc} accepts -pthreads" >&5
echo 'int main() { return 0; }' | cat > conftest.c
${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
if test $? -eq 0; then
@@ -9900,7 +9902,7 @@
fi
echo $ac_n "checking whether mmap() sees write()s""... $ac_c" 1>&6
-echo "configure:9904: checking whether mmap() sees write()s" >&5
+echo "configure:9906: checking whether mmap() sees write()s" >&5
mmap_test_prog='
@@ -9939,11 +9941,11 @@
result="yes"
else
cat > conftest.$ac_ext <<EOF
-#line 9943 "configure"
+#line 9945 "configure"
#include "confdefs.h"
$mmap_test_prog
EOF
-if { (eval echo configure:9947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
result="yes"
else
@@ -9968,13 +9970,13 @@
if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:9972: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:9974: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF
-#line 9978 "configure"
+#line 9980 "configure"
#include "confdefs.h"
#include <sgtty.h>
Autoconf TIOCGETP
@@ -9992,7 +9994,7 @@
if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF
-#line 9996 "configure"
+#line 9998 "configure"
#include "confdefs.h"
#include <termio.h>
Autoconf TCGETA
@@ -10014,7 +10016,7 @@
fi
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:10018: checking for 8-bit clean memcmp" >&5
+echo "configure:10020: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10022,7 +10024,7 @@
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 10026 "configure"
+#line 10028 "configure"
#include "confdefs.h"
main()
@@ -10032,7 +10034,7 @@
}
EOF
-if { (eval echo configure:10036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
@@ -10052,12 +10054,12 @@
for ac_func in random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10056: checking for $ac_func" >&5
+echo "configure:10058: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10061 "configure"
+#line 10063 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10080,7 +10082,7 @@
; return 0; }
EOF
-if { (eval echo configure:10084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10107,12 +10109,12 @@
for ac_func in flockfile getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10111: checking for $ac_func" >&5
+echo "configure:10113: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10116 "configure"
+#line 10118 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10135,7 +10137,7 @@
; return 0; }
EOF
-if { (eval echo configure:10139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10164,12 +10166,12 @@
for ac_func in localtime_r strtok_r
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10168: checking for $ac_func" >&5
+echo "configure:10170: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10173 "configure"
+#line 10175 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10192,7 +10194,7 @@
; return 0; }
EOF
-if { (eval echo configure:10196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10228,19 +10230,19 @@
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for wcrtomb""... $ac_c" 1>&6
-echo "configure:10232: checking for wcrtomb" >&5
+echo "configure:10234: checking for wcrtomb" >&5
if eval "test \"`echo '$''{'ac_cv_have_wcrtomb'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10237 "configure"
+#line 10239 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t ps={0};wcrtomb(0,'f',&ps);
; return 0; }
EOF
-if { (eval echo configure:10244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_have_wcrtomb="yes"
else
@@ -10260,19 +10262,19 @@
fi
echo $ac_n "checking for mbrtowc""... $ac_c" 1>&6
-echo "configure:10264: checking for mbrtowc" >&5
+echo "configure:10266: checking for mbrtowc" >&5
if eval "test \"`echo '$''{'ac_cv_have_mbrtowc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10269 "configure"
+#line 10271 "configure"
#include "confdefs.h"
#include <wchar.h>
int main() {
mbstate_t ps={0};mbrtowc(0,0,0,&ps);
; return 0; }
EOF
-if { (eval echo configure:10276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_have_mbrtowc="yes"
else
@@ -10301,12 +10303,12 @@
fi
echo $ac_n "checking for res_ninit()""... $ac_c" 1>&6
-echo "configure:10305: checking for res_ninit()" >&5
+echo "configure:10307: checking for res_ninit()" >&5
if eval "test \"`echo '$''{'ac_cv_func_res_ninit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10310 "configure"
+#line 10312 "configure"
#include "confdefs.h"
#ifdef linux
@@ -10318,7 +10320,7 @@
int foo = res_ninit(&_res);
; return 0; }
EOF
-if { (eval echo configure:10322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_res_ninit=yes
else
@@ -10348,12 +10350,12 @@
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for gnu_get_libc_version()""... $ac_c" 1>&6
-echo "configure:10352: checking for gnu_get_libc_version()" >&5
+echo "configure:10354: checking for gnu_get_libc_version()" >&5
if eval "test \"`echo '$''{'ac_cv_func_gnu_get_libc_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10357 "configure"
+#line 10359 "configure"
#include "confdefs.h"
#ifdef HAVE_GNU_LIBC_VERSION_H
@@ -10364,7 +10366,7 @@
const char *glibc_version = gnu_get_libc_version();
; return 0; }
EOF
-if { (eval echo configure:10368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_gnu_get_libc_version=yes
else
@@ -10393,7 +10395,7 @@
*)
echo $ac_n "checking for iconv in -lc""... $ac_c" 1>&6
-echo "configure:10397: checking for iconv in -lc" >&5
+echo "configure:10399: checking for iconv in -lc" >&5
ac_lib_var=`echo c'_'iconv | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -10401,7 +10403,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 10405 "configure"
+#line 10407 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
@@ -10415,7 +10417,7 @@
iconv()
; return 0; }
EOF
-if { (eval echo configure:10419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -10434,7 +10436,7 @@
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6
-echo "configure:10438: checking for iconv in -liconv" >&5
+echo "configure:10440: checking for iconv in -liconv" >&5
ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -10442,7 +10444,7 @@
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 10446 "configure"
+#line 10448 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
@@ -10456,7 +10458,7 @@
iconv()
; return 0; }
EOF
-if { (eval echo configure:10460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -10475,7 +10477,7 @@
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
-echo "configure:10479: checking for libiconv in -liconv" >&5
+echo "configure:10481: checking for libiconv in -liconv" >&5
ac_lib_var=`echo iconv'_'libiconv | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -10483,7 +10485,7 @@
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 10487 "configure"
+#line 10489 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
@@ -10497,7 +10499,7 @@
libiconv()
; return 0; }
EOF
-if { (eval echo configure:10501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -10524,12 +10526,12 @@
_SAVE_LIBS=$LIBS
LIBS="$LIBS $_ICONV_LIBS"
echo $ac_n "checking for iconv()""... $ac_c" 1>&6
-echo "configure:10528: checking for iconv()" >&5
+echo "configure:10530: checking for iconv()" >&5
if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10533 "configure"
+#line 10535 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -10543,7 +10545,7 @@
; return 0; }
EOF
-if { (eval echo configure:10547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_iconv=yes
else
@@ -10567,12 +10569,12 @@
LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
LIBICONV="$_ICONV_LIBS"
echo $ac_n "checking for iconv() with const input""... $ac_c" 1>&6
-echo "configure:10571: checking for iconv() with const input" >&5
+echo "configure:10573: checking for iconv() with const input" >&5
if eval "test \"`echo '$''{'ac_cv_func_const_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10576 "configure"
+#line 10578 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -10587,7 +10589,7 @@
; return 0; }
EOF
-if { (eval echo configure:10591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_func_const_iconv=yes
else
@@ -10616,19 +10618,19 @@
echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:10620: checking for nl_langinfo and CODESET" >&5
+echo "configure:10622: checking for nl_langinfo and CODESET" >&5
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10625 "configure"
+#line 10627 "configure"
#include "confdefs.h"
#include <langinfo.h>
int main() {
char* cs = nl_langinfo(CODESET);
; return 0; }
EOF
-if { (eval echo configure:10632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_langinfo_codeset=yes
else
@@ -10660,7 +10662,7 @@
echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6
-echo "configure:10664: checking for an implementation of va_copy()" >&5
+echo "configure:10666: checking for an implementation of va_copy()" >&5
if eval "test \"`echo '$''{'ac_cv_va_copy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10670,7 +10672,7 @@
else
cat > conftest.$ac_ext <<EOF
-#line 10674 "configure"
+#line 10676 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -10684,7 +10686,7 @@
}
int main() { f (0, 42); return 0; }
EOF
-if { (eval echo configure:10688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_va_copy=yes
else
@@ -10701,7 +10703,7 @@
echo "$ac_t""$ac_cv_va_copy" 1>&6
echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6
-echo "configure:10705: checking for an implementation of __va_copy()" >&5
+echo "configure:10707: checking for an implementation of __va_copy()" >&5
if eval "test \"`echo '$''{'ac_cv___va_copy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10711,7 +10713,7 @@
else
cat > conftest.$ac_ext <<EOF
-#line 10715 "configure"
+#line 10717 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -10725,7 +10727,7 @@
}
int main() { f (0, 42); return 0; }
EOF
-if { (eval echo configure:10729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv___va_copy=yes
else
@@ -10742,7 +10744,7 @@
echo "$ac_t""$ac_cv___va_copy" 1>&6
echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6
-echo "configure:10746: checking whether va_lists can be copied by value" >&5
+echo "configure:10748: checking whether va_lists can be copied by value" >&5
if eval "test \"`echo '$''{'ac_cv_va_val_copy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10752,7 +10754,7 @@
else
cat > conftest.$ac_ext <<EOF
-#line 10756 "configure"
+#line 10758 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -10766,7 +10768,7 @@
}
int main() { f (0, 42); return 0; }
EOF
-if { (eval echo configure:10770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_va_val_copy=yes
else
@@ -10865,7 +10867,7 @@
if test "$GNU_CXX"; then
echo $ac_n "checking for C++ exceptions flag""... $ac_c" 1>&6
-echo "configure:10869: checking for C++ exceptions flag" >&5
+echo "configure:10871: checking for C++ exceptions flag" >&5
if eval "test \"`echo '$''{'ac_cv_cxx_exceptions_flags'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -10900,12 +10902,12 @@
HAVE_GCC3_ABI=
if test "$GNU_CC"; then
echo $ac_n "checking for gcc 3.0 ABI""... $ac_c" 1>&6
-echo "configure:10904: checking for gcc 3.0 ABI" >&5
+echo "configure:10906: checking for gcc 3.0 ABI" >&5
if eval "test \"`echo '$''{'ac_cv_gcc_three_abi'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10909 "configure"
+#line 10911 "configure"
#include "confdefs.h"
int main() {
@@ -10918,7 +10920,7 @@
; return 0; }
EOF
-if { (eval echo configure:10922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_gcc_three_abi="yes"
else
@@ -10942,12 +10944,12 @@
echo $ac_n "checking for C++ \"explicit\" keyword""... $ac_c" 1>&6
-echo "configure:10946: checking for C++ \"explicit\" keyword" >&5
+echo "configure:10948: checking for C++ \"explicit\" keyword" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_explicit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10951 "configure"
+#line 10953 "configure"
#include "confdefs.h"
class X {
public: explicit X(int i) : i_(i) {}
@@ -10957,7 +10959,7 @@
X x(3);
; return 0; }
EOF
-if { (eval echo configure:10961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_explicit=yes
else
@@ -10978,12 +10980,12 @@
fi
echo $ac_n "checking for C++ \"typename\" keyword""... $ac_c" 1>&6
-echo "configure:10982: checking for C++ \"typename\" keyword" >&5
+echo "configure:10984: checking for C++ \"typename\" keyword" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_typename'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10987 "configure"
+#line 10989 "configure"
#include "confdefs.h"
class param {
public:
@@ -11002,7 +11004,7 @@
A.foo(0);
; return 0; }
EOF
-if { (eval echo configure:11006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_typename=yes
else
@@ -11023,12 +11025,12 @@
fi
echo $ac_n "checking for modern C++ template specialization syntax support""... $ac_c" 1>&6
-echo "configure:11027: checking for modern C++ template specialization syntax support" >&5
+echo "configure:11029: checking for modern C++ template specialization syntax support" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_modern_specialize_template_syntax'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11032 "configure"
+#line 11034 "configure"
#include "confdefs.h"
template <class T> struct X { int a; };
class Y {};
@@ -11038,7 +11040,7 @@
X<Y> y_x;
; return 0; }
EOF
-if { (eval echo configure:11042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_modern_specialize_template_syntax=yes
else
@@ -11060,12 +11062,12 @@
echo $ac_n "checking whether partial template specialization works""... $ac_c" 1>&6
-echo "configure:11064: checking whether partial template specialization works" >&5
+echo "configure:11066: checking whether partial template specialization works" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_partial_specialization'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11069 "configure"
+#line 11071 "configure"
#include "confdefs.h"
template <class T> class Foo {};
template <class T> class Foo<T*> {};
@@ -11073,7 +11075,7 @@
return 0;
; return 0; }
EOF
-if { (eval echo configure:11077: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_partial_specialization=yes
else
@@ -11094,12 +11096,12 @@
fi
echo $ac_n "checking whether operators must be re-defined for templates derived from templates""... $ac_c" 1>&6
-echo "configure:11098: checking whether operators must be re-defined for templates derived from templates" >&5
+echo "configure:11100: checking whether operators must be re-defined for templates derived from templates" >&5
if eval "test \"`echo '$''{'ac_cv_need_derived_template_operators'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11103 "configure"
+#line 11105 "configure"
#include "confdefs.h"
template <class T> class Base { };
template <class T>
@@ -11111,7 +11113,7 @@
return 0;
; return 0; }
EOF
-if { (eval echo configure:11115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_need_derived_template_operators=no
else
@@ -11133,12 +11135,12 @@
echo $ac_n "checking whether we need to cast a derived template to pass as its base class""... $ac_c" 1>&6
-echo "configure:11137: checking whether we need to cast a derived template to pass as its base class" >&5
+echo "configure:11139: checking whether we need to cast a derived template to pass as its base class" >&5
if eval "test \"`echo '$''{'ac_cv_need_cpp_template_cast_to_base'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11142 "configure"
+#line 11144 "configure"
#include "confdefs.h"
template <class T> class Base { };
template <class T> class Derived : public Base<T> { };
@@ -11147,7 +11149,7 @@
Derived<char> bar; return foo(bar);
; return 0; }
EOF
-if { (eval echo configure:11151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11153: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_need_cpp_template_cast_to_base=no
else
@@ -11168,12 +11170,12 @@
fi
echo $ac_n "checking whether the compiler can resolve const ambiguities for templates""... $ac_c" 1>&6
-echo "configure:11172: checking whether the compiler can resolve const ambiguities for templates" >&5
+echo "configure:11174: checking whether the compiler can resolve const ambiguities for templates" >&5
if eval "test \"`echo '$''{'ac_cv_can_resolve_const_ambiguity'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11177 "configure"
+#line 11179 "configure"
#include "confdefs.h"
template <class T> class ptrClass {
@@ -11194,7 +11196,7 @@
a(&i);
; return 0; }
EOF
-if { (eval echo configure:11198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_can_resolve_const_ambiguity=yes
else
@@ -11216,12 +11218,12 @@
echo $ac_n "checking whether the C++ \"using\" keyword can change access""... $ac_c" 1>&6
-echo "configure:11220: checking whether the C++ \"using\" keyword can change access" >&5
+echo "configure:11222: checking whether the C++ \"using\" keyword can change access" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_access_changing_using2'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11225 "configure"
+#line 11227 "configure"
#include "confdefs.h"
class A { protected: int foo() { return 0; } };
class B : public A { public: using A::foo; };
@@ -11229,10 +11231,10 @@
B b; return b.foo();
; return 0; }
EOF
-if { (eval echo configure:11233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 11236 "configure"
+#line 11238 "configure"
#include "confdefs.h"
class A { public: int foo() { return 1; } };
class B : public A { private: using A::foo; };
@@ -11240,7 +11242,7 @@
B b; return b.foo();
; return 0; }
EOF
-if { (eval echo configure:11244: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_access_changing_using2=no
else
@@ -11268,12 +11270,12 @@
fi
echo $ac_n "checking whether the C++ \"using\" keyword resolves ambiguity""... $ac_c" 1>&6
-echo "configure:11272: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
+echo "configure:11274: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_ambiguity_resolving_using'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11277 "configure"
+#line 11279 "configure"
#include "confdefs.h"
class X {
public: int go(const X&) {return 3;}
@@ -11289,7 +11291,7 @@
X x; Y y; y.jo(x);
; return 0; }
EOF
-if { (eval echo configure:11293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_ambiguity_resolving_using=yes
else
@@ -11310,19 +11312,19 @@
fi
echo $ac_n "checking for \"std::\" namespace""... $ac_c" 1>&6
-echo "configure:11314: checking for \"std::\" namespace" >&5
+echo "configure:11316: checking for \"std::\" namespace" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_namespace_std'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11319 "configure"
+#line 11321 "configure"
#include "confdefs.h"
#include <algorithm>
int main() {
return std::min(0, 1);
; return 0; }
EOF
-if { (eval echo configure:11326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_namespace_std=yes
else
@@ -11343,12 +11345,12 @@
fi
echo $ac_n "checking whether standard template operator!=() is ambiguous""... $ac_c" 1>&6
-echo "configure:11347: checking whether standard template operator!=() is ambiguous" >&5
+echo "configure:11349: checking whether standard template operator!=() is ambiguous" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_unambiguous_std_notequal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11352 "configure"
+#line 11354 "configure"
#include "confdefs.h"
#include <algorithm>
struct T1 {};
@@ -11358,7 +11360,7 @@
T1 a,b; return a != b;
; return 0; }
EOF
-if { (eval echo configure:11362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_unambiguous_std_notequal=unambiguous
else
@@ -11380,12 +11382,12 @@
echo $ac_n "checking for C++ reinterpret_cast""... $ac_c" 1>&6
-echo "configure:11384: checking for C++ reinterpret_cast" >&5
+echo "configure:11386: checking for C++ reinterpret_cast" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_reinterpret_cast'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11389 "configure"
+#line 11391 "configure"
#include "confdefs.h"
struct X { int i; };
struct Y { int i; };
@@ -11393,7 +11395,7 @@
X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);
; return 0; }
EOF
-if { (eval echo configure:11397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cpp_reinterpret_cast=yes
else
@@ -11414,7 +11416,7 @@
fi
echo $ac_n "checking for C++ dynamic_cast to void*""... $ac_c" 1>&6
-echo "configure:11418: checking for C++ dynamic_cast to void*" >&5
+echo "configure:11420: checking for C++ dynamic_cast to void*" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_dynamic_cast_void_ptr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11422,7 +11424,7 @@
ac_cv_cpp_dynamic_cast_void_ptr=no
else
cat > conftest.$ac_ext <<EOF
-#line 11426 "configure"
+#line 11428 "configure"
#include "confdefs.h"
class X { int i; public: virtual ~X() { } };
class Y { int j; public: virtual ~Y() { } };
@@ -11438,7 +11440,7 @@
((void*)&mdo == dynamic_cast<void*>(suby))));
}
EOF
-if { (eval echo configure:11442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_cpp_dynamic_cast_void_ptr=yes
else
@@ -11462,19 +11464,19 @@
echo $ac_n "checking whether C++ requires implementation of unused virtual methods""... $ac_c" 1>&6
-echo "configure:11466: checking whether C++ requires implementation of unused virtual methods" >&5
+echo "configure:11468: checking whether C++ requires implementation of unused virtual methods" >&5
if eval "test \"`echo '$''{'ac_cv_cpp_unused_required'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11471 "configure"
+#line 11473 "configure"
#include "confdefs.h"
class X {private: virtual void never_called();};
int main() {
X x;
; return 0; }
EOF
-if { (eval echo configure:11478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_cpp_unused_required=no
else
@@ -11497,12 +11499,12 @@
echo $ac_n "checking for trouble comparing to zero near std::operator!=()""... $ac_c" 1>&6
-echo "configure:11501: checking for trouble comparing to zero near std::operator!=()" >&5
+echo "configure:11503: checking for trouble comparing to zero near std::operator!=()" >&5
if eval "test \"`echo '$''{'ac_cv_trouble_comparing_to_zero'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11506 "configure"
+#line 11508 "configure"
#include "confdefs.h"
#include <algorithm>
template <class T> class Foo {};
@@ -11513,7 +11515,7 @@
Foo<int> f; return (0 != f);
; return 0; }
EOF
-if { (eval echo configure:11517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_trouble_comparing_to_zero=no
else
@@ -11545,19 +11547,19 @@
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:11549: checking for LC_MESSAGES" >&5
+echo "configure:11551: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'ac_cv_i18n_lc_messages'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11554 "configure"
+#line 11556 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
int category = LC_MESSAGES;
; return 0; }
EOF
-if { (eval echo configure:11561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_i18n_lc_messages=yes
else
@@ -11638,7 +11640,7 @@
# Extract the first word of "nspr-config", so it can be a program name with args.
set dummy nspr-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:11642: checking for $ac_word" >&5
+echo "configure:11644: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_NSPR_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11673,7 +11675,7 @@
min_nspr_version=4.0.0
echo $ac_n "checking for NSPR - version >= $min_nspr_version (skipping)""... $ac_c" 1>&6
-echo "configure:11677: checking for NSPR - version >= $min_nspr_version (skipping)" >&5
+echo "configure:11679: checking for NSPR - version >= $min_nspr_version (skipping)" >&5
no_nspr=""
if test "$NSPR_CONFIG" = "no"; then
@@ -11775,7 +11777,7 @@
# Extract the first word of "nss-config", so it can be a program name with args.
set dummy nss-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:11779: checking for $ac_word" >&5
+echo "configure:11781: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_NSS_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11810,7 +11812,7 @@
min_nss_version=3.0.0
echo $ac_n "checking for NSS - version >= $min_nss_version (skipping)""... $ac_c" 1>&6
-echo "configure:11814: checking for NSS - version >= $min_nss_version (skipping)" >&5
+echo "configure:11816: checking for NSS - version >= $min_nss_version (skipping)" >&5
no_nss=""
if test "$NSS_CONFIG" = "no"; then
@@ -11883,7 +11885,7 @@
SYSTEM_JPEG=
else
echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6
-echo "configure:11887: checking for jpeg_destroy_compress in -ljpeg" >&5
+echo "configure:11889: checking for jpeg_destroy_compress in -ljpeg" >&5
ac_lib_var=`echo jpeg'_'jpeg_destroy_compress | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -11891,7 +11893,7 @@
ac_save_LIBS="$LIBS"
LIBS="-ljpeg $JPEG_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 11895 "configure"
+#line 11897 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -11902,7 +11904,7 @@
jpeg_destroy_compress()
; return 0; }
EOF
-if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -11931,7 +11933,7 @@
SYSTEM_JPEG=
else
cat > conftest.$ac_ext <<EOF
-#line 11935 "configure"
+#line 11937 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -11945,7 +11947,7 @@
}
EOF
-if { (eval echo configure:11949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SYSTEM_JPEG=1
else
@@ -11986,7 +11988,7 @@
SYSTEM_ZLIB=
else
echo $ac_n "checking for gzread in -lz""... $ac_c" 1>&6
-echo "configure:11990: checking for gzread in -lz" >&5
+echo "configure:11992: checking for gzread in -lz" >&5
ac_lib_var=`echo z'_'gzread | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -11994,7 +11996,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lz $ZLIB_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 11998 "configure"
+#line 12000 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12005,7 +12007,7 @@
gzread()
; return 0; }
EOF
-if { (eval echo configure:12009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12033,7 +12035,7 @@
SYSTEM_ZLIB=
else
cat > conftest.$ac_ext <<EOF
-#line 12037 "configure"
+#line 12039 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -12054,7 +12056,7 @@
}
EOF
-if { (eval echo configure:12058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SYSTEM_ZLIB=1
else
@@ -12097,7 +12099,7 @@
SYSTEM_PNG=
else
echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6
-echo "configure:12101: checking for png_get_valid in -lpng" >&5
+echo "configure:12103: checking for png_get_valid in -lpng" >&5
ac_lib_var=`echo png'_'png_get_valid | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12105,7 +12107,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lpng $PNG_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12109 "configure"
+#line 12111 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12116,7 +12118,7 @@
png_get_valid()
; return 0; }
EOF
-if { (eval echo configure:12120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12144,7 +12146,7 @@
SYSTEM_PNG=
else
cat > conftest.$ac_ext <<EOF
-#line 12148 "configure"
+#line 12150 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -12158,7 +12160,7 @@
}
EOF
-if { (eval echo configure:12162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SYSTEM_PNG=1
else
@@ -12408,7 +12410,7 @@
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:12412: checking for $ac_word" >&5
+echo "configure:12414: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12443,7 +12445,7 @@
min_gtk_version=$GTK_VERSION
echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
-echo "configure:12447: checking for GTK - version >= $min_gtk_version" >&5
+echo "configure:12449: checking for GTK - version >= $min_gtk_version" >&5
no_gtk=""
if test "$GTK_CONFIG" = "no" ; then
no_gtk=yes
@@ -12466,7 +12468,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 12470 "configure"
+#line 12472 "configure"
#include "confdefs.h"
#include <gtk/gtk.h>
@@ -12544,7 +12546,7 @@
}
EOF
-if { (eval echo configure:12548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -12579,7 +12581,7 @@
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12583 "configure"
+#line 12585 "configure"
#include "confdefs.h"
#include <gtk/gtk.h>
@@ -12589,7 +12591,7 @@
return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
; return 0; }
EOF
-if { (eval echo configure:12593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK or finding the wrong"
@@ -12641,7 +12643,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:12645: checking for $ac_word" >&5
+echo "configure:12647: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12685,19 +12687,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for gtk+-2.0 >= 1.3.7""... $ac_c" 1>&6
-echo "configure:12689: checking for gtk+-2.0 >= 1.3.7" >&5
+echo "configure:12691: checking for gtk+-2.0 >= 1.3.7" >&5
if $PKG_CONFIG --exists "gtk+-2.0 >= 1.3.7" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_GTK2_CFLAGS""... $ac_c" 1>&6
-echo "configure:12696: checking MOZ_GTK2_CFLAGS" >&5
+echo "configure:12698: checking MOZ_GTK2_CFLAGS" >&5
MOZ_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 1.3.7"`
echo "$ac_t""$MOZ_GTK2_CFLAGS" 1>&6
echo $ac_n "checking MOZ_GTK2_LIBS""... $ac_c" 1>&6
-echo "configure:12701: checking MOZ_GTK2_LIBS" >&5
+echo "configure:12703: checking MOZ_GTK2_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_GTK2_LIBS="`$PKG_CONFIG --libs-only-L \"gtk+-2.0 >= 1.3.7\"` `$PKG_CONFIG --libs-only-l \"gtk+-2.0 >= 1.3.7\"`"
@@ -12762,7 +12764,7 @@
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:12766: checking for $ac_word" >&5
+echo "configure:12768: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_HOST_MOC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -12814,7 +12816,7 @@
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for main in -lqt""... $ac_c" 1>&6
-echo "configure:12818: checking for main in -lqt" >&5
+echo "configure:12820: checking for main in -lqt" >&5
ac_lib_var=`echo qt'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12822,14 +12824,14 @@
ac_save_LIBS="$LIBS"
LIBS="-lqt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12826 "configure"
+#line 12828 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:12833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12848,7 +12850,7 @@
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lqt-mt""... $ac_c" 1>&6
-echo "configure:12852: checking for main in -lqt-mt" >&5
+echo "configure:12854: checking for main in -lqt-mt" >&5
ac_lib_var=`echo qt-mt'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12856,14 +12858,14 @@
ac_save_LIBS="$LIBS"
LIBS="-lqt-mt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12860 "configure"
+#line 12862 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:12867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12899,9 +12901,9 @@
LIBS="$LIBS $QT_LIBS"
echo $ac_n "checking Qt - version >= $QT_VERSION""... $ac_c" 1>&6
-echo "configure:12903: checking Qt - version >= $QT_VERSION" >&5
+echo "configure:12905: checking Qt - version >= $QT_VERSION" >&5
cat > conftest.$ac_ext <<EOF
-#line 12905 "configure"
+#line 12907 "configure"
#include "confdefs.h"
#include <qglobal.h>
int main() {
@@ -12912,7 +12914,7 @@
; return 0; }
EOF
-if { (eval echo configure:12916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
result="yes"
else
@@ -13508,7 +13510,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13512: checking for $ac_word" >&5
+echo "configure:13514: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13552,19 +13554,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for xft""... $ac_c" 1>&6
-echo "configure:13556: checking for xft" >&5
+echo "configure:13558: checking for xft" >&5
if $PKG_CONFIG --exists "xft" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_XFT_CFLAGS""... $ac_c" 1>&6
-echo "configure:13563: checking MOZ_XFT_CFLAGS" >&5
+echo "configure:13565: checking MOZ_XFT_CFLAGS" >&5
MOZ_XFT_CFLAGS=`$PKG_CONFIG --cflags "xft"`
echo "$ac_t""$MOZ_XFT_CFLAGS" 1>&6
echo $ac_n "checking MOZ_XFT_LIBS""... $ac_c" 1>&6
-echo "configure:13568: checking MOZ_XFT_LIBS" >&5
+echo "configure:13570: checking MOZ_XFT_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_XFT_LIBS="`$PKG_CONFIG --libs-only-L \"xft\"` `$PKG_CONFIG --libs-only-l \"xft\"`"
@@ -13599,7 +13601,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13603: checking for $ac_word" >&5
+echo "configure:13605: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13643,19 +13645,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for pango >= 1.1.0""... $ac_c" 1>&6
-echo "configure:13647: checking for pango >= 1.1.0" >&5
+echo "configure:13649: checking for pango >= 1.1.0" >&5
if $PKG_CONFIG --exists "pango >= 1.1.0" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking _PANGOCHK_CFLAGS""... $ac_c" 1>&6
-echo "configure:13654: checking _PANGOCHK_CFLAGS" >&5
+echo "configure:13656: checking _PANGOCHK_CFLAGS" >&5
_PANGOCHK_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.1.0"`
echo "$ac_t""$_PANGOCHK_CFLAGS" 1>&6
echo $ac_n "checking _PANGOCHK_LIBS""... $ac_c" 1>&6
-echo "configure:13659: checking _PANGOCHK_LIBS" >&5
+echo "configure:13661: checking _PANGOCHK_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
_PANGOCHK_LIBS="`$PKG_CONFIG --libs-only-L \"pango >= 1.1.0\"` `$PKG_CONFIG --libs-only-l \"pango >= 1.1.0\"`"
@@ -13715,7 +13717,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13719: checking for $ac_word" >&5
+echo "configure:13721: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13759,19 +13761,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for pango >= 1.6.0 pangoft2 >= 1.6.0""... $ac_c" 1>&6
-echo "configure:13763: checking for pango >= 1.6.0 pangoft2 >= 1.6.0" >&5
+echo "configure:13765: checking for pango >= 1.6.0 pangoft2 >= 1.6.0" >&5
if $PKG_CONFIG --exists "pango >= 1.6.0 pangoft2 >= 1.6.0" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_PANGO_CFLAGS""... $ac_c" 1>&6
-echo "configure:13770: checking MOZ_PANGO_CFLAGS" >&5
+echo "configure:13772: checking MOZ_PANGO_CFLAGS" >&5
MOZ_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.6.0 pangoft2 >= 1.6.0"`
echo "$ac_t""$MOZ_PANGO_CFLAGS" 1>&6
echo $ac_n "checking MOZ_PANGO_LIBS""... $ac_c" 1>&6
-echo "configure:13775: checking MOZ_PANGO_LIBS" >&5
+echo "configure:13777: checking MOZ_PANGO_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_PANGO_LIBS="`$PKG_CONFIG --libs-only-L \"pango >= 1.6.0 pangoft2 >= 1.6.0\"` `$PKG_CONFIG --libs-only-l \"pango >= 1.6.0 pangoft2 >= 1.6.0\"`"
@@ -13839,7 +13841,7 @@
_SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$XLDFLAGS $LDFLAGS"
echo $ac_n "checking for XpGetPrinterList in -lXp""... $ac_c" 1>&6
-echo "configure:13843: checking for XpGetPrinterList in -lXp" >&5
+echo "configure:13845: checking for XpGetPrinterList in -lXp" >&5
ac_lib_var=`echo Xp'_'XpGetPrinterList | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13847,7 +13849,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lXp $XEXT_LIBS $XLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13851 "configure"
+#line 13853 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -13858,7 +13860,7 @@
XpGetPrinterList()
; return 0; }
EOF
-if { (eval echo configure:13862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -13931,7 +13933,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13935: checking for $ac_word" >&5
+echo "configure:13937: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13975,19 +13977,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION""... $ac_c" 1>&6
-echo "configure:13979: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5
+echo "configure:13981: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5
if $PKG_CONFIG --exists "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_GNOMEVFS_CFLAGS""... $ac_c" 1>&6
-echo "configure:13986: checking MOZ_GNOMEVFS_CFLAGS" >&5
+echo "configure:13988: checking MOZ_GNOMEVFS_CFLAGS" >&5
MOZ_GNOMEVFS_CFLAGS=`$PKG_CONFIG --cflags "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"`
echo "$ac_t""$MOZ_GNOMEVFS_CFLAGS" 1>&6
echo $ac_n "checking MOZ_GNOMEVFS_LIBS""... $ac_c" 1>&6
-echo "configure:13991: checking MOZ_GNOMEVFS_LIBS" >&5
+echo "configure:13993: checking MOZ_GNOMEVFS_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_GNOMEVFS_LIBS="`$PKG_CONFIG --libs-only-L \"gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION\"` `$PKG_CONFIG --libs-only-l \"gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION\"`"
@@ -14038,7 +14040,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:14042: checking for $ac_word" >&5
+echo "configure:14044: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14082,19 +14084,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for gconf-2.0 >= $GCONF_VERSION""... $ac_c" 1>&6
-echo "configure:14086: checking for gconf-2.0 >= $GCONF_VERSION" >&5
+echo "configure:14088: checking for gconf-2.0 >= $GCONF_VERSION" >&5
if $PKG_CONFIG --exists "gconf-2.0 >= $GCONF_VERSION" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_GCONF_CFLAGS""... $ac_c" 1>&6
-echo "configure:14093: checking MOZ_GCONF_CFLAGS" >&5
+echo "configure:14095: checking MOZ_GCONF_CFLAGS" >&5
MOZ_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= $GCONF_VERSION"`
echo "$ac_t""$MOZ_GCONF_CFLAGS" 1>&6
echo $ac_n "checking MOZ_GCONF_LIBS""... $ac_c" 1>&6
-echo "configure:14098: checking MOZ_GCONF_LIBS" >&5
+echo "configure:14100: checking MOZ_GCONF_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_GCONF_LIBS="`$PKG_CONFIG --libs-only-L \"gconf-2.0 >= $GCONF_VERSION\"` `$PKG_CONFIG --libs-only-l \"gconf-2.0 >= $GCONF_VERSION\"`"
@@ -14141,7 +14143,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:14145: checking for $ac_word" >&5
+echo "configure:14147: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14185,19 +14187,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for libgnome-2.0 >= $LIBGNOME_VERSION""... $ac_c" 1>&6
-echo "configure:14189: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5
+echo "configure:14191: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5
if $PKG_CONFIG --exists "libgnome-2.0 >= $LIBGNOME_VERSION" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_LIBGNOME_CFLAGS""... $ac_c" 1>&6
-echo "configure:14196: checking MOZ_LIBGNOME_CFLAGS" >&5
+echo "configure:14198: checking MOZ_LIBGNOME_CFLAGS" >&5
MOZ_LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= $LIBGNOME_VERSION"`
echo "$ac_t""$MOZ_LIBGNOME_CFLAGS" 1>&6
echo $ac_n "checking MOZ_LIBGNOME_LIBS""... $ac_c" 1>&6
-echo "configure:14201: checking MOZ_LIBGNOME_LIBS" >&5
+echo "configure:14203: checking MOZ_LIBGNOME_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_LIBGNOME_LIBS="`$PKG_CONFIG --libs-only-L \"libgnome-2.0 >= $LIBGNOME_VERSION\"` `$PKG_CONFIG --libs-only-l \"libgnome-2.0 >= $LIBGNOME_VERSION\"`"
@@ -14275,7 +14277,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:14279: checking for $ac_word" >&5
+echo "configure:14281: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14319,19 +14321,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for libgnomeui-2.0 >= $GNOMEUI_VERSION""... $ac_c" 1>&6
-echo "configure:14323: checking for libgnomeui-2.0 >= $GNOMEUI_VERSION" >&5
+echo "configure:14325: checking for libgnomeui-2.0 >= $GNOMEUI_VERSION" >&5
if $PKG_CONFIG --exists "libgnomeui-2.0 >= $GNOMEUI_VERSION" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking MOZ_GNOMEUI_CFLAGS""... $ac_c" 1>&6
-echo "configure:14330: checking MOZ_GNOMEUI_CFLAGS" >&5
+echo "configure:14332: checking MOZ_GNOMEUI_CFLAGS" >&5
MOZ_GNOMEUI_CFLAGS=`$PKG_CONFIG --cflags "libgnomeui-2.0 >= $GNOMEUI_VERSION"`
echo "$ac_t""$MOZ_GNOMEUI_CFLAGS" 1>&6
echo $ac_n "checking MOZ_GNOMEUI_LIBS""... $ac_c" 1>&6
-echo "configure:14335: checking MOZ_GNOMEUI_LIBS" >&5
+echo "configure:14337: checking MOZ_GNOMEUI_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
MOZ_GNOMEUI_LIBS="`$PKG_CONFIG --libs-only-L \"libgnomeui-2.0 >= $GNOMEUI_VERSION\"` `$PKG_CONFIG --libs-only-l \"libgnomeui-2.0 >= $GNOMEUI_VERSION\"`"
@@ -14817,7 +14819,7 @@
# Extract the first word of "javac", so it can be a program name with args.
set dummy javac; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:14821: checking for $ac_word" >&5
+echo "configure:14823: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_JAVAC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14853,7 +14855,7 @@
# Extract the first word of "jar", so it can be a program name with args.
set dummy jar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:14857: checking for $ac_word" >&5
+echo "configure:14859: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_JAR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15100,7 +15102,7 @@
gdiplus)
MOZ_SVG_RENDERER_GDIPLUS=1
echo $ac_n "checking for Gdiplus.h""... $ac_c" 1>&6
-echo "configure:15104: checking for Gdiplus.h" >&5
+echo "configure:15106: checking for Gdiplus.h" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -15110,7 +15112,7 @@
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 15114 "configure"
+#line 15116 "configure"
#include "confdefs.h"
#include <windows.h>
#include <unknwn.h>
@@ -15119,7 +15121,7 @@
; return 0; }
EOF
-if { (eval echo configure:15123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
else
@@ -15199,7 +15201,7 @@
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:15203: checking for $ac_word" >&5
+echo "configure:15205: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MAKENSIS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15244,7 +15246,7 @@
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:15248: checking for $ac_word" >&5
+echo "configure:15250: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_HOST_ICONV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15313,13 +15315,13 @@
msvc*|mks*|cygwin*|mingw*|wince*)
if test -n "$MOZ_UPDATER"; then
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:15317: checking for iconv" >&5
+echo "configure:15319: checking for iconv" >&5
for ac_prog in $HOST_ICONV "iconv"
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:15323: checking for $ac_word" >&5
+echo "configure:15325: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_HOST_ICONV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -15665,18 +15667,18 @@
if test -n "$MOZ_DEBUG"; then
echo $ac_n "checking for valid debug flags""... $ac_c" 1>&6
-echo "configure:15669: checking for valid debug flags" >&5
+echo "configure:15671: checking for valid debug flags" >&5
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
cat > conftest.$ac_ext <<EOF
-#line 15673 "configure"
+#line 15675 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
printf("Hello World\n");
; return 0; }
EOF
-if { (eval echo configure:15680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_results=yes
else
@@ -15717,18 +15719,18 @@
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$MOZ_OPTIMIZE"; then
echo $ac_n "checking for valid optimization flags""... $ac_c" 1>&6
-echo "configure:15721: checking for valid optimization flags" >&5
+echo "configure:15723: checking for valid optimization flags" >&5
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
cat > conftest.$ac_ext <<EOF
-#line 15725 "configure"
+#line 15727 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
printf("Hello World\n");
; return 0; }
EOF
-if { (eval echo configure:15732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_results=yes
else
@@ -15945,7 +15947,7 @@
if test -n "$_ENABLE_EFENCE"; then
echo $ac_n "checking for malloc in -lefence""... $ac_c" 1>&6
-echo "configure:15949: checking for malloc in -lefence" >&5
+echo "configure:15951: checking for malloc in -lefence" >&5
ac_lib_var=`echo efence'_'malloc | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -15953,7 +15955,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lefence $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 15957 "configure"
+#line 15959 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -15964,7 +15966,7 @@
malloc()
; return 0; }
EOF
-if { (eval echo configure:15968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -16065,12 +16067,12 @@
for ac_func in __builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16069: checking for $ac_func" >&5
+echo "configure:16071: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16074 "configure"
+#line 16076 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16096,7 +16098,7 @@
; return 0; }
EOF
-if { (eval echo configure:16100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16339,12 +16341,12 @@
for ac_func in __cxa_demangle
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16343: checking for $ac_func" >&5
+echo "configure:16345: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16348 "configure"
+#line 16350 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16370,7 +16372,7 @@
; return 0; }
EOF
-if { (eval echo configure:16374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16508,7 +16510,7 @@
# Compiler Options
echo $ac_n "checking for gcc -pipe support""... $ac_c" 1>&6
-echo "configure:16512: checking for gcc -pipe support" >&5
+echo "configure:16514: checking for gcc -pipe support" >&5
if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
echo '#include <stdio.h>' > dummy-hello.c
echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
@@ -16523,14 +16525,14 @@
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -pipe"
cat > conftest.$ac_ext <<EOF
-#line 16527 "configure"
+#line 16529 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
printf("Hello World\n");
; return 0; }
EOF
-if { (eval echo configure:16534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_res_gcc_pipe="yes"
else
@@ -16572,16 +16574,16 @@
_SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
echo $ac_n "checking whether compiler supports -Wno-long-long""... $ac_c" 1>&6
-echo "configure:16576: checking whether compiler supports -Wno-long-long" >&5
+echo "configure:16578: checking whether compiler supports -Wno-long-long" >&5
cat > conftest.$ac_ext <<EOF
-#line 16578 "configure"
+#line 16580 "configure"
#include "confdefs.h"
int main() {
return(0);
; return 0; }
EOF
-if { (eval echo configure:16585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
@@ -16602,16 +16604,16 @@
CFLAGS="$CFLAGS -fprofile-generate"
echo $ac_n "checking whether C compiler supports -fprofile-generate""... $ac_c" 1>&6
-echo "configure:16606: checking whether C compiler supports -fprofile-generate" >&5
+echo "configure:16608: checking whether C compiler supports -fprofile-generate" >&5
cat > conftest.$ac_ext <<EOF
-#line 16608 "configure"
+#line 16610 "configure"
#include "confdefs.h"
int main() {
return 0;
; return 0; }
EOF
-if { (eval echo configure:16615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
PROFILE_GEN_CFLAGS="-fprofile-generate"
result="yes"
@@ -16629,16 +16631,16 @@
else
CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
echo $ac_n "checking whether C compiler supports -fprofile-arcs""... $ac_c" 1>&6
-echo "configure:16633: checking whether C compiler supports -fprofile-arcs" >&5
+echo "configure:16635: checking whether C compiler supports -fprofile-arcs" >&5
cat > conftest.$ac_ext <<EOF
-#line 16635 "configure"
+#line 16637 "configure"
#include "confdefs.h"
int main() {
return 0;
; return 0; }
EOF
-if { (eval echo configure:16642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
PROFILE_GEN_CFLAGS="-fprofile-arcs"
result="yes"
@@ -16684,16 +16686,16 @@
_SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
echo $ac_n "checking whether C++ compiler has -pedantic long long bug""... $ac_c" 1>&6
-echo "configure:16688: checking whether C++ compiler has -pedantic long long bug" >&5
+echo "configure:16690: checking whether C++ compiler has -pedantic long long bug" >&5
cat > conftest.$ac_ext <<EOF
-#line 16690 "configure"
+#line 16692 "configure"
#include "confdefs.h"
$configure_static_assert_macros
int main() {
CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)
; return 0; }
EOF
-if { (eval echo configure:16697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
result="no"
else
@@ -16718,12 +16720,12 @@
fi
echo $ac_n "checking for correct temporary object destruction order""... $ac_c" 1>&6
-echo "configure:16722: checking for correct temporary object destruction order" >&5
+echo "configure:16724: checking for correct temporary object destruction order" >&5
if test "$cross_compiling" = yes; then
result="maybe"
else
cat > conftest.$ac_ext <<EOF
-#line 16727 "configure"
+#line 16729 "configure"
#include "confdefs.h"
class A {
public: A(int& x) : mValue(x) {}
@@ -16743,7 +16745,7 @@
}
EOF
-if { (eval echo configure:16747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:16749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
result="yes"
else
@@ -16764,12 +16766,12 @@
_SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
echo $ac_n "checking for correct overload resolution with const and templates""... $ac_c" 1>&6
-echo "configure:16768: checking for correct overload resolution with const and templates" >&5
+echo "configure:16770: checking for correct overload resolution with const and templates" >&5
if eval "test \"`echo '$''{'ac_nscap_nonconst_opeq_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16773 "configure"
+#line 16775 "configure"
#include "confdefs.h"
template <class T>
@@ -16799,7 +16801,7 @@
; return 0; }
EOF
-if { (eval echo configure:16803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_nscap_nonconst_opeq_bug="no"
else
@@ -17091,7 +17093,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:17095: checking for $ac_word" >&5
+echo "configure:17097: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17135,19 +17137,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6
-echo "configure:17139: checking for libIDL-2.0 >= 0.8.0" >&5
+echo "configure:17141: checking for libIDL-2.0 >= 0.8.0" >&5
if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6
-echo "configure:17146: checking LIBIDL_CFLAGS" >&5
+echo "configure:17148: checking LIBIDL_CFLAGS" >&5
LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"`
echo "$ac_t""$LIBIDL_CFLAGS" 1>&6
echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6
-echo "configure:17151: checking LIBIDL_LIBS" >&5
+echo "configure:17153: checking LIBIDL_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
LIBIDL_LIBS="`$PKG_CONFIG --libs-only-L \"libIDL-2.0 >= 0.8.0\"` `$PKG_CONFIG --libs-only-l \"libIDL-2.0 >= 0.8.0\"`"
@@ -17270,7 +17272,7 @@
# Extract the first word of "glib-config", so it can be a program name with args.
set dummy glib-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:17274: checking for $ac_word" >&5
+echo "configure:17276: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17305,7 +17307,7 @@
min_glib_version=1.2.0
echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
-echo "configure:17309: checking for GLIB - version >= $min_glib_version" >&5
+echo "configure:17311: checking for GLIB - version >= $min_glib_version" >&5
no_glib=""
if test "$GLIB_CONFIG" = "no" ; then
no_glib=yes
@@ -17328,7 +17330,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 17332 "configure"
+#line 17334 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -17404,7 +17406,7 @@
}
EOF
-if { (eval echo configure:17408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:17410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -17438,7 +17440,7 @@
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 17442 "configure"
+#line 17444 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -17448,7 +17450,7 @@
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
; return 0; }
EOF
-if { (eval echo configure:17452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
@@ -17492,7 +17494,7 @@
# Extract the first word of "libIDL-config", so it can be a program name with args.
set dummy libIDL-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:17496: checking for $ac_word" >&5
+echo "configure:17498: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17527,7 +17529,7 @@
min_libIDL_version=$LIBIDL_VERSION
echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6
-echo "configure:17531: checking for libIDL - version >= $min_libIDL_version" >&5
+echo "configure:17533: checking for libIDL - version >= $min_libIDL_version" >&5
no_libIDL=""
if test "$LIBIDL_CONFIG" = "no" ; then
no_libIDL=yes
@@ -17554,7 +17556,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 17558 "configure"
+#line 17560 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -17640,7 +17642,7 @@
}
EOF
-if { (eval echo configure:17644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:17646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -17674,7 +17676,7 @@
CFLAGS="$CFLAGS $LIBIDL_CFLAGS"
LIBS="$LIBS $LIBIDL_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 17678 "configure"
+#line 17680 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -17685,7 +17687,7 @@
return IDL_get_libver_string ? 1 : 0;
; return 0; }
EOF
-if { (eval echo configure:17689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding libIDL or finding the wrong"
@@ -17813,7 +17815,7 @@
# Extract the first word of "glib-config", so it can be a program name with args.
set dummy glib-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:17817: checking for $ac_word" >&5
+echo "configure:17819: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17848,7 +17850,7 @@
min_glib_version=1.2.0
echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
-echo "configure:17852: checking for GLIB - version >= $min_glib_version" >&5
+echo "configure:17854: checking for GLIB - version >= $min_glib_version" >&5
no_glib=""
if test "$GLIB_CONFIG" = "no" ; then
no_glib=yes
@@ -17871,7 +17873,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 17875 "configure"
+#line 17877 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -17947,7 +17949,7 @@
}
EOF
-if { (eval echo configure:17951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:17953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -17981,7 +17983,7 @@
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 17985 "configure"
+#line 17987 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -17991,7 +17993,7 @@
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
; return 0; }
EOF
-if { (eval echo configure:17995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
@@ -18035,7 +18037,7 @@
# Extract the first word of "libIDL-config", so it can be a program name with args.
set dummy libIDL-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:18039: checking for $ac_word" >&5
+echo "configure:18041: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18070,7 +18072,7 @@
min_libIDL_version=$LIBIDL_VERSION
echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6
-echo "configure:18074: checking for libIDL - version >= $min_libIDL_version" >&5
+echo "configure:18076: checking for libIDL - version >= $min_libIDL_version" >&5
no_libIDL=""
if test "$LIBIDL_CONFIG" = "no" ; then
no_libIDL=yes
@@ -18097,7 +18099,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 18101 "configure"
+#line 18103 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -18183,7 +18185,7 @@
}
EOF
-if { (eval echo configure:18187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -18217,7 +18219,7 @@
CFLAGS="$CFLAGS $LIBIDL_CFLAGS"
LIBS="$LIBS $LIBIDL_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 18221 "configure"
+#line 18223 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -18228,7 +18230,7 @@
return IDL_get_libver_string ? 1 : 0;
; return 0; }
EOF
-if { (eval echo configure:18232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding libIDL or finding the wrong"
@@ -18269,7 +18271,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:18273: checking for $ac_word" >&5
+echo "configure:18275: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18313,19 +18315,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6
-echo "configure:18317: checking for libIDL-2.0 >= 0.8.0" >&5
+echo "configure:18319: checking for libIDL-2.0 >= 0.8.0" >&5
if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6
-echo "configure:18324: checking LIBIDL_CFLAGS" >&5
+echo "configure:18326: checking LIBIDL_CFLAGS" >&5
LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"`
echo "$ac_t""$LIBIDL_CFLAGS" 1>&6
echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6
-echo "configure:18329: checking LIBIDL_LIBS" >&5
+echo "configure:18331: checking LIBIDL_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
LIBIDL_LIBS="`$PKG_CONFIG --libs-only-L \"libIDL-2.0 >= 0.8.0\"` `$PKG_CONFIG --libs-only-l \"libIDL-2.0 >= 0.8.0\"`"
@@ -18361,7 +18363,7 @@
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:18365: checking for $ac_word" >&5
+echo "configure:18367: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_ORBIT_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18398,7 +18400,7 @@
if test -n "$ORBIT_CONFIG"; then
echo $ac_n "checking for ORBit libIDL usability""... $ac_c" 1>&6
-echo "configure:18402: checking for ORBit libIDL usability" >&5
+echo "configure:18404: checking for ORBit libIDL usability" >&5
_ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
_ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
_ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
@@ -18415,7 +18417,7 @@
result="maybe"
else
cat > conftest.$ac_ext <<EOF
-#line 18419 "configure"
+#line 18421 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -18430,7 +18432,7 @@
}
EOF
-if { (eval echo configure:18434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
_LIBIDL_FOUND=1
result="yes"
@@ -18487,7 +18489,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:18491: checking for $ac_word" >&5
+echo "configure:18493: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18531,19 +18533,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for glib-2.0 >= 1.3.7""... $ac_c" 1>&6
-echo "configure:18535: checking for glib-2.0 >= 1.3.7" >&5
+echo "configure:18537: checking for glib-2.0 >= 1.3.7" >&5
if $PKG_CONFIG --exists "glib-2.0 >= 1.3.7" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6
-echo "configure:18542: checking GLIB_CFLAGS" >&5
+echo "configure:18544: checking GLIB_CFLAGS" >&5
GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 1.3.7"`
echo "$ac_t""$GLIB_CFLAGS" 1>&6
echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6
-echo "configure:18547: checking GLIB_LIBS" >&5
+echo "configure:18549: checking GLIB_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
GLIB_LIBS="`$PKG_CONFIG --libs-only-L \"glib-2.0 >= 1.3.7\"` `$PKG_CONFIG --libs-only-l \"glib-2.0 >= 1.3.7\"`"
@@ -18627,7 +18629,7 @@
# Extract the first word of "glib-config", so it can be a program name with args.
set dummy glib-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:18631: checking for $ac_word" >&5
+echo "configure:18633: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -18662,7 +18664,7 @@
min_glib_version=${GLIB_VERSION}
echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
-echo "configure:18666: checking for GLIB - version >= $min_glib_version" >&5
+echo "configure:18668: checking for GLIB - version >= $min_glib_version" >&5
no_glib=""
if test "$GLIB_CONFIG" = "no" ; then
no_glib=yes
@@ -18685,7 +18687,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 18689 "configure"
+#line 18691 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -18761,7 +18763,7 @@
}
EOF
-if { (eval echo configure:18765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -18795,7 +18797,7 @@
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 18799 "configure"
+#line 18801 "configure"
#include "confdefs.h"
#include <glib.h>
@@ -18805,7 +18807,7 @@
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
; return 0; }
EOF
-if { (eval echo configure:18809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
@@ -18885,19 +18887,19 @@
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:18889: checking for working alloca.h" >&5
+echo "configure:18891: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18894 "configure"
+#line 18896 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:18901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -18918,12 +18920,12 @@
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:18922: checking for alloca" >&5
+echo "configure:18924: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18927 "configure"
+#line 18929 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -18951,7 +18953,7 @@
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:18955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -18983,12 +18985,12 @@
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:18987: checking whether alloca needs Cray hooks" >&5
+echo "configure:18989: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 18992 "configure"
+#line 18994 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -19013,12 +19015,12 @@
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:19017: checking for $ac_func" >&5
+echo "configure:19019: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 19022 "configure"
+#line 19024 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -19041,7 +19043,7 @@
; return 0; }
EOF
-if { (eval echo configure:19045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -19068,7 +19070,7 @@
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:19072: checking stack direction for C alloca" >&5
+echo "configure:19074: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -19076,7 +19078,7 @@
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 19080 "configure"
+#line 19082 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -19095,7 +19097,7 @@
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:19099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:19101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -19144,17 +19146,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19148: checking for $ac_hdr" >&5
+echo "configure:19150: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 19153 "configure"
+#line 19155 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -19245,7 +19247,7 @@
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:19249: checking for $ac_word" >&5
+echo "configure:19251: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -19289,19 +19291,19 @@
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for cairo >= $CAIRO_VERSION""... $ac_c" 1>&6
-echo "configure:19293: checking for cairo >= $CAIRO_VERSION" >&5
+echo "configure:19295: checking for cairo >= $CAIRO_VERSION" >&5
if $PKG_CONFIG --exists "cairo >= $CAIRO_VERSION" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking CAIRO_CFLAGS""... $ac_c" 1>&6
-echo "configure:19300: checking CAIRO_CFLAGS" >&5
+echo "configure:19302: checking CAIRO_CFLAGS" >&5
CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= $CAIRO_VERSION"`
echo "$ac_t""$CAIRO_CFLAGS" 1>&6
echo $ac_n "checking CAIRO_LIBS""... $ac_c" 1>&6
-echo "configure:19305: checking CAIRO_LIBS" >&5
+echo "configure:19307: checking CAIRO_LIBS" >&5
## don't use --libs since that can do evil things like add
## -Wl,--export-dynamic
CAIRO_LIBS="`$PKG_CONFIG --libs-only-L \"cairo >= $CAIRO_VERSION\"` `$PKG_CONFIG --libs-only-l \"cairo >= $CAIRO_VERSION\"`"
@@ -19366,7 +19368,7 @@
# Extract the first word of "python", so it can be a program name with args.
set dummy python; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:19370: checking for $ac_word" >&5
+echo "configure:19372: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -19642,14 +19644,14 @@
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 19646 "configure"
+#line 19648 "configure"
#include "confdefs.h"
#include <gmodule.h>
int main() {
int x = 1; x++;
; return 0; }
EOF
-if { (eval echo configure:19653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -19956,7 +19958,7 @@
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $XCFLAGS"
cat > conftest.$ac_ext <<EOF
-#line 19960 "configure"
+#line 19962 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -19972,7 +19974,7 @@
; return 0; }
EOF
-if { (eval echo configure:19976: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:19978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/configure.in
^
|
@@ -1041,7 +1041,7 @@
;;
AIX)
OS_RELEASE=`uname -v`.`uname -r`
- OS_TEST=`uname -p`
+ OS_TEST=${target_cpu}
;;
BSD_386)
OS_ARCH=BSD
@@ -1139,7 +1139,7 @@
CPU_ARCH=x86
;;
-powerpc* | ppc)
+powerpc* | ppc | rs6000)
CPU_ARCH=ppc
;;
@@ -1446,6 +1446,8 @@
DSO_CFLAGS='-qflag=w:w'
DSO_PIC_CFLAGS=
LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
+ AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
+ MOZ_FIX_LINK_PATHS=
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
if test "$COMPILE_ENVIRONMENT"; then
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/base/src/nsDocument.cpp
^
|
@@ -2198,6 +2198,7 @@
mScriptGlobalObject = aScriptGlobalObject;
if (aScriptGlobalObject) {
+ mScriptObject = nsnull;
mHasHadScriptHandlingObject = PR_TRUE;
// Go back to using the docshell for the layout history state
mLayoutHistoryState = nsnull;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/base/src/nsDocument.h
^
|
@@ -546,6 +546,11 @@
virtual nsIScriptGlobalObject*
GetScriptHandlingObject(PRBool& aHasHadScriptHandlingObject) const;
virtual void SetScriptHandlingObject(nsIScriptGlobalObject* aScriptObject);
+ void ClearScriptHandlingObject()
+ {
+ mScriptObject = nsnull;
+ mHasHadScriptHandlingObject = PR_TRUE;
+ }
virtual nsIScriptGlobalObject* GetScopeObject();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/base/src/nsXMLHttpRequest.cpp
^
|
@@ -84,6 +84,7 @@
#include "nsContentErrors.h"
#include "nsLayoutStatics.h"
#include "nsIScriptObjectPrincipal.h"
+#include "nsIMultiPartChannel.h"
static const char* kLoadAsData = "loadAsData";
#define LOADSTR NS_LITERAL_STRING("load")
@@ -878,6 +879,9 @@
for (PRInt32 i = 0, i_end = aListeners->Count(); i < i_end; ++i) {
nsIDOMEventListener *listener = aListeners->ObjectAt(i);
if (listener) {
+ if (NS_FAILED(CheckInnerWindowCorrectness())) {
+ break;
+ }
listener->HandleEvent(aEvent);
}
}
@@ -1276,10 +1280,29 @@
return inStr->ReadSegments(nsXMLHttpRequest::StreamReaderFunc, (void*)this, count, &totalRead);
}
+PRBool
+IsSameOrBaseChannel(nsIRequest* aPossibleBase, nsIChannel* aChannel)
+{
+ nsCOMPtr<nsIMultiPartChannel> mpChannel = do_QueryInterface(aPossibleBase);
+ if (mpChannel) {
+ nsCOMPtr<nsIChannel> baseChannel;
+ nsresult rv = mpChannel->GetBaseChannel(getter_AddRefs(baseChannel));
+ NS_ENSURE_SUCCESS(rv, PR_FALSE);
+
+ return baseChannel == aChannel;
+ }
+
+ return aPossibleBase == aChannel;
+}
+
/* void onStartRequest (in nsIRequest request, in nsISupports ctxt); */
NS_IMETHODIMP
nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
{
+ if (!IsSameOrBaseChannel(request, mChannel)) {
+ return NS_OK;
+ }
+
// Don't do anything if we have been aborted
if (mState & XML_HTTP_REQUEST_UNINITIALIZED)
return NS_OK;
@@ -1293,6 +1316,8 @@
nsCOMPtr<nsIChannel> channel(do_QueryInterface(request));
NS_ENSURE_TRUE(channel, NS_ERROR_UNEXPECTED);
+ channel->SetOwner(mPrincipal);
+
mReadRequest = request;
mContext = ctxt;
mState |= XML_HTTP_REQUEST_PARSEBODY;
@@ -1327,6 +1352,9 @@
getter_AddRefs(mDocument));
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
+ nsCOMPtr<nsIDocument> doc(do_QueryInterface(mDocument));
+ doc->SetPrincipal(mPrincipal);
+
// Reset responseBody
mResponseBody.Truncate();
@@ -1393,6 +1421,10 @@
NS_IMETHODIMP
nsXMLHttpRequest::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsresult status)
{
+ if (!IsSameOrBaseChannel(request, mChannel)) {
+ return NS_OK;
+ }
+
// Don't do anything if we have been aborted
if (mState & XML_HTTP_REQUEST_UNINITIALIZED)
return NS_OK;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/canvas/src/nsCanvasRenderingContext2D.cpp
^
|
@@ -2159,9 +2159,25 @@
if ((status & imgIRequest::STATUS_LOAD_COMPLETE) == 0)
return NS_ERROR_NOT_AVAILABLE;
+ // Get the "current" current URI if it's available - the one we get to
+ // after all redirects
nsCOMPtr<nsIURI> uri;
- rv = imageLoader->GetCurrentURI(uriOut);
+ nsCOMPtr<imgIRequest> currentRequest;
+ rv = imageLoader->GetRequest(nsIImageLoadingContent::CURRENT_REQUEST,
+ getter_AddRefs(currentRequest));
NS_ENSURE_SUCCESS(rv, rv);
+ if (currentRequest) {
+ nsCOMPtr<imgIRequest_MOZILLA_1_8_BRANCH> req = do_QueryInterface(currentRequest);
+ if (req)
+ req->GetCurrentURI(getter_AddRefs(uri));
+ }
+
+ if (!uri) {
+ rv = imageLoader->GetCurrentURI(getter_AddRefs(uri));
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+
+ NS_IF_ADDREF(*uriOut = uri);
*forceWriteOnlyOut = PR_FALSE;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/html/content/src/Makefile.in
^
|
@@ -144,6 +144,7 @@
-I$(srcdir)/../../../events/src \
-I$(srcdir)/../../../xbl/src \
-I$(srcdir)/../../../../layout/style \
+ -I$(srcdir)/../../../../layout/tables \
-I$(srcdir) \
$(NULL)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/html/content/src/nsGenericHTMLElement.cpp
^
|
@@ -3760,7 +3760,7 @@
return;
if (IsContentOfType(eHTML_FORM_CONTROL)) {
- nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_FALSE);
+ nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
if (formControlFrame) {
formControlFrame->SetFocus(PR_FALSE, PR_FALSE);
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/html/content/src/nsHTMLTableCellElement.cpp
^
|
@@ -45,6 +45,7 @@
#include "nsPresContext.h"
#include "nsRuleData.h"
#include "nsIDocument.h"
+#include "celldata.h"
class nsHTMLTableCellElement : public nsGenericHTMLElement,
public nsIDOMHTMLTableCellElement
@@ -259,9 +260,6 @@
{ 0 }
};
-#define MAX_ROWSPAN 8190 // celldata.h can not handle more
-#define MAX_COLSPAN 1000 // limit as IE and opera do
-
PRBool
nsHTMLTableCellElement::ParseAttribute(nsIAtom* aAttribute,
const nsAString& aValue,
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/xbl/src/nsXBLBinding.cpp
^
|
@@ -1240,7 +1240,25 @@
PRBool canExecute;
nsresult rv = mgr->CanExecuteScripts(cx, principal, &canExecute);
- return NS_SUCCEEDED(rv) && canExecute;
+ if (NS_FAILED(rv) || !canExecute) {
+ return PR_FALSE;
+ }
+
+ // Now one last check: make sure that we're not allowing a privilege
+ // escalation here.
+ PRBool haveCert;
+ nsIPrincipal* targetDocPrincipal = doc->GetPrincipal();
+ if (!targetDocPrincipal) {
+ return PR_FALSE;
+ }
+ targetDocPrincipal->GetHasCertificate(&haveCert);
+ if (!haveCert) {
+ return PR_TRUE;
+ }
+
+ PRBool subsumes;
+ rv = principal->Subsumes(targetDocPrincipal, &subsumes);
+ return NS_SUCCEEDED(rv) && subsumes;
}
PR_STATIC_CALLBACK(PRBool)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/xbl/src/nsXBLService.cpp
^
|
@@ -90,6 +90,7 @@
#endif
#include "nsIDOMLoadListener.h"
#include "nsIDOMEventGroup.h"
+#include "nsDocument.h"
// Static IIDs/CIDs. Try to minimize these.
static NS_DEFINE_CID(kXMLDocumentCID, NS_XMLDOCUMENT_CID);
@@ -371,6 +372,10 @@
NS_WARNING("XBL load did not complete until after document went away! Modal dialog bug?\n");
}
else {
+ // Clear script handling object on asynchronously loaded XBL documents.
+ NS_STATIC_CAST(nsDocument*, NS_STATIC_CAST(nsIDocument*, doc.get()))->
+ ClearScriptHandlingObject();
+
// We have to do a flush prior to notification of the document load.
// This has to happen since the HTML content sink can be holding on
// to notifications related to our children (e.g., if you bind to the
@@ -1225,6 +1230,11 @@
}
NS_ENSURE_SUCCESS(rv, rv);
+ nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc);
+ // Clear script handling object on synchronously loaded XBL documents.
+ NS_STATIC_CAST(nsDocument*, NS_STATIC_CAST(nsIDocument*, doc.get()))->
+ ClearScriptHandlingObject();
+
return CallQueryInterface(domDoc, aResult);
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/xml/document/src/nsXMLDocument.cpp
^
|
@@ -294,37 +294,16 @@
{
NS_PRECONDITION(aNewChannel, "Redirecting to null channel?");
- nsCOMPtr<nsIURI> newLocation;
- nsresult rv = aNewChannel->GetURI(getter_AddRefs(newLocation)); // The redirected URI
- if (NS_FAILED(rv))
- return rv;
-
- nsIScriptSecurityManager *secMan = nsContentUtils::GetSecurityManager();
-
- if (mScriptContext && !mCrossSiteAccessEnabled) {
- nsCOMPtr<nsIJSContextStack> stack(do_GetService("@mozilla.org/js/xpc/ContextStack;1", & rv));
- if (NS_FAILED(rv))
- return rv;
-
- JSContext *cx = (JSContext *)mScriptContext->GetNativeContext();
- if (!cx)
- return NS_ERROR_UNEXPECTED;
-
- stack->Push(cx);
-
- rv = secMan->CheckSameOrigin(nsnull, newLocation);
+ nsCOMPtr<nsIURI> oldURI;
+ nsresult rv = aOldChannel->GetURI(getter_AddRefs(oldURI));
+ NS_ENSURE_SUCCESS(rv, rv);
- stack->Pop(&cx);
-
- if (NS_FAILED(rv)) {
- // The security manager set a pending exception. Since we're
- // running under the event loop, we need to report it.
- ::JS_ReportPendingException(cx);
- return rv;
- }
- }
+ nsCOMPtr<nsIURI> newURI;
+ rv = aNewChannel->GetURI(getter_AddRefs(newURI));
+ NS_ENSURE_SUCCESS(rv, rv);
- return secMan->GetCodebasePrincipal(newLocation, getter_AddRefs(mPrincipal));
+ return nsContentUtils::GetSecurityManager()->
+ CheckSameOriginURI(oldURI, newURI);
}
NS_IMETHODIMP
@@ -467,17 +446,6 @@
mScriptContext = callingContext;
- // Find out if UniversalBrowserRead privileges are enabled - we will
- // need this in case of a redirect
- PRBool crossSiteAccessEnabled;
- rv = secMan->IsCapabilityEnabled("UniversalBrowserRead",
- &crossSiteAccessEnabled);
- if (NS_FAILED(rv)) {
- return rv;
- }
-
- mCrossSiteAccessEnabled = crossSiteAccessEnabled;
-
// Create a channel
// When we are called from JS we can find the load group for the page,
// and add ourselves to it. This way any pending requests
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/content/xml/document/src/nsXMLDocument.h
^
|
@@ -111,7 +111,6 @@
// mChannel is also cancelled. Note that if this member is true, mChannel
// cannot be null.
PRPackedBool mChannelIsPending;
- PRPackedBool mCrossSiteAccessEnabled;
PRPackedBool mLoadedAsData;
PRPackedBool mLoadedAsInteractiveData;
PRPackedBool mAsync;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/dom/src/base/nsGlobalWindow.cpp
^
|
@@ -150,7 +150,7 @@
#include "nsIScriptError.h"
#include "plbase64.h"
#include "nsIObserverService.h"
-
+#include "nsIDragService.h"
#include "nsIPrintSettings.h"
#include "nsIPrintSettingsService.h"
@@ -186,6 +186,8 @@
static PRInt32 gOpenPopupSpamCount = 0;
static PopupControlState gPopupControlState = openAbused;
static PRInt32 gRunningTimeoutDepth = 0;
+static PRBool gMouseDown = PR_FALSE;
+static PRBool gDragServiceDisabled = PR_FALSE;
#ifdef DEBUG_jst
PRInt32 gTimeoutCnt = 0;
@@ -1665,6 +1667,23 @@
}
}
+ if (NS_IS_TRUSTED_EVENT(aEvent)) {
+ if (aEvent->message == NS_MOUSE_LEFT_BUTTON_DOWN) {
+ gMouseDown = PR_TRUE;
+ } else if (aEvent->message == NS_MOUSE_LEFT_BUTTON_UP) {
+ gMouseDown = PR_FALSE;
+ if (gDragServiceDisabled) {
+ nsCOMPtr<nsIDragService_1_8_BRANCH> ds18 =
+ do_GetService("@mozilla.org/widget/dragservice;1");
+ NS_WARN_IF_FALSE(ds18, "No drag service?");
+ if (ds18) {
+ gDragServiceDisabled = PR_FALSE;
+ ds18->Unsuppress();
+ }
+ }
+ }
+ }
+
// if the window is deactivated while in full screen mode,
// restore OS chrome, and hide it again upon re-activation
if (outer && outer->mFullScreen && (NS_EVENT_FLAG_BUBBLE & aFlags)) {
@@ -2528,6 +2547,20 @@
return result;
}
+
+void
+MaybeSuppressDrag() {
+ if (gMouseDown && !gDragServiceDisabled) {
+ nsCOMPtr<nsIDragService_1_8_BRANCH> ds18 =
+ do_GetService("@mozilla.org/widget/dragservice;1");
+ NS_WARN_IF_FALSE(ds18, "No drag service?");
+ if (ds18) {
+ gDragServiceDisabled = PR_TRUE;
+ ds18->Suppress();
+ }
+ }
+}
+
NS_IMETHODIMP
nsGlobalWindow::GetInnerWidth(PRInt32* aInnerWidth)
{
@@ -2557,6 +2590,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIDocShellTreeItem> docShellAsItem(do_QueryInterface(mDocShell));
NS_ENSURE_TRUE(docShellAsItem, NS_ERROR_FAILURE);
@@ -2605,6 +2639,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIDocShellTreeItem> docShellAsItem(do_QueryInterface(mDocShell));
NS_ENSURE_TRUE(docShellAsItem, NS_ERROR_FAILURE);
@@ -2659,6 +2694,7 @@
if (!CanSetProperty("dom.disable_window_move_resize")) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -2711,6 +2747,7 @@
if (!CanSetProperty("dom.disable_window_move_resize")) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -2758,6 +2795,7 @@
if (!CanSetProperty("dom.disable_window_move_resize")) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -2806,6 +2844,7 @@
if (!CanSetProperty("dom.disable_window_move_resize")) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -3853,6 +3892,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -3880,6 +3920,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -3911,6 +3952,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -3938,6 +3980,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
@@ -3974,6 +4017,7 @@
if (!CanSetProperty("dom.disable_window_move_resize") || IsFrame()) {
return NS_OK;
}
+ MaybeSuppressDrag();
// The content viewer does a check to make sure that it's a content
// viewer for a toplevel docshell.
@@ -6526,20 +6570,10 @@
}
nsCOMPtr<nsIPrincipal> ourPrincipal = GetPrincipal();
- JSPrincipals *jsprins;
- rv = ourPrincipal->GetJSPrincipals(cx, &jsprins);
- if (NS_FAILED(rv)) {
- timeout->Release(scx);
-
- return rv;
- }
-
- // We know that ourPrincipal holds a strong ref to jsprins.
- JSPRINCIPALS_DROP(cx, jsprins);
const char *filename;
if (nsJSUtils::GetCallingLocation(cx, &filename, &timeout->mLineNo,
- jsprins)) {
+ ourPrincipal)) {
timeout->mFileName = PL_strdup(filename);
if (!timeout->mFileName) {
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/dom/src/base/nsJSUtils.cpp
^
|
@@ -64,7 +64,7 @@
JSBool
nsJSUtils::GetCallingLocation(JSContext* aContext, const char* *aFilename,
- PRUint32* aLineno, JSPrincipals* aPrincipals)
+ PRUint32* aLineno, nsIPrincipal* aPrincipal)
{
// Get the current filename and line number
JSStackFrame* frame = nsnull;
@@ -80,32 +80,26 @@
if (script) {
// If aPrincipals is non-null then our caller is asking us to ensure
// that the filename we return does not have elevated privileges.
- if (aPrincipals) {
- // The principals might not be in the script, but we can always
- // find the right principals in the frame's callee.
- JSPrincipals* scriptPrins = JS_GetScriptPrincipals(aContext, script);
- if (!scriptPrins) {
- JSObject *callee = JS_GetFrameCalleeObject(aContext, frame);
- nsCOMPtr<nsIPrincipal> prin;
+ if (aPrincipal) {
+ uint32 flags = JS_GetScriptFilenameFlags(script);
+
+ // Use the principal for the filename if it shouldn't be receiving
+ // implicit XPCNativeWrappers.
+ if (flags & JSFILENAME_SYSTEM) {
nsIScriptSecurityManager *ssm = nsContentUtils::GetSecurityManager();
- if (NS_FAILED(ssm->GetObjectPrincipal(aContext, callee,
- getter_AddRefs(prin))) ||
- !prin) {
- return JS_FALSE;
- }
- prin->GetJSPrincipals(aContext, &scriptPrins);
+ nsCOMPtr<nsIPrincipal> sysPrin;
+ ssm->GetSystemPrincipal(getter_AddRefs(sysPrin));
- // The script has a reference to the principals.
- JSPRINCIPALS_DROP(aContext, scriptPrins);
- }
-
- // Return the weaker of the two principals if they differ.
- if (scriptPrins != aPrincipals &&
- scriptPrins->subsume(scriptPrins, aPrincipals)) {
- *aFilename = aPrincipals->codebase;
- *aLineno = 0;
- return JS_TRUE;
+ if (aPrincipal != sysPrin) {
+ JSPrincipals* jsprins;
+ aPrincipal->GetJSPrincipals(aContext, &jsprins);
+
+ *aFilename = jsprins->codebase;
+ *aLineno = 0;
+ JSPRINCIPALS_DROP(aContext, jsprins);
+ return JS_TRUE;
+ }
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/dom/src/base/nsJSUtils.h
^
|
@@ -55,12 +55,13 @@
class nsIScriptGlobalObject;
class nsIDOMGCParticipant;
class nsIXPConnectJSObjectHolder;
+class nsIPrincipal;
class nsJSUtils
{
public:
static JSBool GetCallingLocation(JSContext* aContext, const char* *aFilename,
- PRUint32* aLineno, JSPrincipals* aPrincipals);
+ PRUint32* aLineno, nsIPrincipal* aPrincipal);
static jsval ConvertStringToJSVal(const nsString& aProp,
JSContext* aContext);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/schema-validation/src/nsSchemaValidator.cpp
^
|
@@ -2408,7 +2408,8 @@
sprintf(fulldate, "22-AUG-1993 %d:%d:%d.%u", time.hour, time.minute,
time.second, time.milisecond);
- PR_ParseTimeString(fulldate, PR_TRUE, aResult);
+ PRBool isGMT = nsSchemaValidatorUtils::IsGMT(aValue);
+ PR_ParseTimeString(fulldate, isGMT ? PR_TRUE : PR_FALSE, aResult);
} else {
*aResult = nsnull;
rv = NS_ERROR_ILLEGAL_VALUE;
@@ -2528,7 +2529,8 @@
sprintf(fulldate, "%d-%s-%u 00:00:00", date.day,
monthShorthand.get(), date.year);
- PR_ParseTimeString(fulldate, PR_TRUE, aResult);
+ PRBool isGMT = nsSchemaValidatorUtils::IsGMT(aValue);
+ PR_ParseTimeString(fulldate, isGMT ? PR_TRUE : PR_FALSE, aResult);
} else {
*aResult = nsnull;
rv = NS_ERROR_ILLEGAL_VALUE;
@@ -2615,7 +2617,8 @@
dateTime.time.second,
dateTime.time.milisecond);
- PR_ParseTimeString(fulldate, PR_TRUE, aResult);
+ PRBool isGMT = nsSchemaValidatorUtils::IsGMT(aValue);
+ PR_ParseTimeString(fulldate, isGMT ? PR_TRUE : PR_FALSE, aResult);
} else {
*aResult = nsnull;
rv = NS_ERROR_ILLEGAL_VALUE;
@@ -2649,15 +2652,13 @@
/*
http://www.w3.org/TR/xmlschema-2/#date
- (-)CCYY-MM-DDT
- then either: Z
- or [+/-]hh:mm
+ (-)CCYY-MM-DD
+ then optionally either:
+ Z
+ or [+/-]hh:mm
*/
- // append 'T' to end to make ParseSchemaDate happy.
- dateString.Append('T');
-
- isValid = nsSchemaValidatorUtils::ParseSchemaDate(dateString, aResult);
+ isValid = nsSchemaValidatorUtils::ParseSchemaDate(dateString, PR_TRUE, aResult);
return isValid;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/schema-validation/src/nsSchemaValidatorUtils.cpp
^
|
@@ -170,9 +170,11 @@
// if no T, invalid
if (findString >= 0) {
- isValid = ParseSchemaDate(Substring(aNodeValue, 0, findString+1), &aResult->date);
+ // we get the date part (from 0 to before 'T')
+ isValid = ParseSchemaDate(Substring(aNodeValue, 0, findString), PR_FALSE, &aResult->date);
if (isValid) {
+ // we get the time part (from after the 'T' till the end)
isValid = ParseSchemaTime(
Substring(aNodeValue, findString + 1, aNodeValue.Length()),
&aResult->time);
@@ -184,13 +186,16 @@
PRBool
nsSchemaValidatorUtils::ParseSchemaDate(const nsAString & aStrValue,
+ PRBool aAllowTimeZone,
nsSchemaDate *aDate)
{
PRBool isValid = PR_FALSE;
/*
http://www.w3.org/TR/xmlschema-2/#date
- (-)CCYY-MM-DDT
+ (-)CCYY-MM-DD
+ then optionally: Z
+ or [+/-]hh:mm
*/
nsAString::const_iterator start, end, buffStart;
@@ -205,6 +210,8 @@
nsAutoString year;
char month[3] = "";
char day[3] = "";
+ char timezoneHour[3] = "";
+ char timezoneMinute[3] = "";
// if year is negative, skip it
if (aStrValue.First() == '-') {
@@ -262,10 +269,24 @@
// day
if (buffLength > 2) {
done = PR_TRUE;
- } else if (currentChar == 'T') {
- if ((start == end) && (buffLength == 2) && (strcmp(day, "31") < 1))
+ } else if (currentChar == 'Z') {
+ if (aAllowTimeZone) {
+ if ((start == end) && (buffLength == 2) && (strcmp(day, "31") < 1)) {
isValid = PR_TRUE;
+ }
+ }
+
done = PR_TRUE;
+ } else if ((currentChar == '+') || (currentChar == '-')) {
+ // timezone
+ if (aAllowTimeZone) {
+ state = 3;
+ buffLength = 0;
+ buffStart = start;
+ } else {
+ // no timezones allowed
+ done = PR_TRUE;
+ }
} else {
// has to be a numerical character or else abort
if ((currentChar > '9') || (currentChar < '0'))
@@ -274,10 +295,26 @@
day[buffLength] = currentChar;
}
buffLength++;
+
+ // are we at the end?
+ if (start == end && buffLength == 2) {
+ isValid = PR_TRUE;
+ done = PR_TRUE;
+ }
}
break;
}
+ case 3: {
+ // timezone hh:mm
+ if (end.get()-buffStart.get() == 5) {
+ isValid = ParseSchemaTimeZone(Substring(buffStart, end), timezoneHour,
+ timezoneMinute);
+ }
+
+ done = PR_TRUE;
+ break;
+ }
}
}
@@ -1958,3 +1995,14 @@
}
}
+PRBool
+nsSchemaValidatorUtils::IsGMT(const nsAString & aDateTime)
+{
+ if (!aDateTime.IsEmpty()) {
+ if (aDateTime.Last() == 'Z') {
+ return PR_TRUE;
+ }
+ }
+
+ return PR_FALSE;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/schema-validation/src/nsSchemaValidatorUtils.h
^
|
@@ -182,7 +182,9 @@
static PRBool ParseDateTime(const nsAString & aNodeValue,
nsSchemaDateTime *aResult);
- static PRBool ParseSchemaDate(const nsAString & aStrValue, nsSchemaDate *aDate);
+ static PRBool ParseSchemaDate(const nsAString & aStrValue,
+ PRBool aAllowTimeZone,
+ nsSchemaDate *aDate);
static PRBool ParseSchemaTime(const nsAString & aStrValue, nsSchemaTime *aTime);
static PRBool ParseSchemaTimeZone(const nsAString & aStrValue,
@@ -239,6 +241,14 @@
nsSchemaDerivedSimpleType *aDerivedSrc);
static void SetToNullOrElement(nsIDOMNode *aNode, nsIDOMNode **aResultNode);
+
+ /**
+ * Determine if an xsd:date, xsd:dateTime, or xsd:time string
+ * represents a GMT (aka UTC) time. This function assumes the
+ * aDateTime string has already been validated.
+ */
+ static PRBool IsGMT(const nsAString & aDateTime);
+
private:
nsSchemaValidatorUtils();
~nsSchemaValidatorUtils();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/schema-validation/tests/schema.html
^
|
@@ -468,6 +468,8 @@
validate("-2004-02-28T12:21:03.434Z", "datetime-test-1", true);
validate("-2004-02-28T12:21:03-04:00", "datetime-test-1", true);
validate("-2004-02-30T12:21:03Z", "datetime-test-1", false);
+ validate("2004-02-28ZT24:21:03Z", "datetime-test-1", false);
+ validate("2004-02-28+06:00T24:21:03Z", "datetime-test-1", false);
validate("2004-02-11T12:21:03Z", "datetime-test-2", true);
validate("2004-02-18T00:00:00Z", "datetime-test-2", true);
@@ -539,6 +541,15 @@
// leap year test
validate("2000-02-29", "date-test-1", true);
validate("2001-02-29", "date-test-1", false);
+ // timezone test
+ validate("2001-01-18Z", "date-test-1", true);
+ validate("2001-01-18A", "date-test-1", false);
+ validate("2001-01-18Z2", "date-test-1", false);
+ validate("2007-01-01-06:00", "date-test-1", true);
+ validate("2007-01-01+06:00", "date-test-1", true);
+ validate("2007-01-01A06:00", "date-test-1", false);
+ validate("2007-01-01-06:00Z", "date-test-1", false);
+ validate("2007-01-01Z-06:00", "date-test-1", false);
validate("2004-02-17", "date-test-2", true);
validate("2004-02-18", "date-test-2", false);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/spellcheck/osxspell/src/mozOSXSpell.mm
^
|
@@ -96,8 +96,16 @@
NS_ENSURE_ARG_POINTER(aLanguage);
if (!mLanguage.Length()) {
- NSString* lang = [[NSSpellChecker sharedSpellChecker] language];
- *aLanguage = [lang createNewUnicodeBuffer];
+ @try {
+ NSString* lang = [[NSSpellChecker sharedSpellChecker] language];
+ *aLanguage = [lang createNewUnicodeBuffer];
+ }
+ @catch (id exception) {
+ // If we get here, the spelling system on the user's machine is almost
+ // certainly damaged; do what the rest of the OS does, and silently
+ // ignore it.
+ *aLanguage = NULL;
+ }
mLanguage.Assign(*aLanguage);
}
else
@@ -207,7 +215,17 @@
*aResult = PR_FALSE;
NSString* wordStr = [NSString stringWithPRUnichars:aWord];
- NSRange misspelledRange = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:wordStr startingAt:0];
+ NSRange misspelledRange;
+ @try {
+ misspelledRange = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:wordStr startingAt:0];
+ }
+ @catch (id exception) {
+ // Silently return true; if something is seriously wrong with the
+ // spelling system on a user's machine, the best thing to do is
+ // to just treat everything as correct.
+ *aResult = PR_TRUE;
+ return NS_OK;
+ }
if (misspelledRange.location != NSNotFound && mPersonalDictionary)
mPersonalDictionary->Check(aWord, mLanguage.get(), aResult);
else
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xpath/XFormsFunctionCall.cpp
^
|
@@ -678,6 +678,161 @@
return aContext->recycler()->getNumberResult(result, aResult);
}
+ case CONTEXT:
+ {
+ if (!requireParams(0, 0, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ nsRefPtr<txNodeSet> resultSet;
+ rv = aContext->recycler()->getNodeSet(getter_AddRefs(resultSet));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIXFormsUtilityService> xformsService =
+ do_GetService("@mozilla.org/xforms-utility-service;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // mNode will be the node that contained the context() function.
+ nsCOMPtr<nsIDOMNode> contextNode;
+ rv = xformsService->Context(mNode, getter_AddRefs(contextNode));
+
+ if (contextNode) {
+ nsAutoPtr<txXPathNode> txNode(txXPathNativeNode::createXPathNode(contextNode));
+ if (txNode) {
+ resultSet->add(*txNode);
+ }
+ }
+
+ *aResult = resultSet;
+ NS_ADDREF(*aResult);
+
+ return NS_OK;
+ }
+ case DAYSTODATE:
+ {
+ if (!requireParams(1, 1, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ double days = evaluateToNumber((Expr*)iter.next(), aContext);
+
+ nsAutoString date;
+ if (!Double::isNaN(days)) {
+ // Round total number of days to the nearest whole number.
+ PRTime t_days;
+ LL_I2L(t_days, floor(days+0.5));
+
+ PRTime t_secs, t_secs_per_day, t_usec, usec_per_sec;
+ // Calculate total number of seconds in aDays.
+ LL_I2L(t_secs_per_day, 86400UL);
+ LL_MUL(t_secs, t_days, t_secs_per_day);
+ // Convert total seconds to usecs.
+ LL_I2L(usec_per_sec, PR_USEC_PER_SEC);
+ LL_MUL(t_usec, t_secs, usec_per_sec);
+
+ // Convert the time to xsd:date format.
+ PRExplodedTime et;
+ PR_ExplodeTime(t_usec, PR_GMTParameters, &et);
+ char ctime[60];
+ PR_FormatTime(ctime, sizeof(ctime), "%Y-%m-%d", &et);
+ date.AppendASCII(ctime);
+ }
+
+ return aContext->recycler()->getStringResult(date, aResult);
+
+ return NS_OK;
+ }
+ case SECONDSTODATETIME:
+ {
+ if (!requireParams(1, 1, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ double seconds = evaluateToNumber((Expr*)iter.next(), aContext);
+
+ nsAutoString dateTime;
+ if (!Double::isNaN(seconds)) {
+ // Round total number of seconds to the nearest whole number.
+ PRTime t_secs;
+ LL_I2L(t_secs, floor(seconds+0.5));
+
+ // Convert total seconds to usecs.
+ PRTime t_usec, usec_per_sec;
+ LL_I2L(usec_per_sec, PR_USEC_PER_SEC);
+ LL_MUL(t_usec, t_secs, usec_per_sec);
+
+ // Convert the time to xsd:dateTime format.
+ PRExplodedTime et;
+ PR_ExplodeTime(t_usec, PR_GMTParameters, &et);
+ char ctime[60];
+ PR_FormatTime(ctime, sizeof(ctime), "%Y-%m-%dT%H:%M:%SZ", &et);
+ dateTime.AppendASCII(ctime);
+ }
+
+ return aContext->recycler()->getStringResult(dateTime, aResult);
+ }
+ case ISCARDNUMBER:
+ {
+ if (!requireParams(1, 1, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ nsAutoString number;
+ evaluateToString((Expr*)iter.next(), aContext, number);
+
+ nsCOMPtr<nsIXFormsUtilityService>xformsService =
+ do_GetService("@mozilla.org/xforms-utility-service;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ PRBool result;
+ rv = xformsService->IsCardNumber(number, &result);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ aContext->recycler()->getBoolResult(result, aResult);
+
+ return NS_OK;
+ }
+ case DIGEST:
+ {
+ nsresult rv;
+ if (!requireParams(2, 3, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ nsAutoString data, algorithm, encoding;
+ evaluateToString((Expr*)iter.next(), aContext, data);
+ evaluateToString((Expr*)iter.next(), aContext, algorithm);
+ evaluateToString((Expr*)iter.next(), aContext, encoding);
+
+ nsCOMPtr<nsIXFormsUtilityService>xformsService =
+ do_GetService("@mozilla.org/xforms-utility-service;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // mNode is the node that contained the Event XPath expression.
+ nsAutoString result;
+ rv = xformsService->Digest(data, algorithm, encoding, mNode, result);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+
+ return aContext->recycler()->getStringResult(result, aResult);
+ }
+ case ADJUSTDATETIMETOTIMEZONE:
+ {
+ nsresult rv;
+ if (!requireParams(1, 1, aContext))
+ return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
+
+ nsAutoString dateTime;
+ evaluateToString((Expr*)iter.next(), aContext, dateTime);
+
+ nsCOMPtr<nsIXFormsUtilityService>xformsService =
+ do_GetService("@mozilla.org/xforms-utility-service;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoString result;
+ rv = xformsService->AdjustDateTimeToTimezone(dateTime, result);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+
+ return aContext->recycler()->getStringResult(result, aResult);
+ }
} /* switch() */
aContext->receiveError(NS_LITERAL_STRING("Internal error"),
@@ -795,6 +950,36 @@
*aAtom = txXPathAtoms::compare;
break;
}
+ case CONTEXT:
+ {
+ *aAtom = txXPathAtoms::context;
+ break;
+ }
+ case DAYSTODATE:
+ {
+ *aAtom = txXPathAtoms::daysToDate;
+ break;
+ }
+ case SECONDSTODATETIME:
+ {
+ *aAtom = txXPathAtoms::secondsToDateTime;
+ break;
+ }
+ case ISCARDNUMBER:
+ {
+ *aAtom = txXPathAtoms::isCardNumber;
+ break;
+ }
+ case DIGEST:
+ {
+ *aAtom = txXPathAtoms::digest;
+ break;
+ }
+ case ADJUSTDATETIMETOTIMEZONE:
+ {
+ *aAtom = txXPathAtoms::adjustDateTimeToTimezone;
+ break;
+ }
default:
{
*aAtom = 0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xpath/XFormsFunctions.h
^
|
@@ -53,27 +53,33 @@
public:
enum XFormsFunctions {
- AVG, // avg()
- BOOLEANFROMSTRING, // boolean-from-string()
- COUNTNONEMPTY, // count-non-empty()
- DAYSFROMDATE, // days-from-date()
- IF, // if()
- INDEX, // index()
- INSTANCE, // instance()
- MAX, // max()
- MIN, // min()
- MONTHS, // months()
- NOW, // now()
- LOCALDATETIME, // local-dateTime()
- LOCALDATE, // local-date()
- PROPERTY, // property()
- SECONDS, // seconds()
- SECONDSFROMDATETIME, // seconds-from-dateTime()
- CURRENT, // current()
- EVENT, // event()
- POWER, // power()
- RANDOM, // random()
- COMPARE // compare()
+ AVG, // avg()
+ BOOLEANFROMSTRING, // boolean-from-string()
+ COUNTNONEMPTY, // count-non-empty()
+ DAYSFROMDATE, // days-from-date()
+ IF, // if()
+ INDEX, // index()
+ INSTANCE, // instance()
+ MAX, // max()
+ MIN, // min()
+ MONTHS, // months()
+ NOW, // now()
+ LOCALDATETIME, // local-dateTime()
+ LOCALDATE, // local-date()
+ PROPERTY, // property()
+ SECONDS, // seconds()
+ SECONDSFROMDATETIME, // seconds-from-dateTime()
+ CURRENT, // current()
+ EVENT, // event()
+ POWER, // power()
+ RANDOM, // random()
+ COMPARE, // compare()
+ CONTEXT, // context()
+ DAYSTODATE, // days-to-date()
+ SECONDSTODATETIME, // seconds-to-dateTime()
+ ISCARDNUMBER, // is-card-number()
+ DIGEST, // digest()
+ ADJUSTDATETIMETOTIMEZONE // adjust-dateTime-to-timezone()
};
/*
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xpath/nsIXFormsUtilityService.h
^
|
@@ -53,11 +53,12 @@
class nsIXFormsModelElement; /* forward declaration */
/* starting interface: nsIXFormsUtilityService */
-#define NS_IXFORMSUTILITYSERVICE_IID_STR "2ad098f4-5ee7-4282-a9f7-584eb95e1d69"
+
+#define NS_IXFORMSUTILITYSERVICE_IID_STR "4903f4d8-df4d-454b-b9e7-7c45314af085"
#define NS_IXFORMSUTILITYSERVICE_IID \
- {0x2ad098f4, 0x5ee7, 0x4282, \
- { 0xa9, 0xf7, 0x58, 0x4e, 0xb9, 0x5e, 0x1d, 0x69 }}
+ {0x4903f4d8, 0xdf4d, 0x454b, \
+ { 0xb9, 0xe7, 0x7c, 0x45, 0x31, 0x4a, 0xf0, 0x85 }}
#define NS_XFORMS_UTILITY_CONTRACTID "@mozilla.org/xforms-utility-service;1"
@@ -73,7 +74,11 @@
NS_IMETHOD GetSecondsFromDateTime(const nsAString & aValue, double *aSeconds); \
NS_IMETHOD GetDaysFromDateTime(const nsAString & aValue, PRInt32 *aDays); \
NS_IMETHOD GetEventContextInfo(const nsAString & aContextName, nsIDOMNode *aNode, nsCOMArray<nsIDOMNode> *aResult); \
- NS_IMETHOD GetTime(nsAString & aValue, PRBool aUTC);
+ NS_IMETHOD GetTime(nsAString & aValue, PRBool aUTC); \
+ NS_IMETHOD Context(nsIDOMNode *aResolverNode, nsIDOMNode **aResult); \
+ NS_IMETHOD IsCardNumber(const nsAString & aNumber, PRBool *aResult); \
+ NS_IMETHOD Digest(const nsAString & aData, const nsAString & aAlgorithm, const nsAString & aEncoding, nsIDOMNode *aResolverNode, nsAString & aResult); \
+ NS_IMETHOD AdjustDateTimeToTimezone(const nsAString & aDateTime, nsAString & aResult);
/**
* Private interface implemented by the nsXFormsUtilityService in XForms extension.
@@ -174,6 +179,36 @@
*/
/* void getTime(out DOMString, PRBool aUTC); */
NS_IMETHOD GetTime(nsAString & aValue, PRBool aUTC) = 0;
+
+ /**
+ * Function to retrieve the context node of the node that contained
+ * the XPath context() function.
+ */
+ /* nsIDOMNode context (in nsIDOMNode aResolverNode); */
+ NS_IMETHOD Context(nsIDOMNode *aResolverNode, nsIDOMNode **aResult) = 0;
+
+ /**
+ * Function to determine if a number is a valid card number according to
+ * the Luhn algorithm.
+ */
+ /* PRBool(in DOMString); */
+ NS_IMETHOD IsCardNumber(const nsAString & aNumber, PRBool *aResult) = 0;
+
+ /**
+ * Function that applies the digest algorithm to a string.
+ * DOMString Digest(in DOMString aData, in DOMString aAlgorithm,
+ * in DOMString aEncoding, in nsIDOMNode aResolverNode);
+ */
+ NS_IMETHOD Digest(const nsAString & aData, const nsAString & aAlgorithm,
+ const nsAString & aEncoding, nsIDOMNode *aResolverNode,
+ nsAString & aResult) = 0;
+
+ /**
+ * Function that adjusts an xsd:dateTime to the local timezone of the implementation.
+ */
+ /* DOMString AdjustDateTimeToTimezone(in DOMString aDateTime); */
+ NS_IMETHOD AdjustDateTimeToTimezone(const nsAString & aDateTime,
+ nsAString & aResult) = 0;
};
#define NS_ERROR_XFORMS_CALCUATION_EXCEPTION \
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xpath/nsXFormsXPathEvaluator.cpp
^
|
@@ -270,6 +270,26 @@
else if (aName == txXPathAtoms::compare) {
aFnCall = new XFormsFunctionCall(XFormsFunctionCall::COMPARE);
}
+ else if (aName == txXPathAtoms::context) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::CONTEXT,
+ mResolverNode);
+ }
+ else if (aName == txXPathAtoms::daysToDate) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::DAYSTODATE);
+ }
+ else if (aName == txXPathAtoms::secondsToDateTime) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::SECONDSTODATETIME);
+ }
+ else if (aName == txXPathAtoms::isCardNumber) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::ISCARDNUMBER);
+ }
+ else if (aName == txXPathAtoms::digest) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::DIGEST,
+ mResolverNode);
+ }
+ else if (aName == txXPathAtoms::adjustDateTimeToTimezone) {
+ aFnCall = new XFormsFunctionCall(XFormsFunctionCall::ADJUSTDATETIMETOTIMEZONE);
+ }
else {
// didn't find functioncall here, aFnCall should be null
isOutOfMem = PR_FALSE;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xpath/txXPathAtomList.h
^
|
@@ -114,4 +114,10 @@
TX_ATOM(power, "power")
TX_ATOM(random, "random")
TX_ATOM(compare, "compare")
+TX_ATOM(context, "context")
+TX_ATOM(daysToDate, "days-to-date")
+TX_ATOM(secondsToDateTime, "seconds-to-dateTime")
+TX_ATOM(isCardNumber, "is-card-number")
+TX_ATOM(digest, "digest")
+TX_ATOM(adjustDateTimeToTimezone, "adjust-dateTime-to-timezone")
#endif
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xslt/txMozillaTextOutput.cpp
^
|
@@ -153,6 +153,23 @@
// Create the document
doc = do_CreateInstance(kXMLDocumentCID, &rv);
NS_ASSERTION(NS_SUCCEEDED(rv), "Couldn't create document");
+ nsCOMPtr<nsIDocument_MOZILLA_1_8_BRANCH3> source =
+ do_QueryInterface(aSourceDocument);
+ if (!source) {
+ return;
+ }
+ PRBool hasHadScriptObject = PR_FALSE;
+ nsIScriptGlobalObject* sgo =
+ source->GetScriptHandlingObject(hasHadScriptObject);
+ if (!sgo && hasHadScriptObject) {
+ return;
+ }
+ nsCOMPtr<nsIDocument_MOZILLA_1_8_BRANCH3> doc18 =
+ do_QueryInterface(doc);
+ if (!doc18) {
+ return;
+ }
+ doc18->SetScriptHandlingObject(sgo);
mDocument = do_QueryInterface(doc);
}
else {
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/transformiix/source/xslt/txMozillaXMLOutput.cpp
^
|
@@ -724,6 +724,17 @@
mDocumentIsHTML = PR_FALSE;
}
+ nsCOMPtr<nsIDocument_MOZILLA_1_8_BRANCH3> source =
+ do_QueryInterface(aSourceDocument);
+ NS_ENSURE_STATE(source);
+ PRBool hasHadScriptObject = PR_FALSE;
+ nsIScriptGlobalObject* sgo =
+ source->GetScriptHandlingObject(hasHadScriptObject);
+ NS_ENSURE_STATE(sgo || !hasHadScriptObject);
+ nsCOMPtr<nsIDocument_MOZILLA_1_8_BRANCH3> doc18 =
+ do_QueryInterface(doc);
+ NS_ENSURE_STATE(doc18);
+ doc18->SetScriptHandlingObject(sgo);
mDocument = do_QueryInterface(doc);
}
else {
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/Makefile.in
^
|
@@ -84,6 +84,7 @@
-DBUILD_ID=$(BUILD_ID) \
-DPACKAGE_VERSION=$(PACKAGE_VERSION) \
-DID=${INSTALL_EXTENSION_ID} \
+ -DTARGET_PLATFORM=$(OS_TARGET)_$(TARGET_XPCOM_ABI) \
$(NULL)
# Include these in the XPI
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/install.rdf
^
|
@@ -8,6 +8,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>@ID@</em:id>
<em:version>@PACKAGE_VERSION@</em:version>
+ <em:targetPlatform>@TARGET_PLATFORM@</em:targetPlatform>
<em:targetApplication>
<!-- Firefox -->
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsIModelElementPrivate.idl
^
|
@@ -48,7 +48,7 @@
* Private interface implemented by the model element for other
* elements to use.
*/
-[uuid(e0c08554-0509-45b4-b3e5-b25c6cad8153)]
+[uuid(bbc19255-4341-45fb-a9dc-23f4add8a7c3)]
interface nsIModelElementPrivate : nsIXFormsModelElement
{
/**
@@ -63,9 +63,13 @@
* Notification that an instance element has started or finished loading
* its instance data. Model construction cannot complete until all of
* the instances have loaded their data.
+ *
+ * The 'uri' parameter for instanceLoadFinished is the uri of @src or
+ * @resource on the instance element and is needed to add the uri to
+ * the context info if the link fails.
*/
void instanceLoadStarted();
- void instanceLoadFinished(in boolean success);
+ void instanceLoadFinished(in boolean success, in AString uri);
/**
* Locate the instance element child with the given id.
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsAtoms.cpp
^
|
@@ -67,6 +67,7 @@
nsIAtom* nsXFormsAtoms::externalMessagesProperty;
nsIAtom* nsXFormsAtoms::deferredEventListProperty;
nsIAtom* nsXFormsAtoms::attrBased;
+nsIAtom* nsXFormsAtoms::resource;
const nsStaticAtom nsXFormsAtoms::Atoms_info[] = {
{ "src", &nsXFormsAtoms::src },
@@ -96,7 +97,8 @@
{ "instanceDocumentOwner", &nsXFormsAtoms::instanceDocumentOwner },
{ "ExternalMessagesProperty", &nsXFormsAtoms::externalMessagesProperty },
{ "DeferredEventListProperty",&nsXFormsAtoms::deferredEventListProperty },
- { "attrBased", &nsXFormsAtoms::attrBased }
+ { "attrBased", &nsXFormsAtoms::attrBased },
+ { "resource", &nsXFormsAtoms::resource }
};
void
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsAtoms.h
^
|
@@ -75,6 +75,7 @@
static NS_HIDDEN_(nsIAtom *) externalMessagesProperty;
static NS_HIDDEN_(nsIAtom *) deferredEventListProperty;
static NS_HIDDEN_(nsIAtom *) attrBased;
+ static NS_HIDDEN_(nsIAtom *) resource;
static NS_HIDDEN_(void) InitAtoms();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsDOMEvent.cpp
^
|
@@ -43,7 +43,28 @@
*
*/
-NS_IMPL_ISUPPORTS3(nsXFormsDOMEvent, nsIXFormsDOMEvent, nsIDOMNSEvent, nsIPrivateDOMEvent)
+// Setup the interface map so that an nsIXFormsDOMEvent can be QI'ed to
+// nsIDOMEvent, nsIDOMNSEvent, nsIPrivateDOMEvent, and nsISupports.
+//
+// nsISupports is ambiguous because all of the interfaces inherit from
+// nsISupports. NS_INTERFACE_MAP_ENTRY_AMBIGOUS will cast to the
+// nsISupports of nsXFormsDOMEvent.
+//
+// nsXFormsDOMEvent contains an nsIDOMEvent (mInner) and nsIDOMEvent
+// implements nsIDOMNSEvent and nsIPrivateDOMEvent. The event dispatcher
+// will QI to those interfaces. We use NS_INTERFACE_MAP_END_AGGREGATED to
+// forward QIs for those interfaces to mInner.
+
+NS_INTERFACE_MAP_BEGIN(nsXFormsDOMEvent)
+ NS_INTERFACE_MAP_ENTRY(nsIXFormsDOMEvent)
+ NS_INTERFACE_MAP_ENTRY(nsIDOMEvent)
+ NS_INTERFACE_MAP_ENTRY(nsIDOMNSEvent)
+ NS_INTERFACE_MAP_ENTRY(nsIPrivateDOMEvent)
+ NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIXFormsDOMEvent)
+NS_INTERFACE_MAP_END_AGGREGATED(mInner)
+
+NS_IMPL_ADDREF(nsXFormsDOMEvent)
+NS_IMPL_RELEASE(nsXFormsDOMEvent)
nsXFormsDOMEvent::nsXFormsDOMEvent(nsIDOMEvent *aInner,
nsCOMArray<nsIXFormsContextInfo> *aContextInfo)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsDOMEvent.h
^
|
@@ -36,6 +36,9 @@
*
* ***** END LICENSE BLOCK ***** */
+#ifndef __NSXFORMSDOMEVENT_H__
+#define __NSXFORMSDOMEVENT_H__
+
#include "nsCOMPtr.h"
#include "nsCOMArray.h"
#include "nsInterfaceHashtable.h"
@@ -84,3 +87,5 @@
*/
nsInterfaceHashtable<nsStringHashKey, nsIXFormsContextInfo> mContextInfo;
};
+
+#endif
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsInsertDeleteElement.cpp
^
|
@@ -535,21 +535,20 @@
if ((!nodeset || nodesetSize < 1) ||
(nodeset && nodesetSize > 0 && newNodeType != locationNodeType)) {
Location location = eLocation_Before;
+ nsCOMPtr<nsIDOMNode> targetNode;
if (newNodeType != nsIDOMNode::ATTRIBUTE_NODE) {
// Target location is before the first child of location node. If the
// location node is empty (has no children), it remains the location
// node and the new node will become the first child of the location
// node.
- nsCOMPtr<nsIDOMNode> targetNode;
locationNode->GetFirstChild(getter_AddRefs(targetNode));
- if (targetNode) {
- locationNode.swap(targetNode);
- } else {
+ if (!targetNode) {
// New node will become first child of locationNode.
location = eLocation_FirstChild;
+ targetNode = locationNode;
}
}
- InsertNode(locationNode, newNode, location, getter_AddRefs(resNode));
+ InsertNode(targetNode, newNode, location, getter_AddRefs(resNode));
} else {
// Step 6c - If insert location node is the root element of an
// instance, then that instance root element location is the target
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsInstanceElement.cpp
^
|
@@ -22,6 +22,7 @@
* Contributor(s):
* Brian Ryner <bryner@brianryner.com>
* Olli Pettay <Olli.Pettay@helsinki.fi>
+ * Merle Sterling <msterlin@us.ibm.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
@@ -90,8 +91,23 @@
if (!mInitialized || mLazy)
return NS_OK;
+ // @src has precedence over inline content which has precedence
+ // over @resource.
if (aName == nsXFormsAtoms::src) {
LoadExternalInstance(aNewValue);
+ } else if (aName == nsXFormsAtoms::resource) {
+ // If @resource is set or changed, it only matters if there is
+ // no @src or inline content.
+ nsAutoString src;
+ mElement->GetAttribute(NS_LITERAL_STRING("src"), src);
+ if (src.IsEmpty()) {
+ // Check for inline content.
+ nsCOMPtr<nsIDOMNode> child;
+ GetFirstChildElement(getter_AddRefs(child));
+ if (!child) {
+ LoadExternalInstance(aNewValue);
+ }
+ }
}
return NS_OK;
@@ -103,6 +119,8 @@
if (!mInitialized || mLazy)
return NS_OK;
+ // @src has precdence over inline content which has precedence
+ // over @resource.
if (aName == nsXFormsAtoms::src) {
PRBool restart = PR_FALSE;
if (mChannel) {
@@ -114,19 +132,34 @@
mChannel = nsnull;
mListener = nsnull;
}
- // We no longer have an external instance to use. Reset our instance
- // document to whatever inline content we have.
- nsresult rv = CloneInlineInstance();
+
+ // We no longer have an external (@src) instance to use. Next in precedence
+ // would be inline content so we'll use that if it exists. If there is no
+ // inline content, then we'll look for @resource (the instance may have had
+ // both @src and @resource and no inline content).
+ nsresult rv;
+ nsCOMPtr<nsIDOMNode> child;
+ GetFirstChildElement(getter_AddRefs(child));
+ if (child) {
+ // Reset our instance document to whatever inline content we have.
+ rv = CloneInlineInstance(child);
+ } else {
+ nsAutoString resource;
+ mElement->GetAttribute(NS_LITERAL_STRING("resource"), resource);
+ if (!resource.IsEmpty()) {
+ LoadExternalInstance(resource);
+ }
+ }
// if we had already started to load an external instance document, then
// as part of that we would have told the model to wait for that external
// document to load before it finishes the model construction. Since we
// aren't loading from an external document any longer, tell the model that
- // there is need to wait for us anymore.
+ // there is no need to wait for us anymore.
if (restart) {
nsCOMPtr<nsIModelElementPrivate> model = GetModel();
if (model) {
- model->InstanceLoadFinished(PR_TRUE);
+ model->InstanceLoadFinished(PR_TRUE, EmptyString());
}
}
return rv;
@@ -260,19 +293,21 @@
SetInstanceDocument(nsnull);
}
}
- }
- // Replace the principal for the loaded document
- nsCOMPtr<nsIDocument> iDoc(do_QueryInterface(mDocument));
- nsresult rv = ReplacePrincipal(iDoc);
- if (NS_FAILED(rv)) {
- SetInstanceDocument(nsnull);
- return rv;
+ // Replace the principal for the loaded document
+ nsCOMPtr<nsIDocument> iDoc(do_QueryInterface(mDocument));
+ nsresult rv = ReplacePrincipal(iDoc);
+ if (NS_FAILED(rv)) {
+ SetInstanceDocument(nsnull);
+ return rv;
+ }
}
nsCOMPtr<nsIModelElementPrivate> model = GetModel();
if (model) {
- model->InstanceLoadFinished(succeeded);
+ nsCAutoString uri;
+ request->GetName(uri);
+ model->InstanceLoadFinished(succeeded, NS_ConvertASCIItoUTF16(uri));
}
mListener = nsnull;
@@ -458,7 +493,9 @@
}
// If we don't have a linked external instance, use our inline data.
- nsresult rv = CloneInlineInstance();
+ nsCOMPtr<nsIDOMNode> child;
+ GetFirstChildElement(getter_AddRefs(child));
+ nsresult rv = CloneInlineInstance(child);
if (NS_FAILED(rv))
return rv;
return BackupOriginalDocument();
@@ -475,48 +512,69 @@
}
// Normal instance
- nsAutoString src;
+ // If the src attribute is given, then it takes precedence over inline
+ // content and the resource attribute, and the XML data for the instance
+ // is obtained from the link. If the src attribute is omitted, then the
+ // data for the instance is obtained from inline content if it is given
+ // or the resource attribute otherwise. If both the resource attribute
+ // and inline content are provided, the inline content takes precedence.
+ nsresult rv = NS_OK;
+ nsAutoString src, resource;
mElement->GetAttribute(NS_LITERAL_STRING("src"), src);
- if (src.IsEmpty()) {
- return CloneInlineInstance();
+ if (!src.IsEmpty()) {
+ LoadExternalInstance(src);
+ } else {
+ // If we have a first child element then we have inline content.
+ nsCOMPtr<nsIDOMNode> child;
+ GetFirstChildElement(getter_AddRefs(child));
+ if (child) {
+ rv = CloneInlineInstance(child);
+ } else {
+ // No @src or inline content, better have @resource
+ mElement->GetAttribute(NS_LITERAL_STRING("resource"), resource);
+ LoadExternalInstance(resource);
+ }
}
- LoadExternalInstance(src);
- return NS_OK;
+ return rv;
}
// private methods
nsresult
-nsXFormsInstanceElement::CloneInlineInstance()
+nsXFormsInstanceElement::CloneInlineInstance(nsIDOMNode *aChild)
{
// Clear out our existing instance data
nsresult rv = CreateInstanceDocument(EmptyString());
if (NS_FAILED(rv))
return rv; // don't warn, we might just not be in the document yet
- // look for our first child element (skip over text nodes, etc.)
- nsCOMPtr<nsIDOMNode> child, temp;
- mElement->GetFirstChild(getter_AddRefs(child));
- while (child) {
- PRUint16 nodeType;
- child->GetNodeType(&nodeType);
-
- if (nodeType == nsIDOMNode::ELEMENT_NODE)
- break;
- temp.swap(child);
- temp->GetNextSibling(getter_AddRefs(child));
- }
-
- // There needs to be a child element, or it is not a valid XML document
- if (!child) {
+ // aChild must be the first child element under xf:instance or it is not
+ // a valid XML document.
+ if (!aChild) {
nsXFormsUtils::ReportError(NS_LITERAL_STRING("inlineInstanceNoChildError"),
mElement);
+
nsCOMPtr<nsIModelElementPrivate> model(GetModel());
nsCOMPtr<nsIDOMNode> modelNode(do_QueryInterface(model));
- nsXFormsUtils::DispatchEvent(modelNode, eEvent_LinkException);
+ // Context Info: 'resource-uri'
+ // ID of the failed instance preceded by the # fragment identifier.
+ nsAutoString idStr;
+ mElement->GetAttribute(NS_LITERAL_STRING("id"), idStr);
+ if (!idStr.IsEmpty()) {
+ nsAutoString resourceURI;
+ resourceURI.AssignLiteral("#");
+ resourceURI.Append(idStr);
+ nsCOMPtr<nsXFormsContextInfo> contextInfo =
+ new nsXFormsContextInfo(mElement);
+ NS_ENSURE_TRUE(contextInfo, NS_ERROR_OUT_OF_MEMORY);
+ contextInfo->SetStringValue("resource-uri", resourceURI);
+ mContextInfo.AppendObject(contextInfo);
+ }
+ nsXFormsUtils::DispatchEvent(modelNode, eEvent_LinkException, nsnull,
+ mElement, &mContextInfo);
nsXFormsUtils::HandleFatalError(mElement,
NS_LITERAL_STRING("XFormsLinkException"));
return NS_ERROR_FAILURE;
@@ -524,8 +582,8 @@
// Check for siblings to first child element node. This is an error, since
// the inline content is then not a well-formed XML document.
- nsCOMPtr<nsIDOMNode> sibling;
- child->GetNextSibling(getter_AddRefs(sibling));
+ nsCOMPtr<nsIDOMNode> sibling, temp;
+ aChild->GetNextSibling(getter_AddRefs(sibling));
while (sibling) {
PRUint16 nodeType;
sibling->GetNodeType(&nodeType);
@@ -533,9 +591,25 @@
if (nodeType == nsIDOMNode::ELEMENT_NODE) {
nsXFormsUtils::ReportError(NS_LITERAL_STRING("inlineInstanceMultipleElementsError"),
mElement);
+
nsCOMPtr<nsIModelElementPrivate> model(GetModel());
nsCOMPtr<nsIDOMNode> modelNode(do_QueryInterface(model));
- nsXFormsUtils::DispatchEvent(modelNode, eEvent_LinkException);
+ // Context Info: 'resource-uri'
+ // ID of the failed instance preceded by the # fragment identifier.
+ nsAutoString idStr;
+ mElement->GetAttribute(NS_LITERAL_STRING("id"), idStr);
+ if (!idStr.IsEmpty()) {
+ nsAutoString resourceURI;
+ resourceURI.AssignLiteral("#");
+ resourceURI.Append(idStr);
+ nsCOMPtr<nsXFormsContextInfo> contextInfo =
+ new nsXFormsContextInfo(mElement);
+ NS_ENSURE_TRUE(contextInfo, NS_ERROR_OUT_OF_MEMORY);
+ contextInfo->SetStringValue("resource-uri", resourceURI);
+ mContextInfo.AppendObject(contextInfo);
+ }
+ nsXFormsUtils::DispatchEvent(modelNode, eEvent_LinkException, nsnull,
+ mElement, &mContextInfo);
nsXFormsUtils::HandleFatalError(mElement,
NS_LITERAL_STRING("XFormsLinkException"));
return NS_ERROR_FAILURE;
@@ -547,7 +621,7 @@
// Clone and insert content into new document
nsCOMPtr<nsIDOMNode> newNode;
- rv = mDocument->ImportNode(child, PR_TRUE, getter_AddRefs(newNode));
+ rv = mDocument->ImportNode(aChild, PR_TRUE, getter_AddRefs(newNode));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIDOMNode> nodeReturn;
@@ -565,9 +639,9 @@
PRBool restart = PR_FALSE;
if (mChannel) {
// probably hit this condition because someone changed the value of our
- // src attribute while we are already trying to load the previously
- // specified document. We'll stop the current load effort and kick off the
- // new attempt.
+ // src or resource attribute while we are already trying to load the
+ // previously specified document. We'll stop the current load effort and
+ // kick off the new attempt.
restart = PR_TRUE;
mChannel->Cancel(NS_BINDING_ABORTED);
mChannel = nsnull;
@@ -636,7 +710,9 @@
model->InstanceLoadStarted();
}
if (NS_FAILED(rv)) {
- model->InstanceLoadFinished(PR_FALSE);
+ // Context Info: 'resource-uri'
+ // The resource URI of the link that failed.
+ model->InstanceLoadFinished(PR_FALSE, aSrc);
}
}
}
@@ -691,6 +767,28 @@
}
nsresult
+nsXFormsInstanceElement::GetFirstChildElement(nsIDOMNode **aChild)
+{
+ // look for our first child element (skip over text nodes, etc.)
+ nsCOMPtr<nsIDOMNode> child, temp;
+ mElement->GetFirstChild(getter_AddRefs(child));
+ while (child) {
+ PRUint16 nodeType;
+ child->GetNodeType(&nodeType);
+
+ if (nodeType == nsIDOMNode::ELEMENT_NODE)
+ break;
+
+ temp.swap(child);
+ temp->GetNextSibling(getter_AddRefs(child));
+ }
+
+ NS_IF_ADDREF(*aChild = child);
+
+ return NS_OK;
+}
+
+nsresult
NS_NewXFormsInstanceElement(nsIXTFElement **aResult)
{
*aResult = new nsXFormsInstanceElement();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsInstanceElement.h
^
|
@@ -41,6 +41,7 @@
#include "nsXFormsStubElement.h"
#include "nsIDOMDocument.h"
+#include "nsCOMArray.h"
#include "nsCOMPtr.h"
#include "nsIModelElementPrivate.h"
#include "nsIInstanceElementPrivate.h"
@@ -48,6 +49,7 @@
#include "nsIStreamListener.h"
#include "nsIChannelEventSink.h"
#include "nsIInterfaceRequestor.h"
+#include "nsIXFormsContextInfo.h"
class nsIDocument;
class nsIDOMElement;
@@ -84,10 +86,11 @@
nsXFormsInstanceElement() NS_HIDDEN;
private:
- NS_HIDDEN_(nsresult) CloneInlineInstance();
+ NS_HIDDEN_(nsresult) CloneInlineInstance(nsIDOMNode *aChild);
NS_HIDDEN_(void) LoadExternalInstance(const nsAString &aSrc);
NS_HIDDEN_(nsresult) CreateInstanceDocument(const nsAString &aQualifiedName);
NS_HIDDEN_(already_AddRefed<nsIModelElementPrivate>) GetModel();
+ NS_HIDDEN_(nsresult) GetFirstChildElement(nsIDOMNode **aChild);
/**
* Replace principal for document to be the same as for the owning document.
@@ -108,6 +111,8 @@
PRBool mInitialized;
PRBool mLazy;
nsCOMPtr<nsIChannel> mChannel;
+ // Context Info for events.
+ nsCOMArray<nsIXFormsContextInfo> mContextInfo;
};
NS_HIDDEN_(nsresult)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsModelElement.cpp
^
|
@@ -1562,7 +1562,8 @@
}
NS_IMETHODIMP
-nsXFormsModelElement::InstanceLoadFinished(PRBool aSuccess)
+nsXFormsModelElement::InstanceLoadFinished(PRBool aSuccess,
+ const nsAString& aURI)
{
if (!aSuccess) {
// This will leave mPendingInstanceCount in an invalid state, which is
@@ -1570,7 +1571,17 @@
// should stop. If we decrease mPendingInstanceCount, the model would
// finish construction, which is wrong.
nsXFormsUtils::ReportError(NS_LITERAL_STRING("instanceLoadError"), mElement);
- nsXFormsUtils::DispatchEvent(mElement, eEvent_LinkException);
+ if (!aURI.IsEmpty()) {
+ // Context Info: 'resource-uri'
+ // The resource URI of the link that failed.
+ nsCOMPtr<nsXFormsContextInfo> contextInfo =
+ new nsXFormsContextInfo(mElement);
+ NS_ENSURE_TRUE(contextInfo, NS_ERROR_OUT_OF_MEMORY);
+ contextInfo->SetStringValue("resource-uri", aURI);
+ mContextInfo.AppendObject(contextInfo);
+ }
+ nsXFormsUtils::DispatchEvent(mElement, eEvent_LinkException, nsnull,
+ nsnull, &mContextInfo);
return NS_OK;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsSchemaValidator.cpp
^
|
@@ -124,6 +124,8 @@
isValid = IsValidSchemaListItem(aValue);
} else if (aType.EqualsLiteral("listItems")) {
isValid = IsValidSchemaListItems(aValue);
+ } else if (aType.EqualsLiteral("card-number")) {
+ isValid = IsValidSchemaCardNumber(aValue);
}
return isValid;
@@ -220,3 +222,21 @@
return isValid;
}
+PRBool
+nsXFormsSchemaValidator::IsValidSchemaCardNumber(const nsAString & aValue)
+{
+ nsAutoString value(aValue);
+
+ // A valid card-number is between 12 and 19 digits in length.
+ PRInt32 len = value.Length();
+ if ((len < 12) || (len > 19))
+ return PR_FALSE;
+
+ for (PRInt32 i = 0; i < len; ++i) {
+ PRUnichar c = value.CharAt(i);
+ if ((c > '9') || (c < '0'))
+ return PR_FALSE;
+ }
+
+ return PR_TRUE;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsSchemaValidator.h
^
|
@@ -104,6 +104,9 @@
// Returns if the string is a valid XForms list of listitems
PRBool IsValidSchemaListItems(const nsAString & aValue);
+ // Returns if the string is a valid XForms card-number.
+ PRBool IsValidSchemaCardNumber(const nsAString & aValue);
+
protected:
nsCOMPtr<nsISchemaValidator> mSchemaValidator;
};
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsSubmissionElement.cpp
^
|
@@ -814,14 +814,17 @@
nsXFormsSubmissionElement::GetSubmissionURI(nsACString& aURI)
{
// Precedence:
- // 1. If the submission element has a resource element as its first child,
- // the URI can be specifed by either the 'value' attribute or the string
- // content of the resource element. The resource element has precedence over
- // both the 'resource' and 'action' attributes.
+ // 1. If the submission element has a resource element, the URI can be
+ // specifed by either the 'value' attribute or the string content of the
+ // resource element. If a submission has more than one resource child
+ // element, the first resource element child must be selected for use.
//
- // 2. If there is no resource element as the first child, the URI may be
- // specified by either the 'resource' or 'action' attributes with 'resource'
- // having precedence over 'action'.
+ // The resource element has precedence over both the 'resource' and
+ // 'action' attributes.
+ //
+ // 2. If there is no resource element, the URI may be specified by either
+ // the 'resource' or 'action' attributes with 'resource' having precedence
+ // over 'action'.
//
// If no URI is specified via any of the above mechanisms we write a warning
// message to the error console.
@@ -829,7 +832,7 @@
nsresult rv = NS_OK;
nsAutoString uri;
- // First check if the first child element of submission is a resource.
+ // First check if submission has a resource child element.
nsCOMPtr<nsIDOMNode> currentNode, node, resourceNode;
mElement->GetFirstChild(getter_AddRefs(currentNode));
@@ -838,19 +841,15 @@
while (currentNode) {
currentNode->GetNodeType(&nodeType);
if (nodeType == nsIDOMNode::ELEMENT_NODE) {
- // Make sure the element is a resource element.
+ // Check if the element is a resource element.
nsAutoString localName, namespaceURI;
currentNode->GetLocalName(localName);
currentNode->GetNamespaceURI(namespaceURI);
if (localName.EqualsLiteral("resource") &&
namespaceURI.EqualsLiteral(NS_NAMESPACE_XFORMS)) {
- // First child element is a resource.
resourceNode = currentNode;
+ break;
}
-
- // The resource element must be the first child, so we
- // bail out as soon as we find any element.
- break;
}
currentNode->GetNextSibling(getter_AddRefs(node));
@@ -917,6 +916,236 @@
}
nsresult
+nsXFormsSubmissionElement::OverrideRequestHeaders(nsIHttpChannel *aHttpChannel)
+{
+
+ // Check to see if this submission element has any header elements. Process
+ // the header elements, which will find any name/value pairs and add them
+ // to the channel's request header
+
+ nsresult rv = NS_OK;
+ nsCOMPtr<nsIDOMNode> currentNode, node, headerNode;
+ mElement->GetFirstChild(getter_AddRefs(currentNode));
+
+ PRUint16 nodeType;
+
+ while (currentNode) {
+ currentNode->GetNodeType(&nodeType);
+ if (nodeType == nsIDOMNode::ELEMENT_NODE) {
+ // Check if the element is a header element.
+ nsAutoString localName, namespaceURI;
+ currentNode->GetLocalName(localName);
+ currentNode->GetNamespaceURI(namespaceURI);
+ if (localName.EqualsLiteral("header") &&
+ namespaceURI.EqualsLiteral(NS_NAMESPACE_XFORMS)) {
+ headerNode = currentNode;
+ nsAutoString name, value;
+ rv = ProcessHeaderElement(headerNode, aHttpChannel);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+
+ currentNode->GetNextSibling(getter_AddRefs(node));
+ currentNode.swap(node);
+ }
+
+ return NS_OK;
+}
+
+nsresult
+nsXFormsSubmissionElement::ProcessHeaderElement(nsIDOMNode *aHeaderNode,
+ nsIHttpChannel *aHttpChannel)
+{
+ // Take the given header node and look for name/value element pairs
+ // underneath. Evaluate their bindings, if any, and set those headers on
+ // the submission request.
+
+ NS_ENSURE_ARG(aHeaderNode);
+
+ PRBool hasNodeset = PR_FALSE;
+ nsCOMPtr<nsIDOMXPathResult> nodesetResult;
+ PRInt32 contextSize = kNotFound;
+ nsAutoString nodesetString(NS_LITERAL_STRING("nodeset"));
+ nsresult rv;
+ nsCOMPtr<nsIDOMElement> headerElement(do_QueryInterface(aHeaderNode));
+ NS_ENSURE_STATE(headerElement);
+ headerElement->HasAttribute(nodesetString, &hasNodeset);
+
+ if (hasNodeset) {
+ nsAutoString bindExpr;
+ headerElement->GetAttribute(nodesetString, bindExpr);
+ if (!bindExpr.IsEmpty()) {
+ // Get the nodeset we are bound to
+ nsCOMPtr<nsIModelElementPrivate> model;
+ PRBool usesModelBind = PR_FALSE;
+ rv = nsXFormsUtils::EvaluateNodeBinding(headerElement, 0, nodesetString,
+ EmptyString(),
+ nsIDOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE,
+ getter_AddRefs(model),
+ getter_AddRefs(nodesetResult),
+ &usesModelBind);
+ NS_ENSURE_SUCCESS(rv, rv);
+ PRUint32 tempSize;
+ rv = nodesetResult->GetSnapshotLength(&tempSize);
+ NS_ENSURE_SUCCESS(rv, rv);
+ contextSize = (PRInt32)tempSize;
+
+ if (contextSize <= 0) {
+ return NS_OK;
+ }
+ }
+ }
+
+ // look for the name and value elements under the header element
+
+ nsCOMPtr<nsIDOMNode> currentNode, node;
+ headerElement->GetFirstChild(getter_AddRefs(currentNode));
+
+ PRUint16 nodeType;
+ nsAutoString nameExpr, nameValue, valueExpr, valueValue;
+ PRBool useNameExpr = PR_FALSE, useValueExpr = PR_FALSE;
+ nsCOMPtr<nsIDOMElement> nameElement, valueElement;
+
+ while (currentNode && (!valueElement || !nameElement)) {
+ currentNode->GetNodeType(&nodeType);
+ if (nodeType == nsIDOMNode::ELEMENT_NODE) {
+ nsAutoString localName, namespaceURI,
+ valueString(NS_LITERAL_STRING("value"));
+ currentNode->GetLocalName(localName);
+ currentNode->GetNamespaceURI(namespaceURI);
+ if (localName.EqualsLiteral("name") &&
+ namespaceURI.EqualsLiteral(NS_NAMESPACE_XFORMS) &&
+ !nameElement) {
+ nameElement = do_QueryInterface(currentNode);
+ if (nameElement) {
+ nameElement->HasAttribute(valueString, &useNameExpr);
+ if (useNameExpr) {
+ nameElement->GetAttribute(valueString, nameExpr);
+ if (contextSize == kNotFound) {
+ nsCOMPtr<nsIModelElementPrivate> model;
+ PRBool usesModelBind = PR_FALSE;
+ nsCOMPtr<nsIDOMXPathResult> xpRes;
+ rv = nsXFormsUtils::EvaluateNodeBinding(nameElement, 0,
+ valueString, EmptyString(),
+ nsIDOMXPathResult::STRING_TYPE,
+ getter_AddRefs(model),
+ getter_AddRefs(xpRes),
+ &usesModelBind);
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (xpRes) {
+ // Truncate nameValue so GetStringValue replaces the contents
+ // with the xpath result rather than appending to it.
+ nameValue.Truncate();
+ rv = xpRes->GetStringValue(nameValue);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+ } else {
+ // No value attribute. Get the string content of the resource element.
+ nsXFormsUtils::GetNodeValue(currentNode, nameValue);
+ }
+ }
+ } else if (localName.Equals(valueString) &&
+ namespaceURI.EqualsLiteral(NS_NAMESPACE_XFORMS) &&
+ !valueElement) {
+ valueElement = do_QueryInterface(currentNode);
+ if (valueElement) {
+ valueElement->HasAttribute(valueString, &useValueExpr);
+ if (useValueExpr) {
+ valueElement->GetAttribute(valueString, valueExpr);
+ if (contextSize == kNotFound) {
+ nsCOMPtr<nsIModelElementPrivate> model;
+ PRBool usesModelBind = PR_FALSE;
+ nsCOMPtr<nsIDOMXPathResult> xpRes;
+ rv = nsXFormsUtils::EvaluateNodeBinding(valueElement, 0,
+ valueString, EmptyString(),
+ nsIDOMXPathResult::STRING_TYPE,
+ getter_AddRefs(model),
+ getter_AddRefs(xpRes),
+ &usesModelBind);
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (xpRes) {
+ // Truncate valueValue so GetStringValue replaces the contents
+ // with the xpath result rather than appending to it.
+ valueValue.Truncate();
+ rv = xpRes->GetStringValue(valueValue);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+ } else {
+ // No value attribute. Get the string content of the resource element.
+ nsXFormsUtils::GetNodeValue(valueElement, valueValue);
+ }
+ }
+ }
+ }
+ currentNode->GetNextSibling(getter_AddRefs(node));
+ currentNode.swap(node);
+ }
+
+ NS_ENSURE_STATE(nameElement && valueElement);
+
+ if (contextSize == kNotFound) {
+ // if the header element didn't have any nodeset attribute we just have the
+ // one name/value pair to worry about
+
+ if (!nameValue.IsEmpty()) {
+ rv = aHttpChannel->SetRequestHeader(NS_ConvertUTF16toUTF8(nameValue),
+ NS_ConvertUTF16toUTF8(valueValue),
+ PR_TRUE);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ return NS_OK;
+ }
+
+ for (PRInt32 i = 0; i < contextSize; ++i) {
+ // Get context node
+ nsCOMPtr<nsIDOMNode> contextNode;
+ rv = nodesetResult->SnapshotItem(i, getter_AddRefs(contextNode));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ if (contextNode) {
+ nsCOMPtr<nsIDOMXPathResult> xpRes;
+ if (!nameExpr.IsEmpty()) {
+ rv = nsXFormsUtils::EvaluateXPath(nameExpr, contextNode, nameElement,
+ nsIDOMXPathResult::STRING_TYPE,
+ getter_AddRefs(xpRes));
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (xpRes) {
+ // Truncate nameValue so GetStringValue replaces the contents
+ // with the xpath result rather than appending to it.
+ nameValue.Truncate();
+ rv = xpRes->GetStringValue(nameValue);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+ if (!valueExpr.IsEmpty()) {
+ rv = nsXFormsUtils::EvaluateXPath(valueExpr, contextNode, valueElement,
+ nsIDOMXPathResult::STRING_TYPE,
+ getter_AddRefs(xpRes));
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (xpRes) {
+ // Truncate valueValue so GetStringValue replaces the contents
+ // with the xpath result rather than appending to it.
+ valueValue.Truncate();
+ rv = xpRes->GetStringValue(valueValue);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+
+ if (!nameValue.IsEmpty()) {
+ rv = aHttpChannel->SetRequestHeader(NS_ConvertUTF16toUTF8(nameValue),
+ NS_ConvertUTF16toUTF8(valueValue),
+ PR_TRUE);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+ }
+
+ return NS_OK;
+}
+
+nsresult
nsXFormsSubmissionElement::GetBoundInstanceData(nsIDOMNode **result)
{
nsCOMPtr<nsIModelElementPrivate> model;
@@ -1165,18 +1394,18 @@
attrName.Append(localName);
aTarget->SetAttributeNS(kXMLNSNameSpaceURI, attrName, value);
}
- } else if (!value.IsEmpty()) {
+ } else if (!aPrefixHash ||
+ aPrefixHash->Contains(NS_LITERAL_STRING("#default"))) {
+ // only serialize the default namespace declaration if
+ // includenamespaceprefixes is declared and it includes '#default'
+ // or if we haven't already serialized it (none of the child elements
+ // used it)
PRBool hasDefaultNSAttr;
aTarget->HasAttributeNS(kXMLNSNameSpaceURI,
NS_LITERAL_STRING("xmlns"), &hasDefaultNSAttr);
if (!hasDefaultNSAttr) {
- aTarget->GetNamespaceURI(nsURI);
- if (!nsURI.IsEmpty()) {
- // if aTarget default namespace uri isn't empty and it hasn't
- // default namespace attribute then we should add it.
- aTarget->SetAttributeNS(kXMLNSNameSpaceURI, localName, value);
- }
+ aTarget->SetAttributeNS(kXMLNSNameSpaceURI, localName, value);
}
}
}
@@ -1288,19 +1517,6 @@
submDoc->GetDocumentElement(getter_AddRefs(submDocElm));
NS_ENSURE_STATE(submDocElm);
- // if submission document has empty default namespace attribute and if
- // @includenamespaceprefixes attribute doesn't contain "#default" value then
- // we should remove default namespace attribute (see the specs 11.3).
- nsAutoString XMLNSAttrValue;
- submDocElm->GetAttributeNS(kXMLNSNameSpaceURI, NS_LITERAL_STRING("xmlns"),
- XMLNSAttrValue);
-
- if (XMLNSAttrValue.IsEmpty() && (!prefixHash ||
- !prefixHash->Contains(NS_LITERAL_STRING("#default")))) {
- submDocElm->RemoveAttributeNS(kXMLNSNameSpaceURI,
- NS_LITERAL_STRING("xmlns"));
- }
-
// handle namespaces on the root element of the instance document
nsCOMPtr<nsIDOMElement> instDocElm;
instDoc->GetDocumentElement(getter_AddRefs(instDocElm));
@@ -2427,6 +2643,7 @@
if (httpChannel) {
httpChannel->SetReferrer(currURI);
+ OverrideRequestHeaders(httpChannel);
}
if (mFormat & METHOD_POST) {
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsSubmissionElement.h
^
|
@@ -54,6 +54,7 @@
#include "nsIHttpHeaderVisitor.h"
#include "nsIXFormsContextInfo.h"
#include "nsDataHashtable.h"
+#include "nsIHttpChannel.h"
class nsIMultiplexInputStream;
@@ -228,6 +229,9 @@
nsresult SetHttpContextInfo(PRUint32 aResponse, const nsAString &aResponseText);
nsresult ParseErrorResponse(nsIChannel *aChannel);
+ nsresult OverrideRequestHeaders(nsIHttpChannel *aHttpChannel);
+ nsresult ProcessHeaderElement(nsIDOMNode *aHeaderNode,
+ nsIHttpChannel *aHttpChannel);
};
NS_HIDDEN_(nsresult)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsUtilityService.cpp
^
|
@@ -58,6 +58,9 @@
#include "nsIModelElementPrivate.h"
#include "nsIXFormsActionModuleElement.h"
#include "nsIXFormsContextInfo.h"
+#include "prmem.h"
+#include "plbase64.h"
+#include "nsICryptoHash.h"
NS_IMPL_ISUPPORTS1(nsXFormsUtilityService, nsIXFormsUtilityService)
@@ -473,7 +476,7 @@
PR_FormatTime(ctime, sizeof(ctime), "%Y-%m-%dT%H:%M:%S\0", &time);
- aResult.AssignLiteral(ctime);
+ aResult.Assign(NS_ConvertASCIItoUTF16(ctime));
if (aUTC) {
aResult.AppendLiteral("Z");
@@ -567,3 +570,299 @@
return NS_OK;
}
+NS_IMETHODIMP
+nsXFormsUtilityService::Context(nsIDOMNode *aResolverNode,
+ nsIDOMNode **aResult)
+{
+
+ nsCOMPtr<nsIDOMNode> contextNode;
+ PRUint32 contextNodesetSize = 0;
+ PRInt32 contextPosition;
+ nsCOMPtr<nsIModelElementPrivate> model;
+ nsCOMPtr<nsIDOMElement> bindElement;
+ nsCOMPtr<nsIXFormsControl> parentControl;
+ PRBool outerBind;
+
+ nsCOMPtr<nsIDOMElement> element(do_QueryInterface(aResolverNode));
+ if (!element) {
+ contextNode.swap(*aResult);
+ return NS_OK;
+ }
+
+ nsresult rv =
+ nsXFormsUtils::GetNodeContext(element,
+ nsXFormsUtils::ELEMENT_WITH_MODEL_ATTR,
+ getter_AddRefs(model),
+ getter_AddRefs(bindElement),
+ &outerBind,
+ getter_AddRefs(parentControl),
+ getter_AddRefs(contextNode),
+ &contextPosition,
+ (PRInt32*)&contextNodesetSize,
+ PR_FALSE);
+
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ contextNode.swap(*aResult);
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsXFormsUtilityService::IsCardNumber(const nsAString& aNumber, PRBool *aResult)
+{
+ nsAutoString number(aNumber);
+
+ nsXFormsSchemaValidator validator;
+ if (!validator.ValidateString(number,
+ NS_LITERAL_STRING("card-number"),
+ NS_LITERAL_STRING(NS_NAMESPACE_XFORMS))) {
+ *aResult = PR_FALSE;
+ return NS_OK;
+ }
+
+ // Now check if the card number is a valid Luhn number.
+ PRInt32 sum = 0;
+ PRBool alt = false;
+ for (PRInt32 i = number.Length() - 1; i >= 0; --i) {
+ PRUnichar currentChar = number.CharAt(i);
+ PRInt32 digit = abs(currentChar - '0');
+
+ if (alt) {
+ digit *= 2;
+ if (digit > 9) {
+ digit -= 9;
+ }
+ }
+ sum += digit;
+ alt = !alt;
+ }
+
+ *aResult = (sum % 10 == 0);
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsXFormsUtilityService::Digest(const nsAString &aData,
+ const nsAString &aAlgorithm,
+ const nsAString &aEncoding,
+ nsIDOMNode *aResolverNode,
+ nsAString &aResult)
+{
+ aResult.Truncate();
+
+ PRBool throwException = PR_FALSE;
+
+ // Determine the hash algorithm to use.
+ PRUint32 hashAlg = 0;
+
+ if (aAlgorithm.EqualsLiteral("MD5")) {
+ hashAlg = nsICryptoHash::MD5;
+ } else if (aAlgorithm.EqualsLiteral("SHA-1")) {
+ hashAlg = nsICryptoHash::SHA1;
+ } else if (aAlgorithm.EqualsLiteral("SHA-256")) {
+ hashAlg = nsICryptoHash::SHA256;
+ } else if (aAlgorithm.EqualsLiteral("SHA-384")) {
+ hashAlg = nsICryptoHash::SHA384;
+ } else if (aAlgorithm.EqualsLiteral("SHA-512")) {
+ hashAlg = nsICryptoHash::SHA512;
+ } else {
+ // Throw exception.
+ throwException = PR_TRUE;
+ }
+
+ if (!throwException) {
+ // Perform the hash.
+ nsresult rv;
+
+ nsCOMPtr<nsICryptoHash> hash =
+ do_CreateInstance("@mozilla.org/security/hash;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = hash->Init(hashAlg);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCAutoString data = NS_LossyConvertUTF16toASCII(aData);
+ rv = hash->Update(reinterpret_cast<const PRUint8*>(data.get()),
+ data.Length());
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // PR_FALSE means return the raw binary data.
+ nsCAutoString result;
+ rv = hash->Finish(PR_FALSE, result);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // Encode the result.
+ if (aEncoding.IsEmpty() || aEncoding.EqualsLiteral("base64")) {
+ char *buffer = PL_Base64Encode((char *)result.get(),
+ result.Length(), nsnull);
+ if (buffer) {
+ aResult = ToNewUnicode(NS_ConvertASCIItoUTF16(buffer));
+ PR_Free(buffer);
+ }
+ } else if (aEncoding.EqualsLiteral("hex")) {
+ PRUint32 length = result.Length() * 2 + 1;
+ PRUnichar *hexBuffer =
+ NS_STATIC_CAST(PRUnichar*, nsMemory::Alloc(length * sizeof(PRUnichar)));
+ NS_ENSURE_TRUE(hexBuffer, NS_ERROR_OUT_OF_MEMORY);
+ nsXFormsUtils::BinaryToHex(result.get(), result.Length(), &hexBuffer);
+ hexBuffer [result.Length() * 2] = 0;
+
+ nsAutoString hexResult(hexBuffer);
+ nsCAutoString hexLower = NS_LossyConvertUTF16toASCII(hexResult);
+ ToLowerCase(hexLower);
+ aResult = NS_ConvertASCIItoUTF16(hexLower);
+
+ nsMemory::Free(hexBuffer);
+ } else {
+ // Throw exception.
+ throwException = PR_TRUE;
+ }
+ }
+
+ if (throwException) {
+ // If the digest function appears in a computed expression (An XPath
+ // expression used by model item properties such as relevant and
+ // calculate to include dynamic functionality in XForms), an
+ // xforms-compute-exception occurs. If the digest function appears
+ // in any other attribute that contains an XPath function, an
+ // xforms-binding-exception occurs.
+ nsXFormsEvent event = eEvent_BindingException;
+ nsAutoString localName, namespaceURI;
+ aResolverNode->GetLocalName(localName);
+ if (localName.EqualsLiteral("bind")) {
+ aResolverNode->GetNamespaceURI(namespaceURI);
+ if (namespaceURI.EqualsLiteral(NS_NAMESPACE_XFORMS)) {
+ event = eEvent_ComputeException;
+ }
+ }
+
+ // Dispatch the event.
+ nsCOMPtr<nsIDOMElement> resolverElement = do_QueryInterface(aResolverNode);
+ nsCOMPtr<nsIModelElementPrivate> modelPriv =
+ nsXFormsUtils::GetModel(resolverElement);
+ nsCOMPtr<nsIDOMNode> model = do_QueryInterface(modelPriv);
+ nsXFormsUtils::DispatchEvent(model, event, nsnull, resolverElement,
+ nsnull);
+ return NS_ERROR_FAILURE;
+ }
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsXFormsUtilityService::AdjustDateTimeToTimezone(const nsAString &aDateTime,
+ nsAString &aResult)
+{
+ // We have three cases to deal with:
+ //
+ // 1. aDateTime does not include a timezone indicator: 2007-10-07T02:22:00
+ // The schema validator will return a PRTime that was calculated using
+ // PR_LocalTimeParameters and that PRTime value formatted as an
+ // xsd:dateTime is the same 2007-10-07T02:22:00 that was passed in.
+ // We just need to append the local time zone.
+ //
+ // 2. aDateTime is a UTC (aka GMT) time: 2007-10-07T21:26:43Z
+ // The schema validator will treat aDateTime as GMT and return that as a
+ // PRTime. We convert the GMT time to a time in the local time zone and
+ // append the local time zone.
+ //
+ // 3. aDateTime includes a time zone component: 2007-10-07T02:22:00-07:00
+ // The schema validator checks if the time zone component is valid, but
+ // does not use it when calculating the PRTime value so this case is
+ // similar to case 1 except that we have to add the given time zone
+ // offset (to get the GMT time of the input aDateTime), convert the GMT
+ // time to the local time zone, and append the local time zone.
+ aResult.Truncate();
+
+ nsCOMPtr<nsISchemaValidator> schemaValidator =
+ do_CreateInstance("@mozilla.org/schemavalidator;1");
+ NS_ENSURE_TRUE(schemaValidator, NS_ERROR_FAILURE);
+
+ PRTime t_dateTime;
+ nsresult rv = schemaValidator->ValidateBuiltinTypeDateTime(aDateTime,
+ &t_dateTime);
+
+ if (NS_FAILED(rv)) {
+ return NS_OK;
+ }
+
+ // The dateTime is valid, so get the timeZone information. If there is time
+ // zone information we are dealing with case 3 and have a bit more work to
+ // do to convert aDateTime to the local time zone.
+ nsAutoString timeString, timeZoneString;
+ PRInt32 timeSeparator = aDateTime.FindChar(PRUnichar('T'));
+ timeString.Append(Substring(aDateTime,
+ timeSeparator + 1,
+ aDateTime.Length() - timeSeparator));
+ nsXFormsUtils::GetTimeZone(timeString, timeZoneString);
+
+ PRExplodedTime time;
+ char ctime[60];
+
+ if (!timeZoneString.IsEmpty()) {
+ // The time zone string will be of the form ('+' | '-') hh ':' mm
+ // For example: +05:00, -07:00
+ nsAutoString hoursString, minutesString;
+ hoursString.Append(Substring(timeZoneString, 1, 2));
+ minutesString.Append(Substring(timeZoneString, 4, 2));
+
+ PRInt32 errCode;
+ PRInt32 hours = hoursString.ToInteger(&errCode);
+ NS_ENSURE_TRUE(errCode == 0, NS_ERROR_FAILURE);
+ PRInt32 minutes = minutesString.ToInteger(&errCode);
+ NS_ENSURE_TRUE(errCode == 0, NS_ERROR_FAILURE);
+ PRInt32 tzSecs = (hours * 3600) + (minutes * 60);
+
+ if (timeZoneString.CharAt(0) == '+') {
+ // The time zone is relative to GMT so if it is positive, we need to
+ // subtract the total number of seconds represented by the time zone;
+ // likewise, we add if the time zone is negative.
+ tzSecs *= -1;
+ }
+
+ PR_ExplodeTime(t_dateTime, PR_LocalTimeParameters, &time);
+ // Zero out the gmt and dst information because we don't want
+ // PR_NormalizeTime to use the local time zone to get back to
+ // GMT before it normalizes (because it would calculate the GMT
+ // time relative to the time zone that was part of the input dateTime).
+ time.tm_params.tp_gmt_offset = 0;
+ time.tm_params.tp_dst_offset = 0;
+ // Adjust the total seconds.
+ time.tm_sec += tzSecs;
+ // Normalize the fields and apply the local time parameters to convert
+ // the time to the local time zone.
+ PR_NormalizeTime(&time, PR_LocalTimeParameters);
+ PR_FormatTime(ctime, sizeof(ctime), "%Y-%m-%dT%H:%M:%S\0", &time);
+
+ } else {
+ // This is either a GMT time or no time zone information is available.
+ PR_ExplodeTime(t_dateTime, PR_LocalTimeParameters, &time);
+ PR_FormatTime(ctime, sizeof(ctime), "%Y-%m-%dT%H:%M:%S\0", &time);
+ }
+
+ // Calculate local time zone to append to the result.
+ int gmtoffsethour = time.tm_params.tp_gmt_offset / 3600;
+ int remainder = time.tm_params.tp_gmt_offset % 3600;
+ int gmtoffsetminute = remainder ? remainder / 60 : 0;
+ // adjust gmtoffsethour for daylight savings time.
+ int dstoffset = time.tm_params.tp_dst_offset / 3600;
+ gmtoffsethour += dstoffset;
+ if (gmtoffsethour < 0) {
+ // Make the gmtoffsethour positive; we'll add the plus or minus
+ // to the time zone string.
+ gmtoffsethour *= -1;
+ }
+
+ char zone_location[40];
+ const int zoneBufSize = sizeof(zone_location);
+ PR_snprintf(zone_location, zoneBufSize, "%c%02d:%02d\0",
+ time.tm_params.tp_gmt_offset < 0 ? '-' : '+',
+ gmtoffsethour, gmtoffsetminute);
+
+ aResult.AppendLiteral(ctime);
+ aResult.Append(NS_ConvertASCIItoUTF16(zone_location));
+
+ return NS_OK;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsUtils.cpp
^
|
@@ -2538,3 +2538,44 @@
return PR_FALSE;
}
}
+
+static inline PRUnichar
+ToHexChar(PRInt16 aValue)
+{
+ if (aValue < 10)
+ return (PRUnichar) aValue + '0';
+ else
+ return (PRUnichar) aValue - 10 + 'A';
+}
+
+void
+nsXFormsUtils::BinaryToHex(const char *aBuffer, PRUint32 aCount,
+ PRUnichar **aHexString)
+{
+ for (PRUint32 index = 0; index < aCount; index++) {
+ (*aHexString)[index * 2] = ToHexChar((aBuffer[index] >> 4) & 0xf);
+ (*aHexString)[index * 2 + 1] = ToHexChar(aBuffer[index] & 0xf);
+ }
+}
+
+/* static */ nsresult
+nsXFormsUtils::GetTimeZone(const nsAString &aTime,
+ nsAString &aResult)
+{
+ aResult.Truncate();
+
+ if (!aTime.IsEmpty()) {
+ PRInt32 timeZoneSeparator = aTime.FindChar(PRUnichar('-'));
+ if (timeZoneSeparator == kNotFound) {
+ timeZoneSeparator = aTime.FindChar(PRUnichar('+'));
+ if (timeZoneSeparator == kNotFound) {
+ // no time zone information available
+ return NS_OK;
+ }
+ }
+ aResult.Append(Substring(aTime, timeZoneSeparator,
+ aTime.Length() - timeZoneSeparator));
+ }
+
+ return NS_OK;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/nsXFormsUtils.h
^
|
@@ -660,6 +660,20 @@
*/
static NS_HIDDEN_(PRInt32) waitLimit;
+ static NS_HIDDEN_(void) BinaryToHex(const char *aBuffer, PRUint32 aCount,
+ PRUnichar **aHexString);
+
+ /**
+ * Get the time zone information from an xsd:time. This function assumes
+ * that aTime is a valid xsd:time.
+ *
+ * @param aTime A valid xsd:time
+ * @param aResult Result string containing the time zone or an
+ * empty string if none is found.
+ */
+ static NS_HIDDEN_(nsresult) GetTimeZone(const nsAString &aTime,
+ nsAString &aResult);
+
private:
/**
* Do same origin checks on aBaseDocument and aTestURI. Hosts can be
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/extensions/xforms/resources/locale/en-US/xforms.properties
^
|
@@ -88,7 +88,7 @@
warnSubmitSerializeFailed = XForms Warning (6): Submission failed to serialize data
warnSubmitNetworkFailure = XForms Warning (7): Submission could not send data to the network
warnSubmitProtocolPost = XForms Warning (8): Submission could not be processed. We do not handle method="post" with protocol: %S.
-warnSubmitURI = XForms Warning (9): Submission element must specify the URI via a resource element (must be the first child element of submission), resource attribute or action attribute.
+warnSubmitURI = XForms Warning (9): Submission element must specify the URI via a resource element, resource attribute or action attribute.
# XForms Permission Messages:
xformsXDPermissionDialogTitle = Allowed Sites - XForms Cross Domain Access
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/gfx/src/gtk/nsFontMetricsGTK.cpp
^
|
@@ -61,6 +61,7 @@
#include "nsAString.h"
#include "nsXPIDLString.h"
#include "nsFontDebug.h"
+#include "nsCharTraits.h"
#ifdef MOZ_ENABLE_FREETYPE2
#include "nsFT2FontNode.h"
#include "nsFontFreeType.h"
@@ -76,11 +77,8 @@
#include <X11/Xatom.h>
#include <gdk/gdk.h>
-#define IS_SURROGATE(u) (u > 0x10000)
#define SAFE_CCMAP_HAS_CHAR_EXT(ccmap,c) ((ccmap) && ((IS_SURROGATE(c) && (ccmap)==gDoubleByteSpecialCharsCCMap) ? PR_FALSE : (CCMAP_HAS_CHAR_EXT(ccmap,c))))
-#define UCS2_NOMAPPING 0XFFFD
-
#ifdef PR_LOGGING
static PRLogModuleInfo * FontMetricsGTKLM = PR_NewLogModule("FontMetricsGTK");
#endif /* PR_LOGGING */
@@ -3458,8 +3456,8 @@
return AddToLoadedFontsList(ftfont);
}
- if (IS_SURROGATE(aChar)) {
- // SURROGATE is only supported by FreeType
+ if (!IS_IN_BMP(aChar)) {
+ // Non-BMP is only supported by FreeType
return nsnull;
}
#endif
@@ -5064,10 +5062,10 @@
* loading a font with the same map.
*/
if (charSetInfo->mCharSet) {
- // if SURROGATE char, ignore charSetInfo->mCCMap checking
+ // if not BMP char, ignore charSetInfo->mCCMap checking
// because the exact ccmap is never created before loading
// NEED TO FIX: need better way
- if (IS_SURROGATE(aChar) ) {
+ if (!IS_IN_BMP(aChar) ) {
goto check_done;
}
PRUint16* ccmap = charSetInfo->mCCMap;
@@ -6561,8 +6559,8 @@
// If this is is the 'unknown' char (ie: converter could not
// convert it) there is no sense in searching any further for
// a font. Just returing mWesternFont
- if (aChar == UCS2_NOMAPPING) {
- FIND_FONT_PRINTF((" ignore the 'UCS2_NOMAPPING' character, return mWesternFont"));
+ if (aChar == UCS2_REPLACEMENT_CHAR) {
+ FIND_FONT_PRINTF((" ignore the 'UCS2_REPLACEMENT_CHAR' character, return mWesternFont"));
return mWesternFont;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/intl/uconv/src/charsetData.properties
^
|
@@ -64,6 +64,7 @@
ibm869.notForBrowser = true
x-ibm1046.notForBrowser = true
iso-8859-8-e.notForBrowser = true
+utf-7.notForBrowser = true
t.61-8bit.notForOutgoing = true
utf-7.notForOutgoing = true
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/intl/uconv/ucvko/nsISO2022KRToUnicode.cpp
^
|
@@ -52,12 +52,17 @@
{
switch(mState)
{
- case mState_ASCII:
+ case mState_Init:
if(0x1b == *src) {
- mLastLegalState = mState;
- mState = mState_ESC;
- }
- else if(0x0e == *src) { // Shift-Out
+ mLastLegalState = mState_ASCII;
+ mState = mState_ESC;
+ break;
+ }
+ mState = mState_ASCII;
+ // fall through
+
+ case mState_ASCII:
+ if(0x0e == *src) { // Shift-Out
mState = mState_KSX1001_1992;
mRunLength = 0;
}
@@ -104,11 +109,6 @@
mState = mLastLegalState;
if('C' == *src) {
mState = mState_ASCII;
- if (mRunLength == 0) {
- if(dest+1 >= destEnd)
- goto error1;
- *dest++ = 0xFFFD;
- }
mRunLength = 0;
}
else {
@@ -207,7 +207,7 @@
} // switch
src++;
if ( *src == 0x0a || *src == 0x0d ) // if LF/CR, return to US-ASCII unconditionally.
- mState = mState_ASCII;
+ mState = mState_Init;
}
*aDestLen = dest - aDest;
return NS_OK;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/intl/uconv/ucvko/nsISO2022KRToUnicode.h
^
|
@@ -46,7 +46,7 @@
public:
nsISO2022KRToUnicode()
{
- mState = mState_ASCII;
+ mState = mState_Init;
mLastLegalState = mState_ASCII;
mData = 0;
mEUCKRDecoder = nsnull;
@@ -70,7 +70,7 @@
NS_IMETHOD Reset()
{
- mState = mState_ASCII;
+ mState = mState_Init;
mLastLegalState = mState_ASCII;
mRunLength = 0;
return NS_OK;
@@ -78,6 +78,7 @@
private:
enum {
+ mState_Init,
mState_ASCII,
mState_ESC,
mState_ESC_24,
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/intl/unicharutil/util/nsUnicharUtils.h
^
|
@@ -41,8 +41,13 @@
#ifndef nsAString_h___
#include "nsAString.h"
#endif
+
#include "nsReadableUtils.h"
+#ifndef nsCharTraits_h___
+#include "nsCharTraits.h"
+#endif
+
void ToLowerCase( nsAString& );
void ToUpperCase( nsAString& );
@@ -90,16 +95,6 @@
return ToUpperCase(c) != c;
}
-#define IS_HIGH_SURROGATE(u) ((PRUnichar)(u) >= (PRUnichar)0xd800 && (PRUnichar)(u) <= (PRUnichar)0xdbff)
-#define IS_LOW_SURROGATE(u) ((PRUnichar)(u) >= (PRUnichar)0xdc00 && (PRUnichar)(u) <= (PRUnichar)0xdfff)
-
-#define SURROGATE_TO_UCS4(h, l) ((((PRUint32)(h)-(PRUint32)0xd800) << 10) + \
- (PRUint32)(l) - (PRUint32)(0xdc00) + 0x10000)
-
-#define H_SURROGATE(s) ((PRUnichar)(((PRUint32)s - (PRUint32)0x10000) >> 10) + (PRUnichar)0xd800)
-#define L_SURROGATE(s) ((PRUnichar)(((PRUint32)s - (PRUint32)0x10000) & 0x3ff) + (PRUnichar)0xdc00)
-#define IS_IN_BMP(ucs) ((PRUint32)ucs < 0x10000)
-
/* (0x3131u <= (u) && (u) <= 0x318eu) => Hangul Compatibility Jamo */
/* (0xac00u <= (u) && (u) <= 0xd7a3u) => Hangul Syllables */
#define IS_CJ_CHAR(u) \
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/js.mak
^
|
@@ -76,6 +76,7 @@
-@erase "$(INTDIR)\jsfun.obj"
-@erase "$(INTDIR)\jsgc.obj"
-@erase "$(INTDIR)\jshash.obj"
+ -@erase "$(INTDIR)\jsiter.obj"
-@erase "$(INTDIR)\jsinterp.obj"
-@erase "$(INTDIR)\jslock.obj"
-@erase "$(INTDIR)\jslog2.obj"
@@ -171,6 +172,7 @@
"$(INTDIR)\jsfun.obj" \
"$(INTDIR)\jsgc.obj" \
"$(INTDIR)\jshash.obj" \
+ "$(INTDIR)\jsiter.obj" \
"$(INTDIR)\jsinterp.obj" \
"$(INTDIR)\jslock.obj" \
"$(INTDIR)\jslog2.obj" \
@@ -230,6 +232,7 @@
-@erase "$(INTDIR)\jsfun.obj"
-@erase "$(INTDIR)\jsgc.obj"
-@erase "$(INTDIR)\jshash.obj"
+ -@erase "$(INTDIR)\jsiter.obj"
-@erase "$(INTDIR)\jsinterp.obj"
-@erase "$(INTDIR)\jslock.obj"
-@erase "$(INTDIR)\jslog2.obj"
@@ -327,6 +330,7 @@
"$(INTDIR)\jsfun.obj" \
"$(INTDIR)\jsgc.obj" \
"$(INTDIR)\jshash.obj" \
+ "$(INTDIR)\jsiter.obj" \
"$(INTDIR)\jsinterp.obj" \
"$(INTDIR)\jslock.obj" \
"$(INTDIR)\jslog2.obj" \
@@ -895,6 +899,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -950,6 +955,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1059,6 +1065,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1101,6 +1108,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1149,6 +1157,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1192,6 +1201,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1244,6 +1254,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1286,6 +1297,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1337,6 +1349,7 @@
".\jsexn.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1383,6 +1396,7 @@
".\jsexn.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1437,6 +1451,7 @@
".\jsdtoa.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1481,6 +1496,7 @@
".\jsdtoa.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1533,6 +1549,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1577,6 +1594,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1733,6 +1751,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1780,7 +1799,7 @@
".\jsemit.h"\
".\jsfun.h"\
".\jsgc.h"\
- ".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1837,6 +1856,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1879,6 +1899,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1929,6 +1950,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -1977,6 +1999,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2032,6 +2055,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2075,7 +2099,7 @@
".\jscpucfg.h"\
".\jsfun.h"\
".\jsgc.h"\
- ".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2161,6 +2185,114 @@
################################################################################
# Begin Source File
+SOURCE=.\jsiter.c
+
+!IF "$(CFG)" == "js - Win32 Release"
+
+DEP_CPP_JSINT=\
+ ".\js.msg"\
+ ".\jsapi.h"\
+ ".\jsarena.h"\
+ ".\jsarray.h"\
+ ".\jsatom.h"\
+ ".\jsbool.h"\
+ ".\jsclist.h"\
+ ".\jscntxt.h"\
+ ".\jscompat.h"\
+ ".\jsconfig.h"\
+ ".\jscpucfg.h"\
+ ".\jsdbgapi.h"\
+ ".\jsfun.h"\
+ ".\jsgc.h"\
+ ".\jshash.h"\
+ ".\jsiter.h"\
+ ".\jsinterp.h"\
+ ".\jslock.h"\
+ ".\jslong.h"\
+ ".\jsnum.h"\
+ ".\jsobj.h"\
+ ".\jsopcode.h"\
+ ".\jsopcode.tbl"\
+ ".\jsosdep.h"\
+ ".\jsotypes.h"\
+ ".\jsprf.h"\
+ ".\jsprvtd.h"\
+ ".\jspubtd.h"\
+ ".\jsregexp.h"\
+ ".\jsscope.h"\
+ ".\jsscript.h"\
+ ".\jsstddef.h"\
+ ".\jsstr.h"\
+ ".\jstypes.h"\
+ ".\jsutil.h"\
+ ".\jsxml.h"\
+ {$(INCLUDE)}"\sys\types.h"\
+
+NODEP_CPP_JSINT=\
+ ".\jsautocfg.h"\
+ ".\prcvar.h"\
+ ".\prlock.h"\
+
+
+"$(INTDIR)\jsiter.obj" : $(SOURCE) $(DEP_CPP_JSINT) "$(INTDIR)"
+
+
+!ELSEIF "$(CFG)" == "js - Win32 Debug"
+
+DEP_CPP_JSINT=\
+ ".\js.msg"\
+ ".\jsapi.h"\
+ ".\jsarena.h"\
+ ".\jsarray.h"\
+ ".\jsatom.h"\
+ ".\jsbool.h"\
+ ".\jsclist.h"\
+ ".\jscntxt.h"\
+ ".\jscompat.h"\
+ ".\jsconfig.h"\
+ ".\jscpucfg.h"\
+ ".\jsdbgapi.h"\
+ ".\jsfun.h"\
+ ".\jsgc.h"\
+ ".\jshash.h"\
+ ".\jsiter.h"\
+ ".\jsinterp.h"\
+ ".\jslock.h"\
+ ".\jslong.h"\
+ ".\jsnum.h"\
+ ".\jsobj.h"\
+ ".\jsopcode.h"\
+ ".\jsopcode.tbl"\
+ ".\jsosdep.h"\
+ ".\jsotypes.h"\
+ ".\jsprf.h"\
+ ".\jsprvtd.h"\
+ ".\jspubtd.h"\
+ ".\jsregexp.h"\
+ ".\jsscope.h"\
+ ".\jsscript.h"\
+ ".\jsstddef.h"\
+ ".\jsstr.h"\
+ ".\jstypes.h"\
+ ".\jsutil.h"\
+ ".\jsxml.h"\
+ {$(INCLUDE)}"\sys\types.h"\
+
+NODEP_CPP_JSINT=\
+ ".\jsautocfg.h"\
+ ".\prcvar.h"\
+ ".\prlock.h"\
+
+
+"$(INTDIR)\jsiter.obj" : $(SOURCE) $(DEP_CPP_JSINT) "$(INTDIR)"
+
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
SOURCE=.\jsinterp.c
!IF "$(CFG)" == "js - Win32 Release"
@@ -2181,6 +2313,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2230,6 +2363,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2283,6 +2417,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2324,6 +2459,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2457,6 +2593,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslibmath.h"\
".\jslock.h"\
@@ -2499,6 +2636,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslibmath.h"\
".\jslock.h"\
@@ -2550,6 +2688,7 @@
".\jsdtoa.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2594,6 +2733,7 @@
".\jsdtoa.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2648,6 +2788,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2696,6 +2837,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2754,6 +2896,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2802,6 +2945,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2855,6 +2999,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -2902,6 +3047,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3003,6 +3149,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3048,6 +3195,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3101,6 +3249,7 @@
".\jsexn.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3150,6 +3299,7 @@
".\jsexn.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3244,6 +3394,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3284,6 +3435,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3335,6 +3487,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3383,6 +3536,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3438,6 +3592,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3483,6 +3638,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3578,6 +3734,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3619,6 +3776,7 @@
".\jscpucfg.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
@@ -3831,6 +3989,7 @@
".\jsfun.h"\
".\jsgc.h"\
".\jshash.h"\
+ ".\jsiter.h"\
".\jsinterp.h"\
".\jslock.h"\
".\jslong.h"\
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsapi.c
^
|
@@ -1179,12 +1179,35 @@
}
/* Initialize the function class first so constructors can be made. */
- fun_proto = js_InitFunctionClass(cx, obj);
- if (!fun_proto)
+ if (!js_GetClassPrototype(cx, obj, INT_TO_JSID(JSProto_Function),
+ &fun_proto)) {
+ fun_proto = NULL;
goto out;
+ }
+ if (!fun_proto) {
+ fun_proto = js_InitFunctionClass(cx, obj);
+ if (!fun_proto)
+ goto out;
+ } else {
+ JSObject *ctor;
+
+ ctor = JS_GetConstructor(cx, fun_proto);
+ if (!ctor) {
+ fun_proto = NULL;
+ goto out;
+ }
+ OBJ_DEFINE_PROPERTY(cx, obj, ATOM_TO_JSID(CLASS_ATOM(cx, Function)),
+ OBJECT_TO_JSVAL(ctor), 0, 0, 0, NULL);
+ }
/* Initialize the object class next so Object.prototype works. */
- obj_proto = js_InitObjectClass(cx, obj);
+ if (!js_GetClassPrototype(cx, obj, INT_TO_JSID(JSProto_Object),
+ &obj_proto)) {
+ fun_proto = NULL;
+ goto out;
+ }
+ if (!obj_proto)
+ obj_proto = js_InitObjectClass(cx, obj);
if (!obj_proto) {
fun_proto = NULL;
goto out;
@@ -2220,7 +2243,6 @@
/* Bootstrap Function.prototype (see also JS_InitStandardClasses). */
if (OBJ_GET_CLASS(cx, ctor) == clasp) {
- JS_ASSERT(!OBJ_GET_PROTO(cx, ctor));
OBJ_SET_PROTO(cx, ctor, proto);
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsdbgapi.c
^
|
@@ -454,6 +454,7 @@
frame.pc = script->code + script->length
- JSOP_STOP_LENGTH;
}
+ frame.callee = closure;
frame.fun = fun;
frame.argv = argv + 2;
frame.down = cx->fp;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsemit.c
^
|
@@ -4291,10 +4291,6 @@
return JS_FALSE;
cg->treeContext.flags &= ~TCF_IN_FOR_INIT;
- /* Emit a push to allocate the iterator. */
- if (js_Emit1(cx, cg, JSOP_STARTITER) < 0)
- return JS_FALSE;
-
/* Compile the object expression to the right of 'in'. */
if (!js_EmitTree(cx, cg, pn2->pn_right))
return JS_FALSE;
@@ -4393,7 +4389,7 @@
if (pn3->pn_slot >= 0) {
if (pn3->pn_attrs & JSPROP_READONLY) {
JS_ASSERT(op == JSOP_FORVAR);
- op = JSOP_GETVAR;
+ op = JSOP_FORCONST;
}
atomIndex = (jsatomid) pn3->pn_slot;
EMIT_UINT16_IMM_OP(op, atomIndex);
@@ -5451,7 +5447,7 @@
EMIT_UINT16_IMM_OP(pn2->pn_op, atomIndex);
break;
}
- // FALL THROUGH
+ /* FALL THROUGH */
case TOK_DOT:
EMIT_ATOM_INDEX_OP(pn2->pn_op, atomIndex);
break;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsfun.c
^
|
@@ -1856,13 +1856,7 @@
caller = JS_GetScriptedCaller(cx, fp);
if (caller) {
principals = JS_EvalFramePrincipals(cx, fp, caller);
- if (principals == caller->script->principals) {
- filename = caller->script->filename;
- lineno = js_PCToLineNumber(cx, caller->script, caller->pc);
- } else {
- filename = principals->codebase;
- lineno = 0;
- }
+ filename = js_ComputeFilename(cx, caller, principals, &lineno);
} else {
filename = NULL;
lineno = 0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsgc.c
^
|
@@ -2573,6 +2573,9 @@
if (JSVAL_IS_GCTHING((jsval)fp->thisp))
GC_MARK(cx, JSVAL_TO_GCTHING((jsval)fp->thisp), "this");
+ if (fp->callee)
+ GC_MARK(cx, fp->callee, "callee object");
+
/*
* Mark fp->argv, even though in the common case it will be marked via our
* caller's frame, or via a JSStackHeader if fp was pushed by an external
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsinterp.c
^
|
@@ -1263,6 +1263,7 @@
frame.varobj = NULL;
frame.callobj = frame.argsobj = NULL;
frame.script = script;
+ frame.callee = funobj;
frame.fun = fun;
frame.argc = argc;
frame.argv = sp - argc;
@@ -1570,6 +1571,7 @@
frame.callobj = down->callobj;
frame.argsobj = down->argsobj;
frame.varobj = down->varobj;
+ frame.callee = down->callee;
frame.fun = down->fun;
frame.thisp = down->thisp;
frame.argc = down->argc;
@@ -1586,6 +1588,7 @@
obj = tmp;
}
frame.varobj = obj;
+ frame.callee = NULL;
frame.fun = NULL;
frame.thisp = chain;
frame.argc = 0;
@@ -2696,6 +2699,7 @@
BEGIN_CASE(JSOP_FORARG)
BEGIN_CASE(JSOP_FORVAR)
+ BEGIN_CASE(JSOP_FORCONST)
BEGIN_CASE(JSOP_FORLOCAL)
/*
* JSOP_FORARG and JSOP_FORVAR don't require any lval computation
@@ -2744,6 +2748,10 @@
fp->vars[slot] = rval;
break;
+ case JSOP_FORCONST:
+ /* Don't update the const slot. */
+ break;
+
case JSOP_FORLOCAL:
slot = GET_UINT16(pc);
JS_ASSERT(slot < (uintN)depth);
@@ -3857,6 +3865,7 @@
newifp->frame.callobj = NULL;
newifp->frame.argsobj = NULL;
newifp->frame.varobj = NULL;
+ newifp->frame.callee = obj;
newifp->frame.script = script;
newifp->frame.fun = fun;
newifp->frame.argc = argc;
@@ -5535,7 +5544,7 @@
rval = FETCH_OPND(-1);
JS_ASSERT(JSVAL_IS_STRING(rval));
SAVE_SP_AND_PC(fp);
- str = js_EscapeAttributeValue(cx, JSVAL_TO_STRING(rval));
+ str = js_EscapeAttributeValue(cx, JSVAL_TO_STRING(rval), JS_FALSE);
if (!str) {
ok = JS_FALSE;
goto out;
@@ -5949,8 +5958,6 @@
#undef FAST_LOCAL_INCREMENT_OP
- EMPTY_CASE(JSOP_STARTITER)
-
BEGIN_CASE(JSOP_ENDITER)
JS_ASSERT(!JSVAL_IS_PRIMITIVE(sp[-1]));
iterobj = JSVAL_TO_OBJECT(sp[-1]);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsinterp.h
^
|
@@ -61,6 +61,7 @@
JSObject *callobj; /* lazily created Call object */
JSObject *argsobj; /* lazily created arguments object */
JSObject *varobj; /* variables object, where vars go */
+ JSObject *callee; /* function or script object */
JSScript *script; /* script being interpreted */
JSFunction *fun; /* function being called or null */
JSObject *thisp; /* "this" pointer if in method */
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsiter.c
^
|
@@ -756,6 +756,7 @@
/* Copy call-invariant script and function references. */
gen->frame.script = fp->script;
+ gen->frame.callee = fp->callee;
gen->frame.fun = fp->fun;
/* Use newsp to carve space out of gen->stack. */
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsnum.c
^
|
@@ -306,7 +306,7 @@
const char *numGrouping, *tmpGroup;
JSRuntime *rt;
JSString *numStr, *str;
- char *num, *buf, *dec, *end, *tmpSrc, *tmpDest;
+ char *num, *buf, *nint, *end, *tmpSrc, *tmpDest;
int digits, size, remainder, nrepeat;
/*
@@ -319,17 +319,28 @@
numStr = JSVAL_TO_STRING(*rval);
num = js_GetStringBytes(cx->runtime, numStr);
- /* Find bit before the decimal. */
- dec = strchr(num, '.');
- digits = dec ? dec - num : (int)strlen(num);
+ /*
+ * Find the first non-integer value, whether it be a letter as in
+ * 'Infinity', a decimal point, or an 'e' from exponential notation.
+ */
+ nint = num;
+ if (*nint == '-')
+ nint++;
+ while(*nint >= '0' && *nint <= '9')
+ nint++;
+ digits = nint - num;
end = num + digits;
+ if (!digits)
+ return JS_TRUE;
rt = cx->runtime;
thousandsLength = strlen(rt->thousandsSeparator);
decimalLength = strlen(rt->decimalSeparator);
/* Figure out how long resulting string will be. */
- size = digits + (dec ? decimalLength + strlen(dec + 1) : 0);
+ size = digits + (*nint ? strlen(nint + 1) + 1 : 0);
+ if (*nint == '.')
+ size += decimalLength;
numGrouping = tmpGroup = rt->numGrouping;
remainder = digits;
@@ -371,12 +382,12 @@
tmpGroup--;
}
- if (dec) {
+ if (*nint == '.') {
strcpy(tmpDest, rt->decimalSeparator);
tmpDest += decimalLength;
- strcpy(tmpDest, dec + 1);
+ strcpy(tmpDest, nint + 1);
} else {
- *tmpDest++ = '\0';
+ strcpy(tmpDest, nint);
}
if (cx->localeCallbacks && cx->localeCallbacks->localeToUnicode)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsobj.c
^
|
@@ -1237,6 +1237,25 @@
return NULL;
}
+const char *
+js_ComputeFilename(JSContext *cx, JSStackFrame *caller,
+ JSPrincipals *principals, uintN *linenop)
+{
+ uint32 flags;
+
+ JS_ASSERT(principals || !cx->runtime->findObjectPrincipals);
+ flags = JS_GetScriptFilenameFlags(caller->script);
+ if ((flags & JSFILENAME_SYSTEM) &&
+ principals &&
+ strcmp(principals->codebase, "[System Principal]")) {
+ *linenop = 0;
+ return principals->codebase;
+ }
+
+ *linenop = js_PCToLineNumber(cx, caller->script, caller->pc);
+ return caller->script->filename;
+}
+
static JSBool
obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
@@ -1362,13 +1381,7 @@
str = JSVAL_TO_STRING(argv[0]);
if (caller) {
principals = JS_EvalFramePrincipals(cx, fp, caller);
- if (principals == caller->script->principals) {
- file = caller->script->filename;
- line = js_PCToLineNumber(cx, caller->script, caller->pc);
- } else {
- file = principals->codebase;
- line = 0;
- }
+ file = js_ComputeFilename(cx, caller, principals, &line);
} else {
file = NULL;
line = 0;
@@ -3276,13 +3289,13 @@
/* Resolved: juggle locks and lookup id again. */
if (obj2 != obj) {
JS_UNLOCK_OBJ(cx, obj);
- JS_LOCK_OBJ(cx, obj2);
+ if (OBJ_IS_NATIVE(obj2))
+ JS_LOCK_OBJ(cx, obj2);
}
scope = OBJ_SCOPE(obj2);
if (!MAP_IS_NATIVE(&scope->map)) {
/* Whoops, newresolve handed back a foreign obj2. */
JS_ASSERT(obj2 != obj);
- JS_UNLOCK_OBJ(cx, obj2);
ok = OBJ_LOOKUP_PROPERTY(cx, obj2, id, objp, propp);
if (!ok || *propp)
goto cleanup;
@@ -3303,7 +3316,8 @@
JS_ASSERT(obj2 == scope->object);
obj = obj2;
} else if (obj2 != obj) {
- JS_UNLOCK_OBJ(cx, obj2);
+ if (OBJ_IS_NATIVE(obj2))
+ JS_UNLOCK_OBJ(cx, obj2);
JS_LOCK_OBJ(cx, obj);
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsobj.h
^
|
@@ -591,6 +591,12 @@
extern JSBool
js_CheckPrincipalsAccess(JSContext *cx, JSObject *scopeobj,
JSPrincipals *principals, JSAtom *caller);
+
+/* NB: Infallible. */
+extern const char *
+js_ComputeFilename(JSContext *cx, JSStackFrame *caller,
+ JSPrincipals *principals, uintN *linenop);
+
JS_END_EXTERN_C
#endif /* jsobj_h___ */
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsopcode.c
^
|
@@ -1905,10 +1905,6 @@
}
break;
- case JSOP_STARTITER:
- todo = -2;
- break;
-
case JSOP_PUSH:
#if JS_HAS_DESTRUCTURING
sn = js_GetSrcNote(jp->script, pc);
@@ -2506,9 +2502,7 @@
start = ss->offsets[pos];
LOCAL_ASSERT(ss->sprinter.base[start] == '[' ||
ss->sprinter.base[start] == '#');
- pos = blockpos;
- while (ss->opcodes[++pos] == JSOP_STARTITER)
- LOCAL_ASSERT(pos < ss->top);
+ pos = blockpos + 1;
LOCAL_ASSERT(pos < ss->top);
xval = OFF2STR(&ss->sprinter, ss->offsets[pos]);
lval = OFF2STR(&ss->sprinter, start);
@@ -2728,6 +2722,7 @@
goto do_fornameinloop;
case JSOP_FORVAR:
+ case JSOP_FORCONST:
atom = GetSlotAtom(jp, js_GetLocalVariable, GET_VARNO(pc));
LOCAL_ASSERT(atom);
goto do_fornameinloop;
@@ -4437,6 +4432,10 @@
JSPrinter *jp;
JSString *name;
+ JS_ASSERT(spindex < 0 ||
+ spindex == JSDVG_IGNORE_STACK ||
+ spindex == JSDVG_SEARCH_STACK);
+
for (fp = cx->fp; fp && !fp->script; fp = fp->down)
continue;
if (!fp)
@@ -4534,19 +4533,16 @@
#if !JS_HAS_NO_SUCH_METHOD
JS_ASSERT(-depth <= spindex);
#endif
- spindex -= depth;
-
- base = (jsval *) cx->stackPool.current->base;
- limit = (jsval *) cx->stackPool.current->avail;
sp = fp->sp + spindex;
- if (JS_UPTRDIFF(sp, base) < JS_UPTRDIFF(limit, base))
- pc = (jsbytecode *) *sp;
+ if ((jsuword) (sp - fp->spbase) < (jsuword) depth)
+ pc = (jsbytecode *) *(sp - depth);
+
}
}
/*
* Again, be paranoid, this time about possibly loading an invalid pc
- * from fp->sp[-(1+depth)].
+ * from fp->sp[spindex - script->depth)].
*/
if (JS_UPTRDIFF(pc, script->code) >= (jsuword)script->length) {
pc = fp->pc;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsopcode.tbl
^
|
@@ -458,7 +458,7 @@
/*
* Iterator, generator, and array comprehension support.
*/
-OPDEF(JSOP_STARTITER, 208,"startiter", NULL, 1, 0, 0, 0, JOF_BYTE)
+OPDEF(JSOP_FORCONST, 208,"forconst", NULL, 3, 0, 1, 19, JOF_QVAR|JOF_NAME|JOF_FOR)
OPDEF(JSOP_ENDITER, 209,"enditer", NULL, 1, 1, 0, 0, JOF_BYTE)
OPDEF(JSOP_GENERATOR, 210,"generator", NULL, 1, 0, 0, 0, JOF_BYTE)
OPDEF(JSOP_YIELD, 211,"yield", NULL, 1, 1, 1, 1, JOF_BYTE)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsscan.c
^
|
@@ -314,146 +314,144 @@
if (ts->ungetpos != 0) {
c = ts->ungetbuf[--ts->ungetpos];
} else {
- do {
- if (ts->linebuf.ptr == ts->linebuf.limit) {
- len = PTRDIFF(ts->userbuf.limit, ts->userbuf.ptr, jschar);
- if (len <= 0) {
- if (!ts->file) {
- ts->flags |= TSF_EOF;
- return EOF;
- }
+ if (ts->linebuf.ptr == ts->linebuf.limit) {
+ len = PTRDIFF(ts->userbuf.limit, ts->userbuf.ptr, jschar);
+ if (len <= 0) {
+ if (!ts->file) {
+ ts->flags |= TSF_EOF;
+ return EOF;
+ }
- /* Fill ts->userbuf so that \r and \r\n convert to \n. */
- crflag = (ts->flags & TSF_CRFLAG) != 0;
- len = js_fgets(cbuf, JS_LINE_LIMIT - crflag, ts->file);
- if (len <= 0) {
- ts->flags |= TSF_EOF;
- return EOF;
- }
- olen = len;
- ubuf = ts->userbuf.base;
- i = 0;
- if (crflag) {
- ts->flags &= ~TSF_CRFLAG;
- if (cbuf[0] != '\n') {
- ubuf[i++] = '\n';
- len++;
- ts->linepos--;
- }
- }
- for (j = 0; i < len; i++, j++)
- ubuf[i] = (jschar) (unsigned char) cbuf[j];
- ts->userbuf.limit = ubuf + len;
- ts->userbuf.ptr = ubuf;
+ /* Fill ts->userbuf so that \r and \r\n convert to \n. */
+ crflag = (ts->flags & TSF_CRFLAG) != 0;
+ len = js_fgets(cbuf, JS_LINE_LIMIT - crflag, ts->file);
+ if (len <= 0) {
+ ts->flags |= TSF_EOF;
+ return EOF;
}
- if (ts->listener) {
- ts->listener(ts->filename, ts->lineno, ts->userbuf.ptr, len,
- &ts->listenerTSData, ts->listenerData);
+ olen = len;
+ ubuf = ts->userbuf.base;
+ i = 0;
+ if (crflag) {
+ ts->flags &= ~TSF_CRFLAG;
+ if (cbuf[0] != '\n') {
+ ubuf[i++] = '\n';
+ len++;
+ ts->linepos--;
+ }
}
+ for (j = 0; i < len; i++, j++)
+ ubuf[i] = (jschar) (unsigned char) cbuf[j];
+ ts->userbuf.limit = ubuf + len;
+ ts->userbuf.ptr = ubuf;
+ }
+ if (ts->listener) {
+ ts->listener(ts->filename, ts->lineno, ts->userbuf.ptr, len,
+ &ts->listenerTSData, ts->listenerData);
+ }
- nl = ts->saveEOL;
- if (!nl) {
+ nl = ts->saveEOL;
+ if (!nl) {
+ /*
+ * Any one of \n, \r, or \r\n ends a line (the longest
+ * match wins). Also allow the Unicode line and paragraph
+ * separators.
+ */
+ for (nl = ts->userbuf.ptr; nl < ts->userbuf.limit; nl++) {
/*
- * Any one of \n, \r, or \r\n ends a line (the longest
- * match wins). Also allow the Unicode line and paragraph
- * separators.
+ * Try to prevent value-testing on most characters by
+ * filtering out characters that aren't 000x or 202x.
*/
- for (nl = ts->userbuf.ptr; nl < ts->userbuf.limit; nl++) {
- /*
- * Try to prevent value-testing on most characters by
- * filtering out characters that aren't 000x or 202x.
- */
- if ((*nl & 0xDFD0) == 0) {
- if (*nl == '\n')
- break;
- if (*nl == '\r') {
- if (nl + 1 < ts->userbuf.limit && nl[1] == '\n')
- nl++;
- break;
- }
- if (*nl == LINE_SEPARATOR || *nl == PARA_SEPARATOR)
- break;
+ if ((*nl & 0xDFD0) == 0) {
+ if (*nl == '\n')
+ break;
+ if (*nl == '\r') {
+ if (nl + 1 < ts->userbuf.limit && nl[1] == '\n')
+ nl++;
+ break;
}
+ if (*nl == LINE_SEPARATOR || *nl == PARA_SEPARATOR)
+ break;
}
}
+ }
- /*
- * If there was a line terminator, copy thru it into linebuf.
- * Else copy JS_LINE_LIMIT-1 bytes into linebuf.
- */
- if (nl < ts->userbuf.limit)
- len = PTRDIFF(nl, ts->userbuf.ptr, jschar) + 1;
- if (len >= JS_LINE_LIMIT) {
- len = JS_LINE_LIMIT - 1;
- ts->saveEOL = nl;
- } else {
- ts->saveEOL = NULL;
- }
- js_strncpy(ts->linebuf.base, ts->userbuf.ptr, len);
- ts->userbuf.ptr += len;
- olen = len;
+ /*
+ * If there was a line terminator, copy thru it into linebuf.
+ * Else copy JS_LINE_LIMIT-1 bytes into linebuf.
+ */
+ if (nl < ts->userbuf.limit)
+ len = PTRDIFF(nl, ts->userbuf.ptr, jschar) + 1;
+ if (len >= JS_LINE_LIMIT) {
+ len = JS_LINE_LIMIT - 1;
+ ts->saveEOL = nl;
+ } else {
+ ts->saveEOL = NULL;
+ }
+ js_strncpy(ts->linebuf.base, ts->userbuf.ptr, len);
+ ts->userbuf.ptr += len;
+ olen = len;
- /*
- * Make sure linebuf contains \n for EOL (don't do this in
- * userbuf because the user's string might be readonly).
- */
- if (nl < ts->userbuf.limit) {
- if (*nl == '\r') {
- if (ts->linebuf.base[len-1] == '\r') {
- /*
- * Does the line segment end in \r? We must check
- * for a \n at the front of the next segment before
- * storing a \n into linebuf. This case matters
- * only when we're reading from a file.
- */
- if (nl + 1 == ts->userbuf.limit && ts->file) {
- len--;
- ts->flags |= TSF_CRFLAG; /* clear NLFLAG? */
- if (len == 0) {
- /*
- * This can happen when a segment ends in
- * \r\r. Start over. ptr == limit in this
- * case, so we'll fall into buffer-filling
- * code.
- */
- return GetChar(ts);
- }
- } else {
- ts->linebuf.base[len-1] = '\n';
- }
- }
- } else if (*nl == '\n') {
- if (nl > ts->userbuf.base &&
- nl[-1] == '\r' &&
- ts->linebuf.base[len-2] == '\r') {
+ /*
+ * Make sure linebuf contains \n for EOL (don't do this in
+ * userbuf because the user's string might be readonly).
+ */
+ if (nl < ts->userbuf.limit) {
+ if (*nl == '\r') {
+ if (ts->linebuf.base[len-1] == '\r') {
+ /*
+ * Does the line segment end in \r? We must check
+ * for a \n at the front of the next segment before
+ * storing a \n into linebuf. This case matters
+ * only when we're reading from a file.
+ */
+ if (nl + 1 == ts->userbuf.limit && ts->file) {
len--;
- JS_ASSERT(ts->linebuf.base[len] == '\n');
+ ts->flags |= TSF_CRFLAG; /* clear NLFLAG? */
+ if (len == 0) {
+ /*
+ * This can happen when a segment ends in
+ * \r\r. Start over. ptr == limit in this
+ * case, so we'll fall into buffer-filling
+ * code.
+ */
+ return GetChar(ts);
+ }
+ } else {
ts->linebuf.base[len-1] = '\n';
}
- } else if (*nl == LINE_SEPARATOR || *nl == PARA_SEPARATOR) {
+ }
+ } else if (*nl == '\n') {
+ if (nl > ts->userbuf.base &&
+ nl[-1] == '\r' &&
+ ts->linebuf.base[len-2] == '\r') {
+ len--;
+ JS_ASSERT(ts->linebuf.base[len] == '\n');
ts->linebuf.base[len-1] = '\n';
}
+ } else if (*nl == LINE_SEPARATOR || *nl == PARA_SEPARATOR) {
+ ts->linebuf.base[len-1] = '\n';
}
+ }
- /* Reset linebuf based on adjusted segment length. */
- ts->linebuf.limit = ts->linebuf.base + len;
- ts->linebuf.ptr = ts->linebuf.base;
-
- /* Update position of linebuf within physical userbuf line. */
- if (!(ts->flags & TSF_NLFLAG))
- ts->linepos += ts->linelen;
- else
- ts->linepos = 0;
- if (ts->linebuf.limit[-1] == '\n')
- ts->flags |= TSF_NLFLAG;
- else
- ts->flags &= ~TSF_NLFLAG;
+ /* Reset linebuf based on adjusted segment length. */
+ ts->linebuf.limit = ts->linebuf.base + len;
+ ts->linebuf.ptr = ts->linebuf.base;
+
+ /* Update position of linebuf within physical userbuf line. */
+ if (!(ts->flags & TSF_NLFLAG))
+ ts->linepos += ts->linelen;
+ else
+ ts->linepos = 0;
+ if (ts->linebuf.limit[-1] == '\n')
+ ts->flags |= TSF_NLFLAG;
+ else
+ ts->flags &= ~TSF_NLFLAG;
- /* Update linelen from original segment length. */
- ts->linelen = olen;
- }
- c = *ts->linebuf.ptr++;
- } while (JS_ISFORMAT(c));
+ /* Update linelen from original segment length. */
+ ts->linelen = olen;
+ }
+ c = *ts->linebuf.ptr++;
}
if (c == '\n')
ts->lineno++;
@@ -1069,6 +1067,15 @@
return tp;
}
+static JS_INLINE JSBool
+ScanAsSpace(jschar c)
+{
+ /* Treat little- and big-endian BOMs as whitespace for compatibility. */
+ if (JS_ISSPACE(c) || c == 0xfffe || c == 0xfeff)
+ return JS_TRUE;
+ return JS_FALSE;
+}
+
JSTokenType
js_GetToken(JSContext *cx, JSTokenStream *ts)
{
@@ -1275,7 +1282,7 @@
if (ts->flags & TSF_NEWLINES)
break;
}
- } while (JS_ISSPACE(c));
+ } while (ScanAsSpace(c));
tp = NewToken(ts, -1);
if (c == EOF) {
@@ -1798,7 +1805,7 @@
cp[3] == 'n' &&
cp[4] == 'e') {
SkipChars(ts, 5);
- while ((c = GetChar(ts)) != '\n' && JS_ISSPACE(c))
+ while ((c = GetChar(ts)) != '\n' && ScanAsSpace(c))
continue;
if (JS7_ISDEC(c)) {
line = JS7_UNDEC(c);
@@ -1810,7 +1817,7 @@
}
line = temp;
}
- while (c != '\n' && JS_ISSPACE(c))
+ while (c != '\n' && ScanAsSpace(c))
c = GetChar(ts);
i = 0;
if (c == '"') {
@@ -1825,7 +1832,7 @@
}
if (c == '"') {
while ((c = GetChar(ts)) != '\n' &&
- JS_ISSPACE(c)) {
+ ScanAsSpace(c)) {
continue;
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsscript.c
^
|
@@ -233,13 +233,7 @@
}
principals = JS_EvalFramePrincipals(cx, fp, caller);
- if (principals == caller->script->principals) {
- file = caller->script->filename;
- line = js_PCToLineNumber(cx, caller->script, caller->pc);
- } else {
- file = principals->codebase;
- line = 0;
- }
+ file = js_ComputeFilename(cx, caller, principals, &line);
} else {
file = NULL;
line = 0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsxdrapi.h
^
|
@@ -200,7 +200,7 @@
* before deserialization of bytecode. If the saved version does not match
* the current version, abort deserialization and invalidate the file.
*/
-#define JSXDR_BYTECODE_VERSION (0xb973c0de - 16)
+#define JSXDR_BYTECODE_VERSION (0xb973c0de - 29)
/*
* Library-private functions.
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsxml.c
^
|
@@ -725,7 +725,8 @@
}
static JSBool
-Namespace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+NamespaceHelper(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
{
jsval urival, prefixval;
JSObject *uriobj;
@@ -747,7 +748,7 @@
else uriobj = NULL;
#endif
- if (!(cx->fp->flags & JSFRAME_CONSTRUCTING)) {
+ if (!obj) {
/* Namespace called as function. */
if (argc == 1 && isNamespace) {
/* Namespace called with one Namespace argument is identity. */
@@ -834,22 +835,32 @@
}
static JSBool
-QName(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+Namespace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ return NamespaceHelper(cx,
+ (cx->fp->flags & JSFRAME_CONSTRUCTING) ? obj : NULL,
+ argc, argv, rval);
+}
+
+static JSBool
+QNameHelper(JSContext *cx, JSObject *obj, JSClass *clasp, uintN argc,
+ jsval *argv, jsval *rval)
{
jsval nameval, nsval;
JSBool isQName, isNamespace;
JSXMLQName *qn;
JSString *uri, *prefix, *name;
JSObject *nsobj;
- JSClass *clasp;
JSXMLNamespace *ns;
+ JS_ASSERT(clasp == &js_QNameClass.base ||
+ clasp == &js_AttributeNameClass);
nameval = argv[argc > 1];
isQName =
!JSVAL_IS_PRIMITIVE(nameval) &&
OBJ_GET_CLASS(cx, JSVAL_TO_OBJECT(nameval)) == &js_QNameClass.base;
- if (!(cx->fp->flags & JSFRAME_CONSTRUCTING)) {
+ if (!obj) {
/* QName called as function. */
if (argc == 1 && isQName) {
/* QName called with one QName argument is identity. */
@@ -858,13 +869,10 @@
}
/*
- * Create and return a new QName object exactly as if constructed.
- * Use the constructor's clasp so we can be shared by AttributeName
- * (see below after this function).
+ * Create and return a new QName or AttributeName object exactly as if
+ * constructed.
*/
- obj = js_NewObject(cx,
- JS_ValueToFunction(cx, argv[-2])->clasp,
- NULL, NULL);
+ obj = js_NewObject(cx, clasp, NULL, NULL);
if (!obj)
return JS_FALSE;
*rval = OBJECT_TO_JSVAL(obj);
@@ -959,14 +967,18 @@
}
static JSBool
+QName(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ return QNameHelper(cx, (cx->fp->flags & JSFRAME_CONSTRUCTING) ? obj : NULL,
+ &js_QNameClass.base, argc, argv, rval);
+}
+
+static JSBool
AttributeName(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
jsval *rval)
{
- /*
- * Since js_AttributeNameClass was initialized, obj will have that as its
- * class, not js_QNameClass.
- */
- return QName(cx, obj, argc, argv, rval);
+ return QNameHelper(cx, (cx->fp->flags & JSFRAME_CONSTRUCTING) ? obj : NULL,
+ &js_AttributeNameClass, argc, argv, rval);
}
/*
@@ -1954,6 +1966,7 @@
{
jsval nsval;
JSXMLNamespace *ns;
+ JSString *uri;
size_t urilen, srclen, length, offset, dstlen;
jschar *chars;
const jschar *srcp, *endp;
@@ -1967,8 +1980,8 @@
JSXMLArray nsarray;
uintN flags;
- static const char prefix[] = "<parent xmlns='";
- static const char middle[] = "'>";
+ static const char prefix[] = "<parent xmlns=\"";
+ static const char middle[] = "\">";
static const char suffix[] = "</parent>";
#define constrlen(constr) (sizeof(constr) - 1)
@@ -1976,8 +1989,9 @@
if (!js_GetDefaultXMLNamespace(cx, &nsval))
return NULL;
ns = (JSXMLNamespace *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(nsval));
+ uri = js_EscapeAttributeValue(cx, ns->uri, JS_FALSE);
- urilen = JSSTRING_LENGTH(ns->uri);
+ urilen = JSSTRING_LENGTH(uri);
srclen = JSSTRING_LENGTH(src);
length = constrlen(prefix) + urilen + constrlen(middle) + srclen +
constrlen(suffix);
@@ -1989,7 +2003,7 @@
dstlen = length;
js_InflateStringToBuffer(cx, prefix, constrlen(prefix), chars, &dstlen);
offset = dstlen;
- js_strncpy(chars + offset, JSSTRING_CHARS(ns->uri), urilen);
+ js_strncpy(chars + offset, JSSTRING_CHARS(uri), urilen);
offset += urilen;
dstlen = length - offset + 1;
js_InflateStringToBuffer(cx, middle, constrlen(middle), chars + offset,
@@ -2342,15 +2356,14 @@
static void
AppendAttributeValue(JSContext *cx, JSStringBuffer *sb, JSString *valstr)
{
- js_AppendCString(sb, "=\"");
- valstr = js_EscapeAttributeValue(cx, valstr);
+ js_AppendChar(sb, '=');
+ valstr = js_EscapeAttributeValue(cx, valstr, JS_TRUE);
if (!valstr) {
free(sb->base);
sb->base = STRING_BUFFER_ERROR_BASE;
return;
}
js_AppendJSString(sb, valstr);
- js_AppendChar(sb, '"');
}
/*
@@ -2413,13 +2426,15 @@
* This function takes ownership of sb->base, if sb is non-null, in all cases.
*/
static JSString *
-EscapeAttributeValue(JSContext *cx, JSStringBuffer *sb, JSString *str)
+EscapeAttributeValue(JSContext *cx, JSStringBuffer *sb, JSString *str,
+ JSBool quote)
{
size_t length, newlength;
const jschar *cp, *start, *end;
jschar c;
- length = newlength = JSSTRING_LENGTH(str);
+ length = JSSTRING_LENGTH(str);
+ newlength = length + (quote ? 2 : 0);
for (cp = start = JSSTRING_CHARS(str), end = cp + length; cp < end; cp++) {
c = *cp;
if (c == '"')
@@ -2444,6 +2459,8 @@
JS_ReportOutOfMemory(cx);
return NULL;
}
+ if (quote)
+ js_AppendChar(sb, '"');
for (cp = start; cp < end; cp++) {
c = *cp;
if (c == '"')
@@ -2461,6 +2478,8 @@
else
js_AppendChar(sb, c);
}
+ if (quote)
+ js_AppendChar(sb, '"');
JS_ASSERT(STRING_BUFFER_OK(sb));
str = js_NewString(cx, sb->base, STRING_BUFFER_OFFSET(sb), 0);
if (!str)
@@ -2675,6 +2694,8 @@
}
/* ECMA-357 10.2.1 and 10.2.2 */
+#define TO_SOURCE_FLAG 0x80000000
+
static JSString *
XMLToXMLString(JSContext *cx, JSXML *xml, const JSXMLArray *ancestorNSes,
uintN indentLevel)
@@ -2683,10 +2704,9 @@
JSStringBuffer sb;
JSString *str, *prefix, *kidstr;
JSXMLArrayCursor cursor;
- uint32 i, n;
+ uint32 i, n, nextIndentLevel;
JSXMLArray empty, decls, ancdecls;
JSXMLNamespace *ns, *ns2;
- uintN nextIndentLevel;
JSXML *attr, *kid;
if (!GetBooleanXMLSetting(cx, js_prettyPrinting_str, &pretty))
@@ -2694,7 +2714,7 @@
js_InitStringBuffer(&sb);
if (pretty)
- js_RepeatChar(&sb, ' ', indentLevel);
+ js_RepeatChar(&sb, ' ', indentLevel & ~TO_SOURCE_FLAG);
str = NULL;
switch (xml->xml_class) {
@@ -2711,7 +2731,8 @@
case JSXML_CLASS_ATTRIBUTE:
/* Step 5. */
- return EscapeAttributeValue(cx, &sb, xml->xml_value);
+ return EscapeAttributeValue(cx, &sb, xml->xml_value,
+ (indentLevel & TO_SOURCE_FLAG) != 0);
case JSXML_CLASS_COMMENT:
/* Step 6. */
@@ -2981,7 +3002,7 @@
goto out;
nextIndentLevel = indentLevel + i;
} else {
- nextIndentLevel = 0;
+ nextIndentLevel = indentLevel & TO_SOURCE_FLAG;
}
XMLArrayCursorInit(&cursor, &xml->xml_kids);
@@ -3001,7 +3022,7 @@
if (pretty && indentKids) {
js_AppendChar(&sb, '\n');
- js_RepeatChar(&sb, ' ', indentLevel);
+ js_RepeatChar(&sb, ' ', indentLevel & ~TO_SOURCE_FLAG);
}
js_AppendCString(&sb, "</");
@@ -3034,7 +3055,7 @@
/* ECMA-357 10.2 */
static JSString *
-ToXMLString(JSContext *cx, jsval v)
+ToXMLString(JSContext *cx, jsval v, uint32 toSourceFlag)
{
JSObject *obj;
JSString *str;
@@ -3067,7 +3088,7 @@
/* Handle non-element cases in this switch, returning from each case. */
xml = (JSXML *) JS_GetPrivate(cx, obj);
- return XMLToXMLString(cx, xml, NULL, 0);
+ return XMLToXMLString(cx, xml, NULL, toSourceFlag | 0);
}
static JSXMLQName *
@@ -5591,21 +5612,6 @@
NULL, NULL, NULL, NULL
};
-static JSObject *
-CallConstructorFunction(JSContext *cx, JSObject *obj, JSClass *clasp,
- uintN argc, jsval *argv)
-{
- JSObject *tmp;
- jsval rval;
-
- while ((tmp = OBJ_GET_PARENT(cx, obj)) != NULL)
- obj = tmp;
- if (!JS_CallFunctionName(cx, obj, clasp->name, argc, argv, &rval))
- return NULL;
- JS_ASSERT(!JSVAL_IS_PRIMITIVE(rval));
- return JSVAL_TO_OBJECT(rval);
-}
-
static JSXML *
StartNonListXMLMethod(JSContext *cx, JSObject **objp, jsval *argv)
{
@@ -5660,25 +5666,25 @@
jsval *rval)
{
JSXML *xml;
- JSObject *nsobj;
JSXMLNamespace *ns;
NON_LIST_XML_METHOD_PROLOG;
if (xml->xml_class != JSXML_CLASS_ELEMENT)
- return JS_TRUE;
+ goto done;
xml = CHECK_COPY_ON_WRITE(cx, xml, obj);
if (!xml)
return JS_FALSE;
-
- nsobj = CallConstructorFunction(cx, obj, &js_NamespaceClass.base, 1, argv);
- if (!nsobj)
+
+ if (!NamespaceHelper(cx, NULL, 1, argv, rval))
return JS_FALSE;
- argv[0] = OBJECT_TO_JSVAL(nsobj);
-
- ns = (JSXMLNamespace *) JS_GetPrivate(cx, nsobj);
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(*rval));
+
+ ns = (JSXMLNamespace *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(*rval));
if (!AddInScopeNamespace(cx, xml, ns))
return JS_FALSE;
ns->declared = JS_TRUE;
+
+ done:
*rval = OBJECT_TO_JSVAL(obj);
return JS_TRUE;
}
@@ -6825,40 +6831,40 @@
jsval *rval)
{
JSXML *xml;
- JSObject *nsobj;
JSXMLNamespace *ns;
NON_LIST_XML_METHOD_PROLOG;
- *rval = OBJECT_TO_JSVAL(obj);
if (xml->xml_class != JSXML_CLASS_ELEMENT)
- return JS_TRUE;
+ goto done;
xml = CHECK_COPY_ON_WRITE(cx, xml, obj);
if (!xml)
return JS_FALSE;
- nsobj = CallConstructorFunction(cx, obj, &js_NamespaceClass.base, 1, argv);
- if (!nsobj)
+ if (!NamespaceHelper(cx, NULL, 1, argv, rval))
return JS_FALSE;
- argv[0] = OBJECT_TO_JSVAL(nsobj);
- ns = (JSXMLNamespace *) JS_GetPrivate(cx, nsobj);
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(*rval));
+ ns = (JSXMLNamespace *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(*rval));
/* NOTE: remove ns from each ancestor if not used by that ancestor. */
- return xml_removeNamespace_helper(cx, xml, ns);
+ if (!xml_removeNamespace_helper(cx, xml, ns))
+ return JS_FALSE;
+ done:
+ *rval = OBJECT_TO_JSVAL(obj);
+ return JS_TRUE;
}
static JSBool
xml_replace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
JSXML *xml, *vxml, *kid;
- jsval name, value, id, junk;
+ jsval value, id, junk;
uint32 index;
- JSObject *nameobj;
JSXMLQName *nameqn;
NON_LIST_XML_METHOD_PROLOG;
*rval = OBJECT_TO_JSVAL(obj);
if (xml->xml_class != JSXML_CLASS_ELEMENT)
- return JS_TRUE;
+ goto done;
value = argv[1];
vxml = VALUE_IS_XML(cx, value)
@@ -6879,32 +6885,39 @@
if (!xml)
return JS_FALSE;
- name = argv[0];
- if (js_IdIsIndex(name, &index))
- return Replace(cx, xml, name, value);
+ id = argv[0];
+ if (!js_IdIsIndex(id, &index)) {
+ /*
+ * Call function QName per spec, not ToXMLName, to avoid attribute
+ * names.
+ */
+ if (!QNameHelper(cx, NULL, &js_QNameClass.base, 1, argv, rval))
+ return JS_FALSE;
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(*rval));
+ nameqn = (JSXMLQName *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(*rval));
+
+ id = JSVAL_VOID;
+ index = xml->xml_kids.length;
+ while (index != 0) {
+ --index;
+ kid = XMLARRAY_MEMBER(&xml->xml_kids, index, JSXML);
+ if (kid && MatchElemName(nameqn, kid)) {
+ if (!JSVAL_IS_VOID(id) && !DeleteByIndex(cx, xml, id, &junk))
+ return JS_FALSE;
+ if (!IndexToIdVal(cx, index, &id))
+ return JS_FALSE;
+ }
+ }
+ if (JSVAL_IS_VOID(id))
+ goto done;
+ }
- /* Call function QName per spec, not ToXMLName, to avoid attribute names. */
- nameobj = CallConstructorFunction(cx, obj, &js_QNameClass.base, 1, &name);
- if (!nameobj)
+ if (!Replace(cx, xml, id, value))
return JS_FALSE;
- argv[0] = OBJECT_TO_JSVAL(nameobj);
- nameqn = (JSXMLQName *) JS_GetPrivate(cx, nameobj);
- id = JSVAL_VOID;
- index = xml->xml_kids.length;
- while (index != 0) {
- --index;
- kid = XMLARRAY_MEMBER(&xml->xml_kids, index, JSXML);
- if (kid && MatchElemName(nameqn, kid)) {
- if (!JSVAL_IS_VOID(id) && !DeleteByIndex(cx, xml, id, &junk))
- return JS_FALSE;
- if (!IndexToIdVal(cx, index, &id))
- return JS_FALSE;
- }
- }
- if (JSVAL_IS_VOID(id))
- return JS_TRUE;
- return Replace(cx, xml, id, value);
+ done:
+ *rval = OBJECT_TO_JSVAL(obj);
+ return JS_TRUE;
}
static JSBool
@@ -7161,7 +7174,7 @@
{
JSString *str;
- str = ToXMLString(cx, OBJECT_TO_JSVAL(obj));
+ str = ToXMLString(cx, OBJECT_TO_JSVAL(obj), 0);
if (!str)
return JS_FALSE;
*rval = STRING_TO_JSVAL(str);
@@ -7182,7 +7195,7 @@
}
if (!HasSimpleContent(xml))
- return ToXMLString(cx, OBJECT_TO_JSVAL(xml->object));
+ return ToXMLString(cx, OBJECT_TO_JSVAL(xml->object), 0);
str = cx->runtime->emptyString;
js_EnterLocalRootScope(cx);
@@ -7206,6 +7219,19 @@
}
static JSBool
+xml_toSource(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ JSString *str;
+
+ str = ToXMLString(cx, OBJECT_TO_JSVAL(obj), TO_SOURCE_FLAG);
+ if (!str)
+ return JS_FALSE;
+ *rval = STRING_TO_JSVAL(str);
+ return JS_TRUE;
+}
+
+static JSBool
xml_toString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
jsval *rval)
{
@@ -7265,9 +7291,9 @@
{"setName", xml_setName, 1,0,0},
{"setNamespace", xml_setNamespace, 1,0,0},
{js_text_str, xml_text, 0,0,0},
+ {js_toSource_str, xml_toSource, 0,0,0},
{js_toString_str, xml_toString, 0,0,0},
{js_toXMLString_str, xml_toXMLString, 0,0,0},
- {js_toSource_str, xml_toXMLString, 0,0,0},
{js_valueOf_str, xml_valueOf, 0,0,0},
{0,0,0,0,0}
};
@@ -7903,9 +7929,9 @@
}
JSString *
-js_EscapeAttributeValue(JSContext *cx, JSString *str)
+js_EscapeAttributeValue(JSContext *cx, JSString *str, JSBool quote)
{
- return EscapeAttributeValue(cx, NULL, str);
+ return EscapeAttributeValue(cx, NULL, str, quote);
}
JSString *
@@ -7962,7 +7988,7 @@
JSString *
js_ValueToXMLString(JSContext *cx, jsval v)
{
- return ToXMLString(cx, v);
+ return ToXMLString(cx, v, 0);
}
static JSBool
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/jsxml.h
^
|
@@ -271,7 +271,7 @@
js_ToAttributeName(JSContext *cx, jsval *vp);
extern JSString *
-js_EscapeAttributeValue(JSContext *cx, JSString *str);
+js_EscapeAttributeValue(JSContext *cx, JSString *str, JSBool quote);
extern JSString *
js_AddAttributePart(JSContext *cx, JSBool isName, JSString *str,
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/xpconnect/src/XPCNativeWrapper.cpp
^
|
@@ -224,6 +224,20 @@
}
static inline
+already_AddRefed<nsIScriptSecurityManager>
+GetSecurityManager(JSContext *cx)
+{
+ XPCCallContext ccx(JS_CALLER, cx);
+ nsIXPCSecurityManager *sm = ccx.GetXPCContext()->
+ GetAppropriateSecurityManager(nsIXPCSecurityManager::HOOK_CALL_METHOD);
+ nsCOMPtr<nsIScriptSecurityManager> ssm(do_QueryInterface(sm));
+
+ nsIScriptSecurityManager *rval = nsnull;
+ ssm.swap(rval);
+ return rval;
+}
+
+static inline
JSBool
EnsureLegalActivity(JSContext *cx, JSObject *obj)
{
@@ -244,10 +258,12 @@
return JS_TRUE;
}
- XPCCallContext ccx(JS_CALLER, cx);
- nsIXPCSecurityManager *sm = ccx.GetXPCContext()->
- GetAppropriateSecurityManager(nsIXPCSecurityManager::HOOK_CALL_METHOD);
- nsCOMPtr<nsIScriptSecurityManager> ssm(do_QueryInterface(sm));
+ nsCOMPtr<nsIScriptSecurityManager> ssm(GetSecurityManager(cx));
+ if (!ssm) {
+ // If there's no security manager, then we're not running in a browser
+ // context: allow access.
+ return JS_TRUE;
+ }
// A last ditch effort to allow access: if the currently-running code
// has UniversalXPConnect privileges, then allow access.
@@ -412,7 +428,8 @@
// Just using GetNewOrUsed on the return value of
// GetWrappedNativeOfJSObject will give the right thing -- the unique deep
// implicit wrapper associated with wrappedNative.
- JSObject* wrapperObj = XPCNativeWrapper::GetNewOrUsed(cx, wrappedNative);
+ JSObject* wrapperObj = XPCNativeWrapper::GetNewOrUsed(cx, wrappedNative,
+ nsnull);
if (!wrapperObj) {
return JS_FALSE;
}
@@ -1097,7 +1114,7 @@
XPCWrappedNative *parent_wrapper =
XPCWrappedNative::GetWrappedNativeOfJSObject(cx, wn_parent);
- *result = XPCNativeWrapper::GetNewOrUsed(cx, parent_wrapper);
+ *result = XPCNativeWrapper::GetNewOrUsed(cx, parent_wrapper, nsnull);
if (!*result)
return JS_FALSE;
}
@@ -1115,7 +1132,7 @@
// |obj| almost always has the wrong proto and parent so we have to create
// our own object anyway. Set |obj| to null so we don't use it by accident.
obj = nsnull;
-
+
jsval native = argv[0];
if (JSVAL_IS_PRIMITIVE(native)) {
@@ -1479,8 +1496,28 @@
// static
JSObject *
-XPCNativeWrapper::GetNewOrUsed(JSContext *cx, XPCWrappedNative *wrapper)
+XPCNativeWrapper::GetNewOrUsed(JSContext *cx, XPCWrappedNative *wrapper,
+ JSObject *callee)
{
+ if (callee) {
+ nsCOMPtr<nsIPrincipal> prin;
+
+ nsCOMPtr<nsIScriptSecurityManager> ssm = GetSecurityManager(cx);
+ nsresult rv = ssm
+ ? ssm->GetObjectPrincipal(cx, callee, getter_AddRefs(prin))
+ : NS_ERROR_FAILURE;
+ if (NS_SUCCEEDED(rv) && prin) {
+ nsCOMPtr<nsIPrincipal> sysprin;
+ rv = ssm->GetSystemPrincipal(getter_AddRefs(sysprin));
+ if (NS_SUCCEEDED(rv) && sysprin != prin) {
+ jsval v = OBJECT_TO_JSVAL(wrapper->GetFlatJSObject());
+ if (!XPCNativeWrapperCtor(cx, JSVAL_TO_OBJECT(v), 1, &v, &v))
+ return nsnull;
+ return JSVAL_TO_OBJECT(v);
+ }
+ }
+ }
+
// Prevent wrapping a double-wrapped JS object in an
// XPCNativeWrapper!
nsCOMPtr<nsIXPConnectWrappedJS> xpcwrappedjs(do_QueryWrappedNative(wrapper));
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/xpconnect/src/XPCNativeWrapper.h
^
|
@@ -46,7 +46,8 @@
static PRBool AttachNewConstructorObject(XPCCallContext &ccx,
JSObject *aGlobalObject);
- static JSObject *GetNewOrUsed(JSContext *cx, XPCWrappedNative *wrapper);
+ static JSObject *GetNewOrUsed(JSContext *cx, XPCWrappedNative *wrapper,
+ JSObject *callee);
static PRBool IsNativeWrapperClass(JSClass *clazz)
{
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/js/src/xpconnect/src/xpcconvert.cpp
^
|
@@ -1091,6 +1091,7 @@
// printf("Wrapped native accessed across scope boundary\n");
JSScript* script = nsnull;
+ JSObject* callee = nsnull;
if(ccx.GetXPCContext()->CallerTypeIsJavaScript())
{
// Called from JS. We're going to hand the resulting
@@ -1098,15 +1099,20 @@
// the stack.
JSContext* cx = ccx;
JSStackFrame* fp = cx->fp;
- while(!script && fp)
+ while(fp)
{
script = fp->script;
+ if(script)
+ {
+ callee = fp->callee;
+ break;
+ }
fp = fp->down;
}
}
else if(ccx.GetXPCContext()->CallerTypeIsNative())
{
- JSObject* callee = ccx.GetCallee();
+ callee = ccx.GetCallee();
if(callee && JS_ObjectIsFunction(ccx, callee))
{
// Called from c++, and calling out to |callee|, which
@@ -1119,8 +1125,12 @@
"object");
script = JS_GetFunctionScript(ccx, fun);
}
- // Else we don't know whom we're calling, so don't create
- // XPCNativeWrappers.
+ else
+ {
+ // Else we don't know whom we're calling, so don't
+ // create XPCNativeWrappers.
+ callee = nsnull;
+ }
}
// else don't create XPCNativeWrappers, since we have
// no idea what's calling what here.
@@ -1141,7 +1151,7 @@
#endif
JSObject *nativeWrapper =
- XPCNativeWrapper::GetNewOrUsed(ccx, wrapper);
+ XPCNativeWrapper::GetNewOrUsed(ccx, wrapper, callee);
if (nativeWrapper)
{
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/layout/mathml/base/src/nsMathMLmtableFrame.cpp
^
|
@@ -53,6 +53,7 @@
#include "nsTableOuterFrame.h"
#include "nsTableFrame.h"
#include "nsTableCellFrame.h"
+#include "celldata.h"
#include "nsMathMLmtableFrame.h"
@@ -629,8 +630,9 @@
nsMathMLAtoms::rowspan_, value)) {
PRInt32 error;
rowspan = value.ToInteger(&error);
- if (error)
+ if (error || rowspan < 0)
rowspan = 1;
+ rowspan = PR_MIN(rowspan, MAX_ROWSPAN);
}
return rowspan;
}
@@ -644,7 +646,7 @@
nsMathMLAtoms::columnspan_, value)) {
PRInt32 error;
colspan = value.ToInteger(&error);
- if (error)
+ if (error || colspan < 0 || colspan > MAX_COLSPAN)
colspan = 1;
}
return colspan;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/layout/style/nsCSSScanner.cpp
^
|
@@ -791,10 +791,7 @@
ch = Read(aErrorCode);
if (ch < 0) break;
if (ch == CSS_ESCAPE) {
- ch = ParseEscape(aErrorCode);
- if (0 < ch) {
- ident.Append(PRUnichar(ch));
- }
+ ParseAndAppendEscape(aErrorCode, ident);
} else if ((ch == '"') || (ch == '\'') || (ch == '(')) {
// This is an invalid URL spec
ok = PR_FALSE;
@@ -830,12 +827,14 @@
}
-PRInt32 nsCSSScanner::ParseEscape(nsresult& aErrorCode)
+void
+nsCSSScanner::ParseAndAppendEscape(nsresult& aErrorCode, nsString& aOutput)
{
PRUint8* lexTable = gLexTable;
PRInt32 ch = Peek(aErrorCode);
if (ch < 0) {
- return CSS_ESCAPE;
+ aOutput.Append(CSS_ESCAPE);
+ return;
}
if ((ch <= 255) && ((lexTable[ch] & IS_HEX_DIGIT) != 0)) {
PRInt32 rv = 0;
@@ -882,18 +881,22 @@
}
}
}
- return rv;
+ NS_ASSERTION(rv >= 0, "How did rv become negative?");
+ if (rv > 0) {
+ AppendUCS4ToUTF16(ENSURE_VALID_CHAR(rv), aOutput);
+ }
+ return;
} else {
// "Any character except a hexidecimal digit can be escaped to
// remove its special meaning by putting a backslash in front"
// -- CSS1 spec section 7.1
- if (EatNewline(aErrorCode)) { // skip escaped newline
- ch = 0;
- }
- else {
+ if (!EatNewline(aErrorCode)) { // skip escaped newline
(void) Read(aErrorCode);
+ if (ch > 0) {
+ aOutput.Append(ch);
+ }
}
- return ch;
+ return;
}
}
@@ -908,19 +911,16 @@
nsString& aIdent)
{
if (aChar == CSS_ESCAPE) {
- aChar = ParseEscape(aErrorCode);
+ ParseAndAppendEscape(aErrorCode, aIdent);
}
- if (0 < aChar) {
- aIdent.Append(PRUnichar(aChar));
+ else if (0 < aChar) {
+ aIdent.Append(aChar);
}
for (;;) {
aChar = Read(aErrorCode);
if (aChar < 0) break;
if (aChar == CSS_ESCAPE) {
- aChar = ParseEscape(aErrorCode);
- if (0 < aChar) {
- aIdent.Append(PRUnichar(aChar));
- }
+ ParseAndAppendEscape(aErrorCode, aIdent);
} else if ((aChar > 255) || ((gLexTable[aChar] & IS_IDENT) != 0)) {
aIdent.Append(PRUnichar(aChar));
} else {
@@ -1130,13 +1130,10 @@
break;
}
if (ch == CSS_ESCAPE) {
- ch = ParseEscape(aErrorCode);
- if (ch < 0) {
- return PR_FALSE;
- }
+ ParseAndAppendEscape(aErrorCode, aToken.mIdent);
}
- if (0 < ch) {
- aToken.mIdent.Append(PRUnichar(ch));
+ else if (0 < ch) {
+ aToken.mIdent.Append(ch);
}
}
return PR_TRUE;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/layout/style/nsCSSScanner.h
^
|
@@ -198,7 +198,7 @@
PRBool EatWhiteSpace(nsresult& aErrorCode);
PRBool EatNewline(nsresult& aErrorCode);
- PRInt32 ParseEscape(nsresult& aErrorCode);
+ void ParseAndAppendEscape(nsresult& aErrorCode, nsString& aOutput);
PRBool ParseIdent(nsresult& aErrorCode, PRInt32 aChar, nsCSSToken& aResult);
PRBool ParseAtKeyword(nsresult& aErrorCode, PRInt32 aChar,
nsCSSToken& aResult);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/layout/tables/celldata.h
^
|
@@ -40,6 +40,9 @@
#include "nsISupports.h"
#include "nsCoord.h"
+#define MAX_ROWSPAN 8190 // the cellmap can not handle more
+#define MAX_COLSPAN 1000 // limit as IE and opera do
+
class nsTableCellFrame;
/**
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mail/config/version.txt
^
|
@@ -1 +1 @@
-2.0.0.16pre
+2.0.0.18pre
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/addrbook/src/nsVCard.cpp
^
|
@@ -1249,7 +1249,7 @@
VObject* parse_MIME_FromFile(nsInputFileStream *file)
{
VObject *result;
- long startPos;
+ unsigned long startPos;
initLex(0,(unsigned long)-1,file);
startPos = file->tell();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/base/resources/content/msgAccountCentral.xul
^
|
@@ -65,16 +65,16 @@
<script type="application/x-javascript" src="chrome://messenger/content/msgAccountCentral.js"/>
<grid id="acctCentralGrid" flex="1" style="overflow: auto;">
- <columns>
+ <columns id="acctCentralColumns">
<column flex="40" id="acctCentralActionsColumn"/>
<column flex="60" id="acctCentralHelpDataColumn"/>
</columns>
- <rows>
+ <rows id="acctCentralRows">
<row id="acctCentralHeaderRow">
<label id="AccountCentralTitle"/>
</row>
- <separator/>
+ <separator id="acctCentralHeader.separator"/>
<row id="EmailHeader" class="acctCentralTitleRow">
<hbox class="acctCentralRowTitleBox">
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/base/resources/content/msgHdrViewOverlay.js
^
|
@@ -1045,7 +1045,18 @@
function CanDetachAttachments()
{
var uri = GetLoadedMessage();
- return !IsNewsMessage(uri) && (!IsImapMessage(uri) || CheckOnline());
+ var canDetach = !IsNewsMessage(uri) && (!IsImapMessage(uri) || CheckOnline());
+ if (canDetach && ("content-type" in currentHeaderData))
+ canDetach = !ContentTypeIsSMIME(currentHeaderData["content-type"].headerValue);
+ return canDetach;
+}
+
+/** Return true if the content type is an S/MIME one. */
+function ContentTypeIsSMIME(contentType)
+{
+ // S/MIME is application/pkcs7-mime and application/pkcs7-signature
+ // - also match application/x-pkcs7-mime and application/x-pkcs7-signature.
+ return /application\/(x-)?pkcs7-(mime|signature)/.test(contentType);
}
function onShowAttachmentContextMenu()
@@ -1058,13 +1069,34 @@
var saveMenu = document.getElementById('context-saveAttachment');
var detachMenu = document.getElementById('context-detachAttachment');
var deleteMenu = document.getElementById('context-deleteAttachment');
+ var saveAllMenu = document.getElementById('context-saveAllAttachments');
var detachAllMenu = document.getElementById('context-detachAllAttachments');
var deleteAllMenu = document.getElementById('context-deleteAllAttachments');
+
var canDetach = CanDetachAttachments();
- var canOpen = false;
- for (var i = 0; i < selectedAttachments.length && !canOpen; i++)
- canOpen = selectedAttachments[i].attachment.contentType != 'text/x-moz-deleted';
- if (canOpen && selectedAttachments.length == 1)
+ var deletedAmongSelected = false;
+ var detachedAmongSelected = false;
+ var anyDeleted = false; // at least one deleted attachment in the list
+ var anyDetached = false; // at least one detached attachment in the list
+
+ // Check if one or more of the selected attachments are deleted.
+ for (var i = 0; i < selectedAttachments.length && !deletedAmongSelected; i++)
+ deletedAmongSelected =
+ (selectedAttachments[i].attachment.contentType == 'text/x-moz-deleted');
+
+ // Check if one or more of the selected attachments are detached.
+ for (var i = 0; i < selectedAttachments.length && !detachedAmongSelected; i++)
+ detachedAmongSelected = selectedAttachments[i].attachment.isExternalAttachment;
+
+ // Check if any attachments are deleted.
+ for (var i = 0; i < currentAttachments.length && !anyDeleted; i++)
+ anyDeleted = (currentAttachments[i].contentType == 'text/x-moz-deleted');
+
+ // Check if any attachments are detached.
+ for (var i = 0; i < currentAttachments.length && !anyDetached; i++)
+ anyDetached = currentAttachments[i].isExternalAttachment;
+
+ if (!deletedAmongSelected && selectedAttachments.length == 1)
{
openMenu.removeAttribute('disabled');
viewMenu.removeAttribute('disabled');
@@ -1074,34 +1106,15 @@
openMenu.setAttribute('disabled', true);
viewMenu.setAttribute('disabled', true);
}
- if (canOpen)
- {
- saveMenu.removeAttribute('disabled');
- }
- else
- {
- saveMenu.setAttribute('disabled', true);
- }
- if (canDetach && canOpen)
- {
- detachMenu.removeAttribute('disabled');
- deleteMenu.removeAttribute('disabled');
- }
- else
- {
- detachMenu.setAttribute('disabled', 'true');
- deleteMenu.setAttribute('disabled', 'true');
- }
- if (canDetach)
- {
- detachAllMenu.removeAttribute('disabled');
- deleteAllMenu.removeAttribute('disabled');
- }
- else
- {
- detachAllMenu.setAttribute('disabled', 'true');
- deleteAllMenu.setAttribute('disabled', 'true');
- }
+
+ saveMenu.setAttribute('disabled', deletedAmongSelected);
+ detachMenu.setAttribute('disabled', !canDetach || deletedAmongSelected
+ || detachedAmongSelected);
+ deleteMenu.setAttribute('disabled', !canDetach || deletedAmongSelected
+ || detachedAmongSelected);
+ saveAllMenu.setAttribute('disabled', anyDeleted);
+ detachAllMenu.setAttribute('disabled', !canDetach || anyDeleted || anyDetached);
+ deleteAllMenu.setAttribute('disabled', !canDetach || anyDeleted || anyDetached);
}
// this is our onclick handler for the attachment list.
@@ -1216,26 +1229,25 @@
// First clear out the old view...
ClearAttachmentMenu(popup);
+ var canDetachOrDeleteAll = CanDetachAttachments();
+
for (index in currentAttachments)
{
++attachmentIndex;
addAttachmentToPopup(popup, currentAttachments[index], attachmentIndex);
+ if (canDetachOrDeleteAll &&
+ (currentAttachments[index].isExternalAttachment ||
+ currentAttachments[index].contentType == 'text/x-moz-deleted'))
+ canDetachOrDeleteAll = false;
}
gBuildAttachmentPopupForCurrentMsg = false;
var detachAllMenu = document.getElementById('file-detachAllAttachments');
var deleteAllMenu = document.getElementById('file-deleteAllAttachments');
- if (CanDetachAttachments())
- {
- detachAllMenu.removeAttribute('disabled');
- deleteAllMenu.removeAttribute('disabled');
- }
- else
- {
- detachAllMenu.setAttribute('disabled', 'true');
- deleteAllMenu.setAttribute('disabled', 'true');
- }
+
+ detachAllMenu.setAttribute('disabled', !canDetachOrDeleteAll);
+ deleteAllMenu.setAttribute('disabled', !canDetachOrDeleteAll);
}
// Public method used to clear the file attachment menu
@@ -1291,8 +1303,8 @@
function FillAttachmentItemPopup(event)
{
- var canDetach = CanDetachAttachments();
var openpopup = event.target;
+ var canDetach = CanDetachAttachments() && !openpopup.attachment.isExternalAttachment;
openpopup.removeEventListener('popupshowing', FillAttachmentItemPopup, false);
var menuitementry = document.getElementById("context-openAttachment").cloneNode(false);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/base/resources/content/widgetglue.js
^
|
@@ -274,6 +274,11 @@
function RebuildSummaryFile(msgFolder)
{
+ if (msgFolder.locked)
+ {
+ msgFolder.throwAlertMsg("operationFailedFolderBusy", msgWindow);
+ return;
+ }
var msgDB = msgFolder.getMsgDatabase(msgWindow);
msgDB.summaryValid = false;
msgFolder.ForceDBClosed();
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/base/src/nsMsgDBView.cpp
^
|
@@ -1718,7 +1718,7 @@
nsAutoString keyString;
nsMsgKey key;
msgHdr->GetMessageKey(&key);
- keyString.AppendInt(key);
+ keyString.AppendInt((PRInt64)key);
aValue.Assign(keyString);
}
default:
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/base/src/nsMsgQuickSearchDBView.cpp
^
|
@@ -264,7 +264,8 @@
PRUint32 numBadHits;
if (m_db)
{
- m_db->RefreshCache(searchUri, m_hdrHits.Count(), keyArray.GetArray(), &numBadHits, &staleHits);
+ nsresult rv = m_db->RefreshCache(searchUri, m_hdrHits.Count(), keyArray.GetArray(), &numBadHits, &staleHits);
+ NS_ENSURE_SUCCESS(rv, rv);
for (i = 0; i < numBadHits; i++)
{
nsMsgViewIndex staleHitIndex = FindKey(staleHits[i], PR_TRUE);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/db/msgdb/src/nsMailDatabase.cpp
^
|
@@ -255,7 +255,7 @@
MsgFlags flag, nsIOFileStream **ppFileStream)
{
static char buf[50];
- PRInt32 folderStreamPos = 0; //saves the folderStream pos in case we are sharing the stream with other code
+ PRUint32 folderStreamPos = 0; //saves the folderStream pos in case we are sharing the stream with other code
nsIOFileStream *fileStream = (m_folderStream) ? m_folderStream : *ppFileStream;
//#ifdef GET_FILE_STUFF_TOGETHER
#ifdef XP_MAC
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/db/msgdb/src/nsMsgOfflineImapOperation.cpp
^
|
@@ -223,26 +223,8 @@
NS_IMETHODIMP nsMsgOfflineImapOperation::AddKeywordToAdd(const char * aKeyword)
{
+ SetOperation(kAddKeywords);
return AddKeyword(aKeyword, m_keywordsToAdd, PROP_KEYWORD_ADD, m_keywordsToRemove, PROP_KEYWORD_REMOVE);
- nsACString::const_iterator start, end;
- if (!MsgFindKeyword(nsDependentCString(aKeyword), m_keywordsToAdd, start, end))
- {
- if (!m_keywordsToAdd.IsEmpty())
- m_keywordsToAdd.Append(' ');
- m_keywordsToAdd.Append(aKeyword);
- }
- // if the keyword we're adding was in the list of keywords to remove,
- // cut it from that list.
- nsACString::const_iterator removeStart, removeEnd;
- if (MsgFindKeyword(nsDependentCString(aKeyword), m_keywordsToRemove, removeStart, removeEnd))
- {
- nsACString::const_iterator saveStart;
- m_keywordsToRemove.BeginReading(saveStart);
- m_keywordsToRemove.Cut(Distance(saveStart, removeStart), Distance(removeStart, removeEnd));
- m_mdb->SetProperty(m_mdbRow, PROP_KEYWORD_REMOVE, m_keywordsToRemove.get());
- }
- SetOperation(kAddKeywords);
- return m_mdb->SetProperty(m_mdbRow, PROP_KEYWORD_ADD, m_keywordsToAdd.get());
}
NS_IMETHODIMP nsMsgOfflineImapOperation::GetKeywordsToRemove(char * *aKeywords)
@@ -273,12 +255,12 @@
removeList.Cut(Distance(saveStart, addStart), Distance(addStart, addEnd));
m_mdb->SetProperty(m_mdbRow, removeProp, removeList.get());
}
- SetOperation(kRemoveKeywords);
return m_mdb->SetProperty(m_mdbRow, addProp, addList.get());
}
NS_IMETHODIMP nsMsgOfflineImapOperation::AddKeywordToRemove(const char * aKeyword)
{
+ SetOperation(kRemoveKeywords);
return AddKeyword(aKeyword, m_keywordsToRemove, PROP_KEYWORD_REMOVE, m_keywordsToAdd, PROP_KEYWORD_ADD);
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/import/eudora/src/nsEudoraWin32.cpp
^
|
@@ -942,7 +942,19 @@
if (mimeType.IsEmpty())
mimeType = "application/octet-stream";
- aAttachmentName = name; // use the leaf name of the attachment file url as the attachment name
+ // Convert description to unicode.
+ nsCOMPtr<nsIImportService> impSvc = do_GetService(NS_IMPORTSERVICE_CONTRACTID);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get import service");
+ if (NS_SUCCEEDED(rv)) {
+ nsAutoString description;
+ rv = impSvc->SystemStringToUnicode(name.get(), description);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to convert system string to unicode");
+ if (NS_SUCCEEDED(rv))
+ aAttachmentName = NS_ConvertUTF16toUTF8(description);
+ }
+
+ if (aAttachmentName.IsEmpty())
+ aAttachmentName = name;
return( NS_OK);
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/import/src/ImportOutFile.cpp
^
|
@@ -278,7 +278,7 @@
}
if (markerID < kMaxMarkers) {
- PRInt32 pos = 0;
+ PRUint32 pos = 0;
nsresult rv;
if (m_pFile) {
rv = m_pFile->Tell( &pos);
@@ -307,7 +307,7 @@
if (!Flush())
return( PR_FALSE);
nsresult rv;
- PRInt32 pos;
+ PRUint32 pos;
rv = m_pFile->Tell( &pos);
if (NS_FAILED( rv))
return( PR_FALSE);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/import/text/src/nsTextAddress.cpp
^
|
@@ -86,7 +86,7 @@
return( rv);
}
- PRInt32 loc;
+ PRUint32 loc;
PRInt32 lineLen = 0;
PRBool skipRecord = PR_FALSE;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/local/src/nsLocalMailFolder.cpp
^
|
@@ -4071,7 +4071,7 @@
while (!done)
{
lineBuff[0] = '\0';
- PRInt32 lineStartPos = fileStream->tell();
+ PRUint32 lineStartPos = fileStream->tell();
// readLine won't return line termination chars.
if (fileStream->readline(lineBuff, sizeof(lineBuff)))
{
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/local/src/nsParseMailbox.cpp
^
|
@@ -2160,7 +2160,7 @@
}
nsresult nsParseNewMailState::AppendMsgFromFile(nsIOFileStream *fileStream,
- PRInt32 offset, PRUint32 length,
+ PRUint32 offset, PRUint32 length,
nsFileSpec &destFileSpec)
{
fileStream->seek(PR_SEEK_SET, offset);
@@ -2176,7 +2176,7 @@
}
destFile->seek(PR_SEEK_END, 0);
- PRInt32 newMsgPos = destFile->tell();
+ PRUint32 newMsgPos = destFile->tell();
if (!m_ibuffer)
m_ibuffer_size = 10240;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/local/src/nsParseMailbox.h
^
|
@@ -255,7 +255,7 @@
void GetMsgWindow(nsIMsgWindow **aMsgWindow);
nsresult EndMsgDownload();
- nsresult AppendMsgFromFile(nsIOFileStream *fileStream, PRInt32 offset,
+ nsresult AppendMsgFromFile(nsIOFileStream *fileStream, PRUint32 offset,
PRUint32 length, nsFileSpec &destFileSpec);
virtual void ApplyFilters(PRBool *pMoved, nsIMsgWindow *msgWindow,
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/local/src/nsPop3Sink.h
^
|
@@ -73,7 +73,7 @@
nsresult HandleTempDownloadFailed(nsIMsgWindow *msgWindow);
PRBool m_authed;
- PRInt64 m_msgOffset;
+ PRUint32 m_msgOffset;
char* m_accountUrl;
PRUint32 m_biffState;
PRInt32 m_numNewMessages;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/mailnews/news/src/nsNNTPProtocol.cpp
^
|
@@ -4103,7 +4103,6 @@
char *subject = nsnull;
char *newsgroups = nsnull;
char *distribution = nsnull;
- char *other_random_headers = nsnull;
char *body = nsnull;
cancelInfoEntry cancelInfo;
PRBool requireConfirmationForCancel = PR_TRUE;
@@ -4153,7 +4152,6 @@
L = PL_strlen (id);
subject = (char *) PR_Malloc (L + 20);
- other_random_headers = (char *) PR_Malloc (L + 20);
body = (char *) PR_Malloc (PL_strlen (XP_AppCodeName) + 100);
nsXPIDLString alertText;
@@ -4161,6 +4159,9 @@
PRInt32 confirmCancelResult = 0;
+ // A little early to declare, but the goto causes problems
+ nsCAutoString otherHeaders;
+
/* Make sure that this loser isn't cancelling someone else's posting.
Yes, there are occasionally good reasons to do so. Those people
capable of making that decision (news admins) have other tools with
@@ -4228,7 +4229,7 @@
goto FAIL;
}
- if (!subject || !other_random_headers || !body)
+ if (!subject || !body)
{
status = MK_OUT_OF_MEMORY;
failure = PR_TRUE;
@@ -4238,13 +4239,13 @@
PL_strcpy (subject, "cancel ");
PL_strcat (subject, id);
- PL_strcpy (other_random_headers, "Control: cancel ");
- PL_strcat (other_random_headers, id);
- PL_strcat (other_random_headers, CRLF);
+ otherHeaders.AppendLiteral("Control: cancel ");
+ otherHeaders += id;
+ otherHeaders.AppendLiteral(CRLF);
if (distribution) {
- PL_strcat (other_random_headers, "Distribution: ");
- PL_strcat (other_random_headers, distribution);
- PL_strcat (other_random_headers, CRLF);
+ otherHeaders.AppendLiteral("Distribution: ");
+ otherHeaders += distribution;
+ otherHeaders.AppendLiteral(CRLF);
}
PL_strcpy (body, "This message was cancelled from within ");
@@ -4262,12 +4263,12 @@
"Newsgroups: %s" CRLF
"Subject: %s" CRLF
"References: %s" CRLF
- "%s" /* other_random_headers, already with CRLF */
+ "%s" /* otherHeaders, already with CRLF */
CRLF /* body separator */
"%s" /* body, already with CRLF */
"." CRLF, /* trailing message terminator "." */
cancelInfo.from, newsgroups, subject, id,
- other_random_headers, body);
+ otherHeaders.get(), body);
nsCOMPtr<nsIMsgMailNewsUrl> mailnewsurl = do_QueryInterface(m_runningURL);
if (mailnewsurl)
@@ -4314,7 +4315,6 @@
PR_Free (subject);
PR_Free (newsgroups);
PR_Free (distribution);
- PR_Free (other_random_headers);
PR_Free (body);
return status;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libjar/nsJAR.cpp
^
|
@@ -1205,6 +1205,7 @@
NS_IMETHODIMP
nsZipReaderCache::GetZip(nsIFile* zipFile, nsIZipReader* *result)
{
+ NS_ENSURE_ARG_POINTER(zipFile);
nsresult rv;
nsAutoLock lock(mLock);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/decoders/xbm/nsXBMDecoder.cpp
^
|
@@ -219,6 +219,8 @@
return NS_ERROR_OUT_OF_MEMORY;
}
+ memset(mAlphaRow, 0, abpr);
+
mState = RECV_SEEK;
mCurRow = 0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/public/imgIRequest.idl
^
|
@@ -80,6 +80,11 @@
*/
readonly attribute unsigned long imageStatus;
+ /**
+ * The URI the image load was started with. Note that this might not be the
+ * actual URI for the image (e.g. if HTTP redirects happened during the
+ * load).
+ */
readonly attribute nsIURI URI;
readonly attribute imgIDecoderObserver decoderObserver;
@@ -95,3 +100,21 @@
imgIRequest clone(in imgIDecoderObserver aObserver);
};
+/**
+ * Extension to the imgIRequest interface - only for 1.8 branch, not present in
+ * any later release.
+ *
+ * @author Joe Drew <joe@mozilla.com>
+ * @version 0.1
+ * @see imgIRequest
+ */
+[scriptable, uuid(a6f7785d-cb0c-4db7-95ea-c8ed520da98b)]
+interface imgIRequest_MOZILLA_1_8_BRANCH : nsISupports
+{
+ /**
+ * The URI the image load currently has, after following redirects, etc.
+ * Contrast with @imgIRequest::URI.
+ */
+ readonly attribute nsIURI currentURI;
+};
+
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/src/imgRequest.cpp
^
|
@@ -72,10 +72,11 @@
PRLogModuleInfo *gImgLog = PR_NewLogModule("imgRequest");
#endif
-NS_IMPL_THREADSAFE_ISUPPORTS6(imgRequest, imgILoad,
+NS_IMPL_THREADSAFE_ISUPPORTS8(imgRequest, imgILoad,
imgIDecoderObserver, imgIContainerObserver,
nsIStreamListener, nsIRequestObserver,
- nsISupportsWeakReference)
+ nsISupportsWeakReference, nsIChannelEventSink,
+ nsIInterfaceRequestor)
imgRequest::imgRequest() :
mObservers(0),
@@ -106,6 +107,7 @@
return NS_ERROR_OUT_OF_MEMORY;
mChannel = aChannel;
+ mChannel->SetNotificationCallbacks(this);
/* set our loading flag to true here.
Setting it here lets checks to see if the load is in progress
@@ -311,6 +313,23 @@
return NS_ERROR_FAILURE;
}
+nsresult
+imgRequest::GetCurrentURI(nsIURI **aURI)
+{
+ LOG_FUNC(gImgLog, "imgRequest::GetCurrentURI");
+
+ if (mChannel)
+ return mChannel->GetURI(aURI);
+
+ if (mCurrentURI) {
+ *aURI = mCurrentURI;
+ NS_ADDREF(*aURI);
+ return NS_OK;
+ }
+
+ return NS_ERROR_FAILURE;
+}
+
void imgRequest::RemoveFromCache()
{
LOG_SCOPE(gImgLog, "imgRequest::RemoveFromCache");
@@ -740,6 +759,8 @@
// XXXldb What if this is a non-last part of a multipart request?
if (mChannel) {
mChannel->GetOriginalURI(getter_AddRefs(mURI));
+ mChannel->GetURI(getter_AddRefs(mCurrentURI));
+ mChannel->SetNotificationCallbacks(nsnull);
mChannel = nsnull; // we no longer need the channel
}
@@ -931,3 +952,40 @@
{
imgLoader::GetMimeTypeFromContent(buf, len, mContentType);
}
+
+/** nsIInterfaceRequestor methods **/
+
+NS_IMETHODIMP
+imgRequest::GetInterface(const nsIID & aIID, void **aResult)
+{
+ return QueryInterface(aIID, aResult);
+}
+
+/** nsIChannelEventSink methods **/
+
+/* void onChannelRedirect (in nsIChannel oldChannel, in nsIChannel newChannel, in unsigned long flags); */
+NS_IMETHODIMP
+imgRequest::OnChannelRedirect(nsIChannel *oldChannel, nsIChannel *newChannel, PRUint32 flags)
+{
+ NS_ASSERTION(mChannel, "Got an OnChannelRedirect after we nulled out mChannel!");
+ NS_ASSERTION(mChannel == oldChannel, "Got a channel redirect for an unknown channel!");
+ NS_ASSERTION(newChannel, "Got a redirect to a NULL channel!");
+
+ RemoveFromCache();
+
+ nsCOMPtr<nsIURI> uri;
+ if (NS_SUCCEEDED(newChannel->GetURI(getter_AddRefs(uri))) && uri)
+ mCurrentURI = uri;
+
+ oldChannel->SetNotificationCallbacks(nsnull);
+ mChannel = newChannel;
+ mChannel->SetNotificationCallbacks(this);
+
+ // If we don't still have a cache entry, we don't want to refresh the cache.
+ if (uri && mCacheEntry) {
+ imgCache::Put(uri, this, getter_AddRefs(mCacheEntry));
+ }
+
+ return NS_OK;
+}
+
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/src/imgRequest.h
^
|
@@ -48,6 +48,8 @@
#include "nsICacheEntryDescriptor.h"
#include "nsIChannel.h"
+#include "nsIChannelEventSink.h"
+#include "nsIInterfaceRequestor.h"
#include "nsIProperties.h"
#include "nsIStreamListener.h"
#include "nsIURI.h"
@@ -73,7 +75,9 @@
class imgRequest : public imgILoad,
public imgIDecoderObserver,
public nsIStreamListener,
- public nsSupportsWeakReference
+ public nsSupportsWeakReference,
+ public nsIChannelEventSink,
+ public nsIInterfaceRequestor
{
public:
imgRequest();
@@ -115,6 +119,7 @@
inline nsresult GetResultFromImageStatus(PRUint32 aStatus) const;
void Cancel(nsresult aStatus);
nsresult GetURI(nsIURI **aURI);
+ nsresult GetCurrentURI(nsIURI **aURI);
void RemoveFromCache();
inline const char *GetMimeType() const {
return mContentType.get();
@@ -141,10 +146,13 @@
NS_DECL_IMGICONTAINEROBSERVER
NS_DECL_NSISTREAMLISTENER
NS_DECL_NSIREQUESTOBSERVER
+ NS_DECL_NSICHANNELEVENTSINK
+ NS_DECL_NSIINTERFACEREQUESTOR
private:
nsCOMPtr<nsIChannel> mChannel;
nsCOMPtr<nsIURI> mURI;
+ nsCOMPtr<nsIURI> mCurrentURI;
nsCOMPtr<imgIContainer> mImage;
nsCOMPtr<imgIDecoder> mDecoder;
nsCOMPtr<nsIProperties> mProperties;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/src/imgRequestProxy.cpp
^
|
@@ -56,7 +56,9 @@
#include "nspr.h"
-NS_IMPL_THREADSAFE_ISUPPORTS3(imgRequestProxy, imgIRequest, nsIRequest,
+NS_IMPL_THREADSAFE_ISUPPORTS4(imgRequestProxy, imgIRequest,
+ imgIRequest_MOZILLA_1_8_BRANCH,
+ nsIRequest,
nsISupportsPriority)
imgRequestProxy::imgRequestProxy() :
@@ -532,3 +534,14 @@
}
}
+/* imgIRequest_MOZILLA_1_8_BRANCH interface */
+
+/* readonly attribute nsIURI currentURI; */
+NS_IMETHODIMP imgRequestProxy::GetCurrentURI(nsIURI **aURI)
+{
+ if (!mOwner)
+ return NS_ERROR_FAILURE;
+
+ nsAutoLock lock(mLock);
+ return mOwner->GetCurrentURI(aURI);
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpr0n/src/imgRequestProxy.h
^
|
@@ -60,11 +60,12 @@
{0x8f, 0x65, 0x9c, 0x46, 0x2e, 0xe2, 0xbc, 0x95} \
}
-class imgRequestProxy : public imgIRequest, public nsISupportsPriority
+class imgRequestProxy : public imgIRequest, public imgIRequest_MOZILLA_1_8_BRANCH, public nsISupportsPriority
{
public:
NS_DECL_ISUPPORTS
NS_DECL_IMGIREQUEST
+ NS_DECL_IMGIREQUEST_MOZILLA_1_8_BRANCH
NS_DECL_NSIREQUEST
NS_DECL_NSISUPPORTSPRIORITY
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/libpref/src/init/all.js
^
|
@@ -315,6 +315,8 @@
pref("capability.policy.mailnews.*.getAttribute", "noAccess");
pref("capability.policy.mailnews.HTMLDivElement.getAttribute", "sameOrigin");
pref("capability.policy.mailnews.*.getAttributeNS", "noAccess");
+pref("capability.policy.mailnews.*.getAttributeNode", "noAccess");
+pref("capability.policy.mailnews.*.getAttributeNodeNS", "noAccess");
pref("capability.policy.mailnews.*.getNamedItem", "noAccess");
pref("capability.policy.mailnews.*.getNamedItemNS", "noAccess");
pref("capability.policy.mailnews.*.host.get", "noAccess");
@@ -328,11 +330,13 @@
pref("capability.policy.mailnews.*.src.get", "noAccess");
pref("capability.policy.mailnews.*.substringData.get", "noAccess");
pref("capability.policy.mailnews.*.text.get", "noAccess");
+pref("capability.policy.mailnews.*.textContent", "noAccess");
pref("capability.policy.mailnews.*.title.get", "noAccess");
pref("capability.policy.mailnews.DOMException.toString", "noAccess");
pref("capability.policy.mailnews.HTMLAnchorElement.toString", "noAccess");
pref("capability.policy.mailnews.HTMLDocument.domain", "noAccess");
pref("capability.policy.mailnews.HTMLDocument.URL", "noAccess");
+pref("capability.policy.mailnews.*.documentURI", "noAccess");
pref("capability.policy.mailnews.Location.toString", "noAccess");
pref("capability.policy.mailnews.Range.toString", "noAccess");
pref("capability.policy.mailnews.Window.blur", "noAccess");
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/ns4xPlugin.cpp
^
|
@@ -1072,6 +1072,8 @@
if (!npp)
return NPERR_INVALID_INSTANCE_ERROR;
+ PluginDestructionGuard guard(npp);
+
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
NS_ASSERTION(inst != NULL, "null instance");
@@ -1120,6 +1122,8 @@
("NPN_GetURL: npp=%p, target=%s, url=%s\n", (void *)npp, target,
relativeURL));
+ PluginDestructionGuard guard(npp);
+
// Block Adobe Acrobat from loading URLs that are not http:, https:,
// or ftp: URLs if the given target is null.
if (target == nsnull && relativeURL &&
@@ -1149,6 +1153,8 @@
("NPN_GetURLNotify: npp=%p, target=%s, notify=%p, url=%s\n", (void*)npp,
target, notifyData, relativeURL));
+ PluginDestructionGuard guard(npp);
+
return MakeNew4xStreamInternal (npp, relativeURL, target,
eNPPStreamTypeInternal_Get, PR_TRUE,
notifyData);
@@ -1166,6 +1172,8 @@
(void*)npp, target, len, file, notifyData, relativeURL,
buf));
+ PluginDestructionGuard guard(npp);
+
return MakeNew4xStreamInternal(npp, relativeURL, target,
eNPPStreamTypeInternal_Post, PR_TRUE,
notifyData, len, buf, file);
@@ -1182,9 +1190,11 @@
"buf=%s\n",
(void*)npp, target, file, len, relativeURL, buf));
- return MakeNew4xStreamInternal(npp, relativeURL, target,
- eNPPStreamTypeInternal_Post, PR_FALSE, nsnull,
- len, buf, file);
+ PluginDestructionGuard guard(npp);
+
+ return MakeNew4xStreamInternal(npp, relativeURL, target,
+ eNPPStreamTypeInternal_Post, PR_FALSE, nsnull,
+ len, buf, file);
}
@@ -1248,6 +1258,9 @@
NPError err = NPERR_INVALID_INSTANCE_ERROR;
if (npp && npp->ndata) {
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
+
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIOutputStream> stream;
nsCOMPtr<nsIPluginInstancePeer> peer;
if (NS_SUCCEEDED(inst->GetPeer(getter_AddRefs(peer))) &&
@@ -1281,6 +1294,8 @@
if (!npp)
return -1;
+ PluginDestructionGuard guard(npp);
+
ns4xStreamWrapper* wrapper = (ns4xStreamWrapper*) pstream->ndata;
NS_ASSERTION(wrapper != NULL, "null stream");
@@ -1312,6 +1327,8 @@
if (!npp)
return NPERR_INVALID_INSTANCE_ERROR;
+ PluginDestructionGuard guard(npp);
+
nsCOMPtr<nsIPluginStreamListener> listener =
do_QueryInterface((nsISupports *)pstream->ndata);
@@ -1356,6 +1373,8 @@
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIPluginInstancePeer> peer;
if (NS_SUCCEEDED(inst->GetPeer(getter_AddRefs(peer))) && peer) {
peer->ShowStatus(message);
@@ -1414,6 +1433,8 @@
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIPluginInstancePeer> peer;
if (NS_SUCCEEDED(inst->GetPeer(getter_AddRefs(peer))) && peer) {
nsCOMPtr<nsIWindowlessPluginInstancePeer> wpeer(do_QueryInterface(peer));
@@ -1440,6 +1461,8 @@
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIPluginInstancePeer> peer;
if (NS_SUCCEEDED(inst->GetPeer(getter_AddRefs(peer))) && peer) {
nsCOMPtr<nsIWindowlessPluginInstancePeer> wpeer(do_QueryInterface(peer));
@@ -1464,6 +1487,8 @@
nsIPluginInstance *inst = (nsIPluginInstance *) npp->ndata;
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIPluginInstancePeer> peer;
if (NS_SUCCEEDED(inst->GetPeer(getter_AddRefs(peer))) && peer) {
nsCOMPtr<nsIWindowlessPluginInstancePeer> wpeer(do_QueryInterface(peer));
@@ -1481,6 +1506,8 @@
ns4xPluginInstance *inst = (ns4xPluginInstance *)npp->ndata;
NS_ENSURE_TRUE(inst, nsnull);
+ PluginDestructionGuard guard(inst);
+
nsCOMPtr<nsIPluginInstancePeer> pip;
inst->GetPeer(getter_AddRefs(pip));
nsCOMPtr<nsPIPluginInstancePeer> pp(do_QueryInterface(pip));
@@ -1651,6 +1678,8 @@
return nsnull;
}
+ PluginDestructionGuard guard(npp);
+
if (!aClass) {
NS_ERROR("Null class passed to _createobject()!");
@@ -1672,6 +1701,9 @@
npobj->referenceCount = 1;
}
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("Created NPObject %p, NPClass %p\n", npobj, aClass));
+
return npobj;
}
@@ -1709,9 +1741,15 @@
if (!npp || !npobj || !npobj->_class || !npobj->_class->invoke)
return false;
+ PluginDestructionGuard guard(npp);
+
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_Invoke(npp %p, npobj %p, method %p, args %d\n", npp,
+ npobj, method, argCount));
+
return npobj->_class->invoke(npobj, method, args, argCount, result);
}
@@ -1725,6 +1763,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_InvokeDefault(npp %p, npobj %p, args %d\n", npp,
+ npobj, argCount));
+
return npobj->_class->invokeDefault(npobj, args, argCount, result);
}
@@ -1771,6 +1813,10 @@
nsIPrincipal *principal = nsnull;
// XXX: Get the principal from the security stack (TBD)
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_Evaluate(npp %p, npobj %p, script <<<%s>>>) called\n",
+ npp, npobj, script->utf8characters));
+
nsresult rv = scx->EvaluateStringWithValue(utf16script, obj, principal,
nsnull, 0, nsnull, rval, nsnull);
@@ -1788,6 +1834,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_GetProperty(npp %p, npobj %p, property %p) called\n",
+ npp, npobj, property));
+
return npobj->_class->getProperty(npobj, property, result);
}
@@ -1801,6 +1851,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_SetProperty(npp %p, npobj %p, property %p) called\n",
+ npp, npobj, property));
+
return npobj->_class->setProperty(npobj, property, value);
}
@@ -1813,6 +1867,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_RemoveProperty(npp %p, npobj %p, property %p) called\n",
+ npp, npobj, property));
+
return npobj->_class->removeProperty(npobj, property);
}
@@ -1825,6 +1883,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_HasProperty(npp %p, npobj %p, property %p) called\n",
+ npp, npobj, propertyName));
+
return npobj->_class->hasProperty(npobj, propertyName);
}
@@ -1837,6 +1899,10 @@
NPPExceptionAutoHolder nppExceptionHolder;
NPPAutoPusher nppPusher(npp);
+ NPN_PLUGIN_LOG(PLUGIN_LOG_NOISY,
+ ("NPN_HasMethod(npp %p, npobj %p, property %p) called\n",
+ npp, npobj, methodName));
+
return npobj->_class->hasProperty(npobj, methodName);
}
@@ -1937,6 +2003,8 @@
nsresult res;
+ PluginDestructionGuard guard(npp);
+
switch(variable) {
#if defined(XP_UNIX) && !defined(XP_MACOSX)
case NPNVxDisplay : {
@@ -2119,6 +2187,8 @@
if (inst == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
+ PluginDestructionGuard guard(inst);
+
switch (variable) {
// we should keep backward compatibility with 4x where the
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/ns4xPlugin.h
^
|
@@ -267,11 +267,22 @@
static NPP sCurrentNPP;
};
-class NPPAutoPusher : public NPPStack
+// XXXjst: The NPPAutoPusher stack is a bit redundant now that
+// PluginDestructionGuard exists, and could thus be replaced by code
+// that uses the PluginDestructionGuard list of plugins on the
+// stack. But they're not identical, and to minimize code changes
+// we're keeping both for the moment, and making NPPAutoPusher inherit
+// the PluginDestructionGuard class to avoid having to keep two
+// separate objects on the stack since we always want a
+// PluginDestructionGuard where we use an NPPAutoPusher.
+
+class NPPAutoPusher : public NPPStack,
+ protected PluginDestructionGuard
{
public:
NPPAutoPusher(NPP npp)
- : mOldNPP(sCurrentNPP)
+ : PluginDestructionGuard(npp),
+ mOldNPP(sCurrentNPP)
{
NS_ASSERTION(npp, "Uh, null npp passed to NPPAutoPusher!");
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/ns4xPluginInstance.cpp
^
|
@@ -173,6 +173,8 @@
if(!mInst || !mInst->IsStarted())
return rv;
+ PluginDestructionGuard guard(mInst);
+
const NPPluginFuncs *callbacks = nsnull;
mInst->GetCallbacks(&callbacks);
if(!callbacks)
@@ -217,6 +219,8 @@
if(!mCallNotify || !mInst || !mInst->IsStarted())
return;
+ PluginDestructionGuard guard(mInst);
+
mCallNotify = PR_FALSE; // only do this ONCE and prevent recursion
const NPPluginFuncs *callbacks = nsnull;
@@ -254,6 +258,8 @@
if(!mInst)
return NS_ERROR_FAILURE;
+ PluginDestructionGuard guard(mInst);
+
NPP npp;
const NPPluginFuncs *callbacks = nsnull;
@@ -401,6 +407,8 @@
if (!mInst || !mInst->IsStarted())
return NS_ERROR_FAILURE;
+ PluginDestructionGuard guard(mInst);
+
// Just in case the caller switches plugin info on us.
mStreamInfo = pluginInfo;
@@ -661,6 +669,8 @@
if(!mInst || !mInst->IsStarted())
return NS_ERROR_FAILURE;
+ PluginDestructionGuard guard(mInst);
+
const NPPluginFuncs *callbacks = nsnull;
mInst->GetCallbacks(&callbacks);
if(!callbacks && !callbacks->asfile)
@@ -942,6 +952,12 @@
if(!mStarted)
return NS_OK;
+ // If there's code from this plugin instance on the stack, delay the
+ // destroy.
+ if (PluginDestructionGuard::DelayDestroy(this)) {
+ return NS_OK;
+ }
+
if (fCallbacks->destroy == NULL)
return NS_ERROR_FAILURE; // XXX right error?
@@ -1019,6 +1035,8 @@
nsCOMPtr<nsIPluginTagInfo2> taginfo = do_QueryInterface(peer);
NS_ENSURE_TRUE(taginfo, NS_ERROR_NO_INTERFACE);
+ PluginDestructionGuard guard(this);
+
PRUint16 count = 0;
const char* const* names = nsnull;
const char* const* values = nsnull;
@@ -1400,6 +1418,8 @@
#endif // MOZ_WIDGET
if (fCallbacks->setwindow) {
+ PluginDestructionGuard guard(this);
+
// XXX Turns out that NPPluginWindow and NPWindow are structurally
// identical (on purpose!), so there's no need to make a copy.
@@ -1466,6 +1486,8 @@
{
NS_ENSURE_TRUE(platformPrint, NS_ERROR_NULL_POINTER);
+ PluginDestructionGuard guard(this);
+
NPPrint* thePrint = (NPPrint *)platformPrint;
// to be compatible with the older SDK versions and to match what
@@ -1516,6 +1538,8 @@
if (event == nsnull)
return NS_ERROR_FAILURE;
+ PluginDestructionGuard guard(this);
+
PRInt16 result = 0;
if (fCallbacks->event) {
@@ -1550,6 +1574,7 @@
{
nsresult res = NS_OK;
if(fCallbacks->getvalue && mStarted) {
+ PluginDestructionGuard guard(this);
NS_TRY_SAFE_CALL_RETURN(res,
CallNPP_GetValueProc(fCallbacks->getvalue,
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/nsJSNPRuntime.cpp
^
|
@@ -1313,10 +1313,22 @@
entry->mNPObj = npobj;
entry->mNpp = npp;
+ PRUint32 generation = sNPObjWrappers.generation;
+
// No existing JSObject, create one.
JSObject *obj = ::JS_NewObject(cx, &sNPObjectJSWrapperClass, nsnull, nsnull);
+ if (generation != sNPObjWrappers.generation) {
+ // Reload entry if the JS_NewObject call caused a GC and reallocated
+ // the table (see bug 445229). This is guaranteed to succeed.
+
+ entry = static_cast<NPObjWrapperHashEntry *>
+ (PL_DHashTableOperate(&sNPObjWrappers, npobj, PL_DHASH_LOOKUP));
+ NS_ASSERTION(entry && PL_DHASH_ENTRY_IS_BUSY(entry),
+ "Hashtable didn't find what we just added?");
+ }
+
if (!obj) {
// OOM? Remove the stale entry from the hash.
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/nsPluginHostImpl.cpp
^
|
@@ -273,6 +273,8 @@
nsIFile *nsPluginHostImpl::sPluginTempDir;
+nsPluginHostImpl *gPluginHost = nsnull;
+
////////////////////////////////////////////////////////////////////////
// flat file reg funcs
static
@@ -1882,6 +1884,7 @@
return rv;
// Create a file to save our stream into. Should we scramble the name?
+ filename.Insert(NS_LITERAL_CSTRING("plugin-"), 0);
rv = pluginTmp->AppendNative(filename);
if (NS_FAILED(rv))
return rv;
@@ -2633,6 +2636,10 @@
printf("nsPluginHostImpl dtor\n");
#endif
Destroy();
+
+ if (gPluginHost == this) {
+ gPluginHost = nsnull;
+ }
}
////////////////////////////////////////////////////////////////////////
@@ -2652,14 +2659,17 @@
if (aOuter)
return NS_ERROR_NO_AGGREGATION;
- nsPluginHostImpl* host = new nsPluginHostImpl();
- if (! host)
- return NS_ERROR_OUT_OF_MEMORY;
+ if (!gPluginHost) {
+ gPluginHost = new nsPluginHostImpl();
+ if (!gPluginHost)
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
- nsresult rv;
- NS_ADDREF(host);
- rv = host->QueryInterface(aIID, aResult);
- NS_RELEASE(host);
+ gPluginHost->AddRef();
+ nsresult rv = gPluginHost->QueryInterface(aIID, aResult);
+ // Can't use the macros here since they null out the pointer you
+ // release.
+ gPluginHost->Release();
return rv;
}
@@ -5946,6 +5956,10 @@
NS_IMETHODIMP
nsPluginHostImpl::StopPluginInstance(nsIPluginInstance* aInstance)
{
+ if (PluginDestructionGuard::DelayDestroy(aInstance)) {
+ return NS_OK;
+ }
+
PLUGIN_LOG(PLUGIN_LOG_NORMAL,
("nsPluginHostImpl::StopPluginInstance called instance=%p\n",aInstance));
@@ -6877,3 +6891,160 @@
SetRequest(nsnull);
}
}
+
+
+// Event that does an async destroy of a plugin.
+
+class nsPluginDestroyEvent : public PLEvent,
+ public PRCList
+{
+public:
+ nsPluginDestroyEvent(nsIPluginInstance *aInstance)
+ : mInstance(aInstance)
+ {
+ MOZ_COUNT_CTOR(nsPluginDestroyEvent);
+ PL_InitEvent(this, aInstance, Handle, Destroy);
+
+ PR_INIT_CLIST(this);
+ PR_APPEND_LINK(this, &sEventListHead);
+ }
+
+ ~nsPluginDestroyEvent()
+ {
+ MOZ_COUNT_DTOR(nsPluginDestroyEvent);
+ PR_REMOVE_LINK(this);
+ }
+
+ PR_STATIC_CALLBACK(void*) Handle(PLEvent* aEvent);
+ PR_STATIC_CALLBACK(void) Destroy(PLEvent* aEvent);
+
+protected:
+ nsCOMPtr<nsIPluginInstance> mInstance;
+
+ static PRCList sEventListHead;
+};
+
+// static
+void *
+nsPluginDestroyEvent::Handle(PLEvent* aEvent)
+{
+ nsPluginDestroyEvent* evt =
+ NS_STATIC_CAST(nsPluginDestroyEvent*, aEvent);
+
+ nsCOMPtr<nsIPluginInstance> instance;
+
+ // Null out mInstance to make sure this code in another runnable
+ // will do the right thing even if someone was holding on to this
+ // runnable longer than we expect.
+ instance.swap(evt->mInstance);
+
+ if (PluginDestructionGuard::DelayDestroy(instance)) {
+ // It's still not safe to destroy the plugin, it's now up to the
+ // outermost guard on the stack to take care of the destruction.
+
+ return nsnull;
+ }
+
+ nsPluginDestroyEvent *r =
+ static_cast<nsPluginDestroyEvent*>(PR_NEXT_LINK(&sEventListHead));
+
+ while (r != &sEventListHead) {
+ if (r != evt && r->mInstance == instance) {
+ // There's another event scheduled to tear down
+ // instance. Let it do the job.
+
+ return nsnull;
+ }
+
+ r = static_cast<nsPluginDestroyEvent*>(PR_NEXT_LINK(r));
+ }
+
+ PLUGIN_LOG(PLUGIN_LOG_NORMAL,
+ ("Doing delayed destroy of instance %p\n", instance.get()));
+
+ instance->Stop();
+
+ if (gPluginHost) {
+ gPluginHost->StopPluginInstance(instance);
+ }
+
+ PLUGIN_LOG(PLUGIN_LOG_NORMAL,
+ ("Done with delayed destroy of instance %p\n", instance.get()));
+
+ return nsnull;
+}
+
+// static
+void PR_CALLBACK
+nsPluginDestroyEvent::Destroy(PLEvent* aEvent)
+{
+ nsPluginDestroyEvent* evt =
+ NS_STATIC_CAST(nsPluginDestroyEvent*, aEvent);
+ delete evt;
+}
+
+PRCList nsPluginDestroyEvent::sEventListHead =
+ PR_INIT_STATIC_CLIST(&nsPluginDestroyEvent::sEventListHead);
+
+PRCList PluginDestructionGuard::sListHead =
+ PR_INIT_STATIC_CLIST(&PluginDestructionGuard::sListHead);
+
+PluginDestructionGuard::~PluginDestructionGuard()
+{
+ PR_REMOVE_LINK(this);
+
+ if (mDelayedDestroy) {
+ // We've attempted to destroy the plugin instance we're holding on
+ // to while we were guarding it. Do the actual destroy now, off of
+ // a runnable.
+
+ nsresult rv;
+ nsCOMPtr<nsIEventQueueService> eventQService =
+ do_GetService("@mozilla.org/event-queue-service;1", &rv);
+
+ nsCOMPtr<nsIEventQueue> eventQ;
+ if (eventQService) {
+ rv = eventQService->
+ GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE,
+ getter_AddRefs(eventQ));
+ }
+
+ if (eventQ) {
+ nsPluginDestroyEvent *evt =
+ new nsPluginDestroyEvent(mInstance);
+
+ if (evt) {
+ rv = eventQ->PostEvent(evt);
+
+ if (NS_FAILED(rv)) {
+ PL_DestroyEvent(evt);
+ }
+ }
+ }
+ }
+}
+
+// static
+PRBool
+PluginDestructionGuard::DelayDestroy(nsIPluginInstance *aInstance)
+{
+ NS_ASSERTION(aInstance, "Uh, I need an instance!");
+
+ // Find the first guard on the stack and make it do a delayed
+ // destroy upon destruction.
+
+ PluginDestructionGuard *g =
+ static_cast<PluginDestructionGuard*>(PR_LIST_HEAD(&sListHead));
+
+ while (g != &sListHead) {
+ if (g->mInstance == aInstance) {
+ g->mDelayedDestroy = PR_TRUE;
+
+ return PR_TRUE;
+ }
+
+ g = static_cast<PluginDestructionGuard*>(PR_NEXT_LINK(g));
+ }
+
+ return PR_FALSE;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/modules/plugin/base/src/nsPluginHostImpl.h
^
|
@@ -46,6 +46,9 @@
#include "nsCRT.h"
#include "nsCOMPtr.h"
#include "prlink.h"
+#include "prclist.h"
+#include "npapi.h"
+#include "ns4xPluginInstance.h"
#include "nsIPlugin.h"
#include "nsIPluginTagInfo2.h"
@@ -517,4 +520,38 @@
static nsIFile *sPluginTempDir;
};
+class PluginDestructionGuard : protected PRCList
+{
+public:
+ PluginDestructionGuard(nsIPluginInstance *aInstance)
+ : mInstance(aInstance)
+ {
+ Init();
+ }
+
+ PluginDestructionGuard(NPP npp)
+ : mInstance(npp ? static_cast<ns4xPluginInstance*>(npp->ndata) : nsnull)
+ {
+ Init();
+ }
+
+ ~PluginDestructionGuard();
+
+ static PRBool DelayDestroy(nsIPluginInstance *aInstance);
+
+protected:
+ void Init()
+ {
+ mDelayedDestroy = PR_FALSE;
+
+ PR_INIT_CLIST(this);
+ PR_INSERT_BEFORE(this, &sListHead);
+ }
+
+ nsCOMPtr<nsIPluginInstance> mInstance;
+ PRBool mDelayedDestroy;
+
+ static PRCList sListHead;
+};
+
#endif
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/base/src/nsStandardURL.cpp
^
|
@@ -2258,6 +2258,7 @@
if (mRef.mLen < 0) {
mSpec.Append('#');
+ ++mPath.mLen; // Include the # in the path.
mRef.mPos = mSpec.Length();
mRef.mLen = 0;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/cache/src/nsDiskCacheDevice.cpp
^
|
@@ -453,12 +453,13 @@
*collision = PR_FALSE;
-#if DEBUG /*because we shouldn't be called for active entries */
binding = mBindery.FindActiveBinding(hashNumber);
- NS_ASSERTION(!binding, "FindEntry() called for a bound entry.");
+ if (binding && PL_strcmp(binding->mCacheEntry->Key()->get(), key->get()) != 0) {
+ *collision = PR_TRUE;
+ return nsnull;
+ }
binding = nsnull;
-#endif
-
+
// lookup hash number in cache map
rv = mCacheMap->FindRecord(hashNumber, &record);
if (NS_FAILED(rv)) return nsnull; // XXX log error?
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/dns/src/nsIDNService.cpp
^
|
@@ -151,6 +151,9 @@
/* ACString ConvertUTF8toACE (in AUTF8String input); */
NS_IMETHODIMP nsIDNService::ConvertUTF8toACE(const nsACString & input, nsACString & ace)
{
+ // protect against bogus input
+ NS_ENSURE_TRUE(IsUTF8(input), NS_ERROR_UNEXPECTED);
+
nsresult rv;
NS_ConvertUTF8toUCS2 ustr(input);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/protocol/file/src/Makefile.in
^
|
@@ -51,6 +51,9 @@
mimetype \
pref \
uconv \
+ caps \
+ xpconnect \
+ js \
$(NULL)
CPPSRCS = \
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/protocol/file/src/nsFileChannel.cpp
^
|
@@ -51,6 +51,9 @@
#include "nsIPrefService.h"
#include "nsIPrefBranch.h"
#include "nsURLHelper.h"
+#include "nsIChannelEventSink.h"
+#include "nsIOService.h"
+#include "nsIScriptSecurityManager.h"
static NS_DEFINE_CID(kStreamConverterServiceCID, NS_STREAMCONVERTERSERVICE_CID);
static NS_DEFINE_CID(kStreamTransportServiceCID, NS_STREAMTRANSPORTSERVICE_CID);
@@ -64,6 +67,7 @@
, mStatus(NS_OK)
, mIsDir(PR_FALSE)
, mUploading(PR_FALSE)
+ , mWaitingOnAsyncRedirect(PR_FALSE)
{
}
@@ -77,6 +81,79 @@
return rv;
}
+static PLDHashOperator
+CopyProperties(const nsAString &key, nsIVariant *data, void *closure)
+{
+ nsIWritablePropertyBag *bag =
+ static_cast<nsIWritablePropertyBag *>(closure);
+
+ bag->SetProperty(key, data);
+ return PL_DHASH_NEXT;
+}
+
+void
+nsFileChannel::HandleRedirect(nsIChannel* newChannel)
+{
+ if (NS_SUCCEEDED(mStatus)) {
+ nsIURI* originalURI = mOriginalURI;
+ if (!originalURI)
+ originalURI = mURL;
+
+ newChannel->SetOriginalURI(originalURI);
+ newChannel->SetLoadGroup(mLoadGroup);
+ newChannel->SetNotificationCallbacks(mCallbacks);
+ newChannel->SetLoadFlags(mLoadFlags | LOAD_REPLACE);
+
+ nsCOMPtr<nsIWritablePropertyBag> bag = do_QueryInterface(newChannel);
+ if (bag)
+ mPropertyHash.EnumerateRead(CopyProperties, bag.get());
+
+ // Notify consumer, giving chance to cancel redirect.
+ PRInt32 redirectFlags = nsIChannelEventSink::REDIRECT_INTERNAL;
+
+ // Global observers. These come first so that other observers don't see
+ // redirects that get aborted for security reasons anyway.
+ nsresult rv = gIOService->OnChannelRedirect(this, newChannel,
+ redirectFlags);
+ if (NS_SUCCEEDED(rv)) {
+ nsCOMPtr<nsIChannelEventSink> channelEventSink;
+ // Give our consumer a chance to observe/block this redirect.
+ NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup,
+ channelEventSink);
+ if (channelEventSink) {
+ rv = channelEventSink->OnChannelRedirect(this, newChannel,
+ redirectFlags);
+ if (NS_SUCCEEDED(rv)) {
+ rv = newChannel->AsyncOpen(mListener, mListenerContext);
+ }
+ }
+ }
+
+ if (NS_FAILED(rv))
+ Cancel(rv);
+ }
+
+ mWaitingOnAsyncRedirect = PR_FALSE;
+
+ if (NS_FAILED(mStatus)) {
+ // Notify our consumer ourselves
+ mListener->OnStartRequest(this, mListenerContext);
+ mListener->OnStopRequest(this, mListenerContext, mStatus);
+ } else {
+ // close down this channel
+ Cancel(NS_BINDING_REDIRECTED);
+ }
+
+ mListener = nsnull;
+ mListenerContext = nsnull;
+
+ if (mLoadGroup)
+ mLoadGroup->RemoveRequest(this, nsnull, mStatus);
+
+ // Drop notification callbacks to prevent cycles.
+ mCallbacks = nsnull;
+}
+
nsresult
nsFileChannel::GetClonedFile(nsIFile **result)
{
@@ -102,13 +179,15 @@
if (NS_FAILED(rv)) return rv;
// we accept that this might result in a disk hit to stat the file
- rv = file->IsDirectory(&mIsDir);
+ PRBool isDir;
+ rv = file->IsDirectory(&isDir);
if (NS_FAILED(rv)) {
// canonicalize error message
if (rv == NS_ERROR_FILE_TARGET_DOES_NOT_EXIST)
rv = NS_ERROR_FILE_NOT_FOUND;
return rv;
}
+ mIsDir = isDir;
if (mIsDir)
rv = nsDirectoryIndexStream::Create(file, getter_AddRefs(mStream));
@@ -153,7 +232,7 @@
NS_IMETHODIMP
nsFileChannel::IsPending(PRBool *result)
{
- *result = (mRequest != nsnull);
+ *result = mRequest || mWaitingOnAsyncRedirect;
return NS_OK;
}
@@ -170,9 +249,10 @@
NS_IMETHODIMP
nsFileChannel::Cancel(nsresult status)
{
- NS_ENSURE_TRUE(mRequest, NS_ERROR_UNEXPECTED);
mStatus = status;
- return mRequest->Cancel(status);
+ if (mRequest)
+ return mRequest->Cancel(status);
+ return NS_OK;
}
NS_IMETHODIMP
@@ -368,14 +448,102 @@
return NS_OK;
}
+nsFileChannel::RedirectRunnable::RedirectRunnable(nsFileChannel* originalChannel,
+ nsIChannel* newChannel) :
+ mOriginalChannel(originalChannel),
+ mNewChannel(newChannel)
+{
+ MOZ_COUNT_CTOR(nsFileChannel::RedirectRunnable);
+ PL_InitEvent(this, nsnull, Handle, Destroy);
+}
+
+nsFileChannel::RedirectRunnable::~RedirectRunnable()
+{
+ MOZ_COUNT_DTOR(nsFileChannel::RedirectRunnable);
+}
+
+/* static */ void * PR_CALLBACK
+nsFileChannel::RedirectRunnable::Handle(PLEvent* aEvent)
+{
+ nsFileChannel::RedirectRunnable* evt =
+ NS_STATIC_CAST(nsFileChannel::RedirectRunnable*, aEvent);
+
+ evt->mOriginalChannel->HandleRedirect(evt->mNewChannel);
+
+ return nsnull;
+}
+
+/* static */ void PR_CALLBACK
+nsFileChannel::RedirectRunnable::Destroy(PLEvent* aEvent)
+{
+ nsFileChannel::RedirectRunnable* evt =
+ NS_STATIC_CAST(nsFileChannel::RedirectRunnable*, aEvent);
+ delete evt;
+}
+
NS_IMETHODIMP
nsFileChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx)
{
NS_ENSURE_TRUE(!mRequest, NS_ERROR_IN_PROGRESS);
+ // This file may be a url file
+ nsCOMPtr<nsIFile> file;
+ nsresult rv = mURL->GetFile(getter_AddRefs(file));
+ if (NS_SUCCEEDED(rv)) {
+ nsCOMPtr<nsIFileProtocolHandler> fileHandler;
+ rv = NS_GetFileProtocolHandler(getter_AddRefs(fileHandler));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIURI> uri;
+ rv = fileHandler->ReadURLFile(file, getter_AddRefs(uri));
+ if (NS_SUCCEEDED(rv)) {
+ // Make sure this is OK to load
+ nsCOMPtr<nsIScriptSecurityManager> securityManager =
+ do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID);
+ if (securityManager) {
+ rv = securityManager->CheckLoadURI(mURL, uri,
+ nsIScriptSecurityManager::DISALLOW_FROM_MAIL |
+ nsIScriptSecurityManager::DISALLOW_SCRIPT_OR_DATA);
+ if (NS_FAILED(rv)) return rv;
+ }
+
+ nsCOMPtr<nsIChannel> newChannel;
+ rv = NS_NewChannel(getter_AddRefs(newChannel), uri);
+ if (NS_SUCCEEDED(rv)) {
+ nsCOMPtr<nsIEventQueueService> eventQService =
+ do_GetService("@mozilla.org/event-queue-service;1", &rv);
+ NS_ENSURE_TRUE(eventQService, rv);
+
+ nsCOMPtr<nsIEventQueue> eventQ;
+ rv = eventQService->
+ GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE,
+ getter_AddRefs(eventQ));
+ NS_ENSURE_TRUE(eventQ, rv);
+
+ RedirectRunnable* evt =
+ new RedirectRunnable(this, newChannel);
+ NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY);
+
+ rv = eventQ->PostEvent(evt);
+
+ if (NS_FAILED(rv)) {
+ PL_DestroyEvent(evt);
+ } else {
+ mWaitingOnAsyncRedirect = PR_TRUE;
+
+ if (mLoadGroup)
+ mLoadGroup->AddRequest(this, nsnull);
+
+ mListener = listener;
+ mListenerContext = ctx;
+ }
+ return rv;
+ }
+ }
+ }
+
nsCOMPtr<nsIStreamListener> grip;
nsCOMPtr<nsIEventQueue> currentEventQ;
- nsresult rv;
rv = NS_GetCurrentEventQ(getter_AddRefs(currentEventQ));
if (NS_FAILED(rv)) return rv;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/protocol/file/src/nsFileChannel.h
^
|
@@ -51,6 +51,8 @@
#include "nsCOMPtr.h"
#include "nsString.h"
#include "nsHashPropertyBag.h"
+#include "plevent.h"
+#include "nsAutoPtr.h"
class nsFileChannel : public nsHashPropertyBag
, public nsIFileChannel
@@ -73,8 +75,26 @@
nsresult Init(nsIURI *uri);
+ class RedirectRunnable : public PLEvent
+ {
+ public:
+ RedirectRunnable(nsFileChannel* originalChannel,
+ nsIChannel* newChannel);
+ ~RedirectRunnable();
+
+ PR_STATIC_CALLBACK(void*) Handle(PLEvent* aEvent);
+ PR_STATIC_CALLBACK(void) Destroy(PLEvent* aEvent);
+
+ private:
+ nsRefPtr<nsFileChannel> mOriginalChannel;
+ nsCOMPtr<nsIChannel> mNewChannel;
+ };
+
private:
+ friend class RedirectRunnable;
+ void HandleRedirect(nsIChannel* newChannel);
+
nsresult GetClonedFile(nsIFile **);
nsresult EnsureStream();
@@ -95,8 +115,9 @@
nsCOMPtr<nsIRequest> mRequest;
nsCOMPtr<nsIInputStream> mStream;
- PRBool mIsDir;
- PRBool mUploading;
+ PRPackedBool mIsDir;
+ PRPackedBool mUploading;
+ PRPackedBool mWaitingOnAsyncRedirect;
};
#endif // !nsFileChannel_h__
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/protocol/file/src/nsFileProtocolHandler.cpp
^
|
@@ -239,22 +239,6 @@
NS_IMETHODIMP
nsFileProtocolHandler::NewChannel(nsIURI *uri, nsIChannel **result)
{
- // This file may be a url file
- nsCOMPtr<nsIFileURL> url(do_QueryInterface(uri));
- if (url) {
- nsCOMPtr<nsIFile> file;
- nsresult rv = url->GetFile(getter_AddRefs(file));
- if (NS_SUCCEEDED(rv)) {
- nsCOMPtr<nsIURI> uri;
- rv = ReadURLFile(file, getter_AddRefs(uri));
- if (NS_SUCCEEDED(rv)) {
- rv = NS_NewChannel(result, uri);
- if (NS_SUCCEEDED(rv))
- return rv;
- }
- }
- }
-
nsFileChannel *chan = new nsFileChannel();
if (!chan)
return NS_ERROR_OUT_OF_MEMORY;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/protocol/res/src/nsResProtocolHandler.cpp
^
|
@@ -22,6 +22,7 @@
* Contributor(s):
* Darin Fisher <darin@netscape.com>
* Benjamin Smedberg <bsmedberg@covad.net>
+ * Daniel Veditz <dveditz@cruzio.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
@@ -176,6 +177,9 @@
//XXXbsmedberg Neil wants a resource://pchrome/ for the profile chrome dir...
// but once I finish multiple chrome registration I'm not sure that it is needed
+ // XXX dveditz: resource://pchrome/ defeats profile directory salting
+ // if web content can load it. Tread carefully.
+
return rv;
}
@@ -227,7 +231,36 @@
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(resURL);
- rv = resURL->Init(nsIStandardURL::URLTYPE_STANDARD, -1, aSpec, aCharset, aBaseURI);
+ // unescape any %2f and %2e to make sure nsStandardURL coalesces them.
+ // Later net_GetFileFromURLSpec() will do a full unescape and we want to
+ // treat them the same way the file system will. (bugs 380994, 394075)
+ nsCAutoString spec;
+ const char *src = aSpec.BeginReading();
+ const char *end = aSpec.EndReading();
+ const char *last = src;
+
+ spec.SetCapacity(aSpec.Length()+1);
+ for ( ; src < end; ++src) {
+ if (*src == '%' && (src < end-2) && *(src+1) == '2') {
+ char ch = '\0';
+ if (*(src+2) == 'f' || *(src+2) == 'F')
+ ch = '/';
+ else if (*(src+2) == 'e' || *(src+2) == 'E')
+ ch = '.';
+
+ if (ch) {
+ if (last < src)
+ spec.Append(last, src-last);
+ spec.Append(ch);
+ src += 2;
+ last = src+1; // src will be incremented by the loop
+ }
+ }
+ }
+ if (last < src)
+ spec.Append(last, src-last);
+
+ rv = resURL->Init(nsIStandardURL::URLTYPE_STANDARD, -1, spec, aCharset, aBaseURI);
if (NS_SUCCEEDED(rv))
rv = CallQueryInterface(resURL, result);
NS_RELEASE(resURL);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/netwerk/streamconv/converters/nsDirIndexParser.cpp
^
|
@@ -190,6 +190,10 @@
++pos;
++num;
+ // There are a maximum of six allowed header fields (doubled plus
+ // terminator, just in case) -- Bug 443299
+ if (num > (2 * NS_ARRAY_LENGTH(gFieldTable)))
+ return NS_ERROR_UNEXPECTED;
if (! *pos)
break;
@@ -200,6 +204,9 @@
} while (*pos);
mFormat = new int[num+1];
+ // Prevent NULL Deref - Bug 443299
+ if (mFormat == nsnull)
+ return NS_ERROR_OUT_OF_MEMORY;
mFormat[num] = -1;
int formatNum=0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/parser/expat/lib/moz_extensions.c
^
|
@@ -165,7 +165,7 @@
if (tok == XML_TOK_CHAR_REF) {
int n = XmlCharRefNumber(enc, ptr);
- // We could get away with just < 0, but better safe than sorry.
+ /* We could get away with just < 0, but better safe than sorry. */
if (n <= 0) {
return 0;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/parser/htmlparser/src/nsHTMLTokens.cpp
^
|
@@ -2364,12 +2364,7 @@
}
#endif
- if (IS_IN_BMP(aNCRValue))
- aString.Append(PRUnichar(aNCRValue));
- else {
- aString.Append(PRUnichar(H_SURROGATE(aNCRValue)));
- aString.Append(PRUnichar(L_SURROGATE(aNCRValue)));
- }
+ AppendUCS4ToUTF16(ENSURE_VALID_CHAR(aNCRValue), aString);
}
/*
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/toolkit/content/charsetOverlay.js
^
|
@@ -126,21 +126,19 @@
var gPrevCharset = null;
function UpdateCurrentCharset()
{
- var menuitem = null;
-
- // exctract the charset from DOM
+ // extract the charset from DOM
var wnd = document.commandDispatcher.focusedWindow;
if ((window == wnd) || (wnd == null)) wnd = window.content;
- menuitem = document.getElementById('charset.' + wnd.document.characterSet);
+ // Uncheck previous item
+ if (gPrevCharset) {
+ var pref_item = document.getElementById('charset.' + gPrevCharset);
+ if (pref_item)
+ pref_item.setAttribute('checked', 'false');
+ }
+
+ var menuitem = document.getElementById('charset.' + wnd.document.characterSet);
if (menuitem) {
- // uncheck previously checked item to workaround Mac checkmark problem
- // bug 98625
- if (gPrevCharset) {
- var pref_item = document.getElementById('charset.' + gPrevCharset);
- if (pref_item)
- pref_item.setAttribute('checked', 'false');
- }
menuitem.setAttribute('checked', 'true');
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/toolkit/locales/en-US/chrome/global/intl.properties
^
|
@@ -22,7 +22,7 @@
intl.charsetmenu.browser.more4=armscii-8, GEOSTD8, TIS-620, ISO-8859-11, windows-874, IBM857, ISO-8859-9, x-mac-turkish, windows-1254, x-viet-tcvn5712, VISCII, x-viet-vps, windows-1258, x-mac-devanagari, x-mac-gujarati, x-mac-gurmukhi
intl.charsetmenu.browser.more5=ISO-8859-6, windows-1256, IBM864, x-mac-arabic, x-mac-farsi, ISO-8859-8-I, windows-1255, ISO-8859-8, IBM862, x-mac-hebrew
# Localization Note: Never change the following entry.
-intl.charsetmenu.browser.unicode=UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE, UTF-7
+intl.charsetmenu.browser.unicode=UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE
intl.charset.default=ISO-8859-1
intl.charset.detector=
intl.charsetmenu.mailedit=ISO-8859-1, ISO-8859-15, ISO-8859-6, armscii-8, geostd8, ISO-8859-13, ISO-8859-14, ISO-8859-2, GB2312, GB18030, Big5, KOI8-R, windows-1251, KOI8-U, ISO-8859-7, ISO-8859-8-I, windows-1255, ISO-2022-JP, EUC-KR, ISO-8859-10, ISO-8859-3, TIS-620, ISO-8859-9, UTF-8, VISCII
|
[-]
[+]
|
Added |
seamonkey-source-1.1.13.tar.bz2/toolkit/locales/l10n.ini
^
|
@@ -0,0 +1,8 @@
+[general]
+depth = ../..
+
+[compare]
+dirs = netwerk
+ dom
+ toolkit
+ security/manager
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/toolkit/mozapps/installer/windows/nsis/version.nsh
^
|
@@ -13,4 +13,5 @@
VIAddVersionKey "LegalTrademarks" "${BrandShortName} is a Trademark of The Mozilla Foundation."
VIAddVersionKey "LegalCopyright" "${CompanyName}"
VIAddVersionKey "FileVersion" "${AppVersion}"
+VIAddVersionKey "ProductVersion" "${AppVersion}"
;VIAddVersionKey "Comments" "Comments"
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/public/nsIDragService.idl
^
|
@@ -84,6 +84,16 @@
};
+[scriptable, uuid(b6ba2c09-4a12-40d6-ad7e-aa4190e78403)]
+interface nsIDragService_1_8_BRANCH : nsIDragService
+{
+ /**
+ * Increase/decrease dragging suppress level by one.
+ * If level is greater than one, dragging is disabled.
+ */
+ void suppress();
+ void unsuppress();
+};
%{ C++
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/beos/nsDragService.cpp
^
|
@@ -108,7 +108,9 @@
0 == orig.Compare("BeZilla"));
}
-NS_IMPL_THREADSAFE_ISUPPORTS3(nsDragService, nsIDragService, nsIDragSession, nsIDragSessionBeOS)
+NS_IMPL_THREADSAFE_ISUPPORTS4(nsDragService, nsIDragService,
+ nsIDragService_1_8_BRANCH, nsIDragSession,
+ nsIDragSessionBeOS)
//NS_IMPL_THREADSAFE_ISUPPORTS1(nsBaseDragService, nsIDragSessionBeOS)
//-------------------------------------------------------------------------
@@ -154,8 +156,11 @@
PRUint32 aActionType)
{
PR_LOG(sDragLm, PR_LOG_DEBUG, ("nsDragService::InvokeDragSession"));
- nsBaseDragService::InvokeDragSession (aDOMNode, aArrayTransferables,
- aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
+
ResetDragInfo();
// make sure that we have an array of transferables to use
if (nsnull == aArrayTransferables)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/gtk/nsDragService.cpp
^
|
@@ -63,8 +63,9 @@
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE4(nsDragService,
+NS_IMPL_QUERY_INTERFACE5(nsDragService,
nsIDragService,
+ nsIDragService_1_8_BRANCH,
nsIDragSession,
nsIDragSessionGTK,
nsIObserver)
@@ -150,8 +151,11 @@
PRUint32 aActionType)
{
PR_LOG(sDragLm, PR_LOG_DEBUG, ("nsDragService::InvokeDragSession"));
- nsBaseDragService::InvokeDragSession (aDOMNode, aArrayTransferables,
- aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
+
// make sure that we have an array of transferables to use
if (!aArrayTransferables)
return NS_ERROR_INVALID_ARG;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/gtk2/nsDragService.cpp
^
|
@@ -67,8 +67,9 @@
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE4(nsDragService,
+NS_IMPL_QUERY_INTERFACE5(nsDragService,
nsIDragService,
+ nsIDragService_1_8_BRANCH,
nsIDragSession,
nsIDragSessionGTK,
nsIObserver)
@@ -155,8 +156,11 @@
PRUint32 aActionType)
{
PR_LOG(sDragLm, PR_LOG_DEBUG, ("nsDragService::InvokeDragSession"));
- nsBaseDragService::InvokeDragSession(aDOMNode, aArrayTransferables,
- aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
+
// make sure that we have an array of transferables to use
if (!aArrayTransferables)
return NS_ERROR_INVALID_ARG;
@@ -1107,18 +1111,6 @@
return;
}
- if (strcmp(mimeFlavor, gTextUriListType) == 0) {
- // fall back for text/uri-list
- gchar *uriList;
- gint length;
- CreateUriList(mSourceDataItems, &uriList, &length);
- gtk_selection_data_set(aSelectionData,
- aSelectionData->target,
- 8, (guchar *)uriList, length);
- g_free(uriList);
- return;
- }
-
nsCOMPtr<nsISupports> genericItem;
mSourceDataItems->GetElementAt(0, getter_AddRefs(genericItem));
nsCOMPtr<nsITransferable> item;
@@ -1138,6 +1130,12 @@
actualFlavor = kURLMime;
needToDoConversionToPlainText = PR_TRUE;
}
+ // if someone was asking for text/uri-list we need to convert to
+ // plain text.
+ else if (strcmp(mimeFlavor, gTextUriListType) == 0) {
+ actualFlavor = gTextUriListType;
+ needToDoConversionToPlainText = PR_TRUE;
+ }
else
actualFlavor = mimeFlavor;
@@ -1179,6 +1177,18 @@
// this wasn't allocated with glib
free(tmpData);
}
+ } else {
+ if (strcmp(mimeFlavor, gTextUriListType) == 0) {
+ // fall back for text/uri-list
+ gchar *uriList;
+ gint length;
+ CreateUriList(mSourceDataItems, &uriList, &length);
+ gtk_selection_data_set(aSelectionData,
+ aSelectionData->target,
+ 8, (guchar *)uriList, length);
+ g_free(uriList);
+ return;
+ }
}
}
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/mac/nsDragService.cpp
^
|
@@ -92,7 +92,11 @@
// we need our own stuff for MacOS because of nsIDragSessionMac.
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE3(nsDragService, nsIDragService, nsIDragSession, nsIDragSessionMac)
+NS_IMPL_QUERY_INTERFACE4(nsDragService,
+ nsIDragService,
+ nsIDragService_1_8_BRANCH,
+ nsIDragSession,
+ nsIDragSessionMac)
//
@@ -223,7 +227,10 @@
#endif
::InitCursor();
- nsBaseDragService::InvokeDragSession ( aDOMNode, aTransferableArray, aDragRgn, aActionType );
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aTransferableArray,
+ aDragRgn, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
DragReference theDragRef;
OSErr result = ::NewDrag(&theDragRef);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/os2/nsDragService.cpp
^
|
@@ -57,7 +57,10 @@
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE3(nsDragService, nsIDragService, nsIDragSession, \
+NS_IMPL_QUERY_INTERFACE4(nsDragService,
+ nsIDragService,
+ nsIDragService_1_8_BRANCH,
+ nsIDragSession,
nsIDragSessionOS2)
// --------------------------------------------------------------------------
@@ -144,8 +147,10 @@
if (mDoingDrag)
return NS_ERROR_UNEXPECTED;
- nsBaseDragService::InvokeDragSession ( aDOMNode, aTransferables,
- aRegion, aActionType );
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode, aTransferables,
+ aRegion, aActionType );
+ NS_ENSURE_SUCCESS(rv, rv);
+
mSourceDataItems = aTransferables;
WinSetCapture(HWND_DESKTOP, NULLHANDLE);
@@ -168,7 +173,7 @@
dragitem.hstrContainerName = NULLHANDLE;
dragitem.hstrSourceName = NULLHANDLE;
- nsresult rv = NS_ERROR_FAILURE;
+ rv = NS_ERROR_FAILURE;
ULONG idIcon = 0;
// bracket this to reduce our footprint before the drag begins
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/os2/nsWindow.cpp
^
|
@@ -1237,23 +1237,24 @@
//-------------------------------------------------------------------------
NS_METHOD nsWindow::Show(PRBool bState)
{
- // doesn't seem to require a message queue.
- if( mWnd)
- {
- HWND hwnd = GetMainWindow();
- if( bState == PR_TRUE)
- {
- // don't try to show new windows (e.g. the Bookmark menu)
- // during a native dragover because they'll remain invisible;
- if (CheckDragStatus(ACTION_SHOW, 0))
- WinShowWindow( hwnd, TRUE);
+ // doesn't seem to require a message queue.
+ if (mWnd) {
+ if (bState) {
+ // don't try to show new windows (e.g. the Bookmark menu)
+ // during a native dragover because they'll remain invisible;
+ if (CheckDragStatus(ACTION_SHOW, 0)) {
+ PRBool bVisible;
+ IsVisible(bVisible);
+ if (!bVisible)
+ PlaceBehind(eZPlacementTop, NULL, PR_FALSE);
+ WinShowWindow(mWnd, PR_TRUE);
}
- else
- WinShowWindow( hwnd, FALSE);
- }
- mIsVisible = bState;
+ } else {
+ WinShowWindow(mWnd, PR_FALSE);
+ }
+ }
- return NS_OK;
+ return NS_OK;
}
//-------------------------------------------------------------------------
@@ -1287,7 +1288,11 @@
NS_METHOD nsWindow::PlaceBehind(nsTopLevelWidgetZPlacement aPlacement,
nsIWidget *aWidget, PRBool aActivate)
{
- HWND behind = aWidget ? (HWND)aWidget->GetNativeData(NS_NATIVE_WINDOW) : HWND_TOP;
+ HWND behind = HWND_TOP;
+ if (aPlacement == eZPlacementBottom)
+ behind = HWND_BOTTOM;
+ else if (aPlacement == eZPlacementBelow && aWidget)
+ behind = (HWND)aWidget->GetNativeData(NS_NATIVE_WINDOW);
UINT flags = SWP_ZORDER;
if (aActivate)
flags |= SWP_ACTIVATE;
@@ -1298,6 +1303,19 @@
//-------------------------------------------------------------------------
//
+// Sets widget's position within its parent child list.
+//
+//-------------------------------------------------------------------------
+NS_METHOD nsWindow::SetZIndex(PRInt32 aZIndex)
+{
+ // nsBaseWidget::SetZIndex() never has done anything sensible but has
+ // randomly placed widgets behind others (see bug 117730#c25).
+ // To get bug #353011 solved simply override it here to do nothing.
+ return NS_OK;
+}
+
+//-------------------------------------------------------------------------
+//
// Maximize, minimize or restore the window.
//
//-------------------------------------------------------------------------
@@ -3795,9 +3813,9 @@
ULONG ulStatus = WinQueryQueueStatus(HWND_DESKTOP);
// If there is pending input then return the current time.
- if (ulStatus && (QS_KEY | QS_MOUSE | QS_MOUSEBUTTON | QS_MOUSEMOVE)) {
+ if (ulStatus & (QS_KEY | QS_MOUSE)) {
gLastInputEventTime = PR_IntervalToMicroseconds(PR_IntervalNow());
- }
+ }
aTime = gLastInputEventTime;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/os2/nsWindow.h
^
|
@@ -151,6 +151,7 @@
PRBool IsShown();
NS_IMETHOD PlaceBehind(nsTopLevelWidgetZPlacement aPlacement,
nsIWidget *aWidget, PRBool aActivate);
+ NS_IMETHOD SetZIndex(PRInt32 aZIndex);
NS_IMETHOD CaptureMouse(PRBool aCapture);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/photon/nsDragService.cpp
^
|
@@ -49,7 +49,10 @@
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE2(nsDragService, nsIDragService, nsIDragSession)
+NS_IMPL_QUERY_INTERFACE3(nsDragService,
+ nsIDragService,
+ nsIDragService_1_8_BRANCH,
+ nsIDragSession)
char *nsDragService::mDndEvent = NULL;
int nsDragService::mDndEventLen;
@@ -144,7 +147,10 @@
#ifdef DEBUG
printf( "nsDragService::InvokeDragSession\n" );
#endif
- nsBaseDragService::InvokeDragSession (aDOMNode, aArrayTransferables, aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
if(!aArrayTransferables)
return NS_ERROR_INVALID_ARG;
@@ -202,7 +208,7 @@
const char *FlavourStr = ( const char * ) flavorStr;
nsCOMPtr<nsISupports> data;
PRUint32 tmpDataLen = 0;
- nsresult rv = currItem->GetTransferData( FlavourStr, getter_AddRefs(data), &tmpDataLen );
+ rv = currItem->GetTransferData( FlavourStr, getter_AddRefs(data), &tmpDataLen );
if( NS_SUCCEEDED( rv ) ) {
/* insert FlavourStr, data into the PtTransportCtrl_t */
int len = sizeof( PRUint32 ) + sizeof( PRUint32 ) + strlen( FlavourStr ) + 1 + tmpDataLen;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/qt/nsDragService.cpp
^
|
@@ -60,7 +60,11 @@
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE3(nsDragService, nsIDragService, nsIDragSession, nsIDragSessionQt )
+NS_IMPL_QUERY_INTERFACE4(nsDragService,
+ nsIDragService,
+ nsIDragService_1_8_BRANCH,
+ nsIDragSession,
+ nsIDragSessionQt )
//-------------------------------------------------------------------------
// static variables
@@ -97,8 +101,10 @@
{
PRUint32 numItemsToDrag = 0;
- nsBaseDragService::InvokeDragSession(aDOMNode, aArrayTransferables,
- aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
// make sure that we have an array of transferables to use
if (!aArrayTransferables) {
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/windows/nsDragService.cpp
^
|
@@ -91,9 +91,10 @@
nsIScriptableRegion *aRegion,
PRUint32 aActionType)
{
- nsBaseDragService::InvokeDragSession(aDOMNode, anArrayTransferables, aRegion,
- aActionType);
- nsresult rv;
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ anArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
// Try and get source URI of the items that are being dragged
nsIURI *uri = nsnull;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/windows/nsNativeDragTarget.cpp
^
|
@@ -225,6 +225,10 @@
// Set the current action into the Gecko specific type
nsCOMPtr<nsIDragSession> currSession;
mDragService->GetCurrentSession(getter_AddRefs(currSession));
+ if (!currSession) {
+ return;
+ }
+
currSession->SetDragAction(geckoAction);
// Dispatch the event into Gecko
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/xlib/nsDragService.cpp
^
|
@@ -109,14 +109,15 @@
nsIScriptableRegion *aRegion,
PRUint32 aActionType)
{
- nsBaseDragService::InvokeDragSession(aDOMNode, aArrayTransferables,
- aRegion, aActionType);
+ nsresult rv = nsBaseDragService::InvokeDragSession(aDOMNode,
+ aArrayTransferables,
+ aRegion, aActionType);
+ NS_ENSURE_SUCCESS(rv, rv);
/* no data - no dnd */
if (!aArrayTransferables)
return NS_ERROR_INVALID_ARG;
- nsresult rv;
PRUint32 numItemsToDrag = 0;
mSourceDataItems = aArrayTransferables;
@@ -158,7 +159,7 @@
if (!aSession)
return NS_ERROR_FAILURE;
- if (!mDragging) {
+ if (!mDragging || mSuppressLevel) {
*aSession = nsnull;
return NS_OK;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/xpwidgets/nsBaseDragService.cpp
^
|
@@ -57,7 +57,8 @@
NS_IMPL_ADDREF(nsBaseDragService)
NS_IMPL_RELEASE(nsBaseDragService)
-NS_IMPL_QUERY_INTERFACE2(nsBaseDragService, nsIDragService, nsIDragSession)
+NS_IMPL_QUERY_INTERFACE3(nsBaseDragService, nsIDragService,
+ nsIDragService_1_8_BRANCH, nsIDragSession)
//-------------------------------------------------------------------------
@@ -67,7 +68,7 @@
//-------------------------------------------------------------------------
nsBaseDragService::nsBaseDragService()
: mCanDrop(PR_FALSE), mDoingDrag(PR_FALSE),
- mDragAction(DRAGDROP_ACTION_NONE), mTargetSize(0,0)
+ mDragAction(DRAGDROP_ACTION_NONE), mTargetSize(0,0), mSuppressLevel(0)
{
nsresult result = NS_NewISupportsArray(getter_AddRefs(mTransArray));
if (NS_FAILED(result)) {
@@ -201,6 +202,7 @@
PRUint32 aActionType)
{
NS_ENSURE_TRUE(aDOMNode, NS_ERROR_INVALID_ARG);
+ NS_ENSURE_TRUE(mSuppressLevel == 0, NS_ERROR_FAILURE);
// stash the document of the dom node
aDOMNode->GetOwnerDocument(getter_AddRefs(mSourceDocument));
@@ -239,7 +241,7 @@
// "this" also implements a drag session, so say we are one but only
// if there is currently a drag going on.
- if (mDoingDrag) {
+ if (!mSuppressLevel && mDoingDrag) {
*aSession = this;
NS_ADDREF(*aSession); // addRef because we're a "getter"
}
@@ -306,3 +308,18 @@
}
} // GetFrameFromNode
+
+NS_IMETHODIMP
+nsBaseDragService::Suppress()
+{
+ EndDragSession();
+ ++mSuppressLevel;
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsBaseDragService::Unsuppress()
+{
+ --mSuppressLevel;
+ return NS_OK;
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/widget/src/xpwidgets/nsBaseDragService.h
^
|
@@ -54,7 +54,7 @@
* XP DragService wrapper base class
*/
-class nsBaseDragService : public nsIDragService,
+class nsBaseDragService : public nsIDragService_1_8_BRANCH,
public nsIDragSession
{
@@ -67,6 +67,7 @@
//nsIDragSession and nsIDragService
NS_DECL_NSIDRAGSERVICE
+ NS_DECL_NSIDRAGSERVICE_1_8_BRANCH
NS_DECL_NSIDRAGSESSION
protected:
@@ -82,6 +83,7 @@
nsCOMPtr<nsIDOMNode> mSourceNode;
nsCOMPtr<nsIDOMDocument> mSourceDocument; // the document at the drag source. will be null
// if it came from outside the app.
+ PRUint32 mSuppressLevel;
};
#endif // nsBaseDragService_h__
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/glue/nsTArray.cpp
^
|
@@ -48,7 +48,7 @@
// If the requested memory allocation exceeds size_type(-1)/2, then our
// doubling algorithm may not be able to allocate it. Just bail out in
// cases like that. We don't want to be allocating 2 GB+ arrays anyway.
- if (capacity * elemSize > size_type(-1)/2) {
+ if ((PRUint64)capacity * elemSize > size_type(-1)/2) {
NS_ERROR("Attempting to allocate excessively large array");
return PR_FALSE;
}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/io/nsEscape.cpp
^
|
@@ -75,25 +75,42 @@
//----------------------------------------------------------------------------------------
static char* nsEscapeCount(
const char * str,
- PRInt32 len,
nsEscapeMask flags,
- PRInt32* out_len)
+ size_t* out_len)
//----------------------------------------------------------------------------------------
{
if (!str)
return 0;
- int i, extra = 0;
+ size_t i, len = 0, charsToEscape = 0;
static const char hexChars[] = "0123456789ABCDEF";
register const unsigned char* src = (const unsigned char *) str;
- for (i = 0; i < len; i++)
+ while (*src)
{
+ len++;
if (!IS_OK(*src++))
- extra += 2; /* the escape, plus an extra byte for each nibble */
+ charsToEscape++;
}
- char* result = (char *)nsMemory::Alloc(len + extra + 1);
+ // calculate how much memory should be allocated
+ // original length + 2 bytes for each escaped character + terminating '\0'
+ // do the sum in steps to check for overflow
+ size_t dstSize = len + 1 + charsToEscape;
+ if (dstSize <= len)
+ return 0;
+ dstSize += charsToEscape;
+ if (dstSize < len)
+ return 0;
+
+ // fail if we need more than 4GB
+ // size_t is likely to be long unsigned int but nsMemory::Alloc(size_t)
+ // calls NS_Alloc_P(size_t) which calls PR_Malloc(PRUint32), so there is
+ // no chance to allocate more than 4GB using nsMemory::Alloc()
+ if (dstSize > PR_UINT32_MAX)
+ return 0;
+
+ char* result = (char *)nsMemory::Alloc(dstSize);
if (!result)
return 0;
@@ -144,7 +161,7 @@
{
if(!str)
return NULL;
- return nsEscapeCount(str, (PRInt32)strlen(str), flags, NULL);
+ return nsEscapeCount(str, flags, NULL);
}
//----------------------------------------------------------------------------------------
@@ -205,62 +222,67 @@
NS_COM char *
nsEscapeHTML(const char * string)
{
- /* XXX Hardcoded max entity len. The +1 is for the trailing null. */
- char *rv = (char *) nsMemory::Alloc(strlen(string) * 6 + 1);
- char *ptr = rv;
-
- if(rv)
- {
- for(; *string != '\0'; string++)
- {
- if(*string == '<')
- {
- *ptr++ = '&';
- *ptr++ = 'l';
- *ptr++ = 't';
- *ptr++ = ';';
- }
- else if(*string == '>')
- {
- *ptr++ = '&';
- *ptr++ = 'g';
- *ptr++ = 't';
- *ptr++ = ';';
- }
- else if(*string == '&')
- {
- *ptr++ = '&';
- *ptr++ = 'a';
- *ptr++ = 'm';
- *ptr++ = 'p';
- *ptr++ = ';';
- }
- else if (*string == '"')
- {
- *ptr++ = '&';
- *ptr++ = 'q';
- *ptr++ = 'u';
- *ptr++ = 'o';
- *ptr++ = 't';
- *ptr++ = ';';
- }
- else if (*string == '\'')
- {
- *ptr++ = '&';
- *ptr++ = '#';
- *ptr++ = '3';
- *ptr++ = '9';
- *ptr++ = ';';
- }
- else
- {
- *ptr++ = *string;
- }
- }
- *ptr = '\0';
- }
+ char *rv = nsnull;
+ /* XXX Hardcoded max entity len. The +1 is for the trailing null. */
+ PRUint32 len = PL_strlen(string);
+ if (len >= (PR_UINT32_MAX / 6))
+ return nsnull;
+
+ rv = (char *)NS_Alloc( (6 * len) + 1 );
+ char *ptr = rv;
+
+ if(rv)
+ {
+ for(; *string != '\0'; string++)
+ {
+ if(*string == '<')
+ {
+ *ptr++ = '&';
+ *ptr++ = 'l';
+ *ptr++ = 't';
+ *ptr++ = ';';
+ }
+ else if(*string == '>')
+ {
+ *ptr++ = '&';
+ *ptr++ = 'g';
+ *ptr++ = 't';
+ *ptr++ = ';';
+ }
+ else if(*string == '&')
+ {
+ *ptr++ = '&';
+ *ptr++ = 'a';
+ *ptr++ = 'm';
+ *ptr++ = 'p';
+ *ptr++ = ';';
+ }
+ else if (*string == '"')
+ {
+ *ptr++ = '&';
+ *ptr++ = 'q';
+ *ptr++ = 'u';
+ *ptr++ = 'o';
+ *ptr++ = 't';
+ *ptr++ = ';';
+ }
+ else if (*string == '\'')
+ {
+ *ptr++ = '&';
+ *ptr++ = '#';
+ *ptr++ = '3';
+ *ptr++ = '9';
+ *ptr++ = ';';
+ }
+ else
+ {
+ *ptr++ = *string;
+ }
+ }
+ *ptr = '\0';
+ }
- return(rv);
+ return(rv);
}
NS_COM PRUnichar *
@@ -272,6 +294,10 @@
}
/* XXX Hardcoded max entity len. */
+ if (aSourceBufferLen >=
+ ((PR_UINT32_MAX / (6 * sizeof(PRUnichar))) + sizeof(PRUnichar)))
+ return nsnull;
+
PRUnichar *resultBuffer = (PRUnichar *)nsMemory::Alloc(aSourceBufferLen *
6 * sizeof(PRUnichar) + sizeof(PRUnichar('\0')));
PRUnichar *ptr = resultBuffer;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/io/nsLocalFileUnix.cpp
^
|
@@ -1300,6 +1300,11 @@
NS_ENSURE_ARG_POINTER(_retval);
struct stat buf;
+ if (IsDesktopFile()) {
+ *_retval = PR_TRUE;
+ return NS_OK;
+ }
+
*_retval = (stat(mPath.get(), &buf) == 0);
if (*_retval || errno == EACCES) {
*_retval = *_retval && (buf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH ));
@@ -1350,6 +1355,11 @@
CHECK_mPath();
NS_ENSURE_ARG_POINTER(_retval);
+ if (IsDesktopFile()) {
+ *_retval = PR_TRUE;
+ return NS_OK;
+ }
+
*_retval = (access(mPath.get(), X_OK) == 0);
if (*_retval || errno == EACCES)
return NS_OK;
@@ -1775,3 +1785,13 @@
nsLocalFile::GlobalShutdown()
{
}
+
+PRBool
+nsLocalFile::IsDesktopFile()
+{
+ // Just needs to be good enough to match nsFileProtocolHandler::ReadURLFile
+ nsCAutoString leafName;
+ nsresult rv = GetNativeLeafName(leafName);
+ return NS_FAILED(rv) ||
+ StringEndsWith(leafName, NS_LITERAL_CSTRING(".desktop"));
+}
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/io/nsLocalFileUnix.h
^
|
@@ -127,6 +127,8 @@
nsresult CreateAndKeepOpen(PRUint32 type, PRIntn flags,
PRUint32 permissions, PRFileDesc **_retval);
+
+ PRBool IsDesktopFile();
};
#endif /* _nsLocalFileUNIX_H_ */
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpec.h
^
|
@@ -485,7 +485,7 @@
void CreateDir(int mode = 0775) { CreateDirectory(mode); }
// workaround for yet another VC++ bug with long identifiers.
void Delete(PRBool inRecursive) const;
- nsresult Truncate(PRInt32 aNewLength) const;
+ nsresult Truncate(PRUint32 aNewLength) const;
void RecursiveCopy(nsFileSpec newDir) const;
nsresult Rename(const char* inNewName); // not const: gets updated
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecBeOS.cpp
^
|
@@ -302,7 +302,7 @@
} // nsFileSpec::RecursiveCopy
//----------------------------------------------------------------------------------------
-nsresult nsFileSpec::Truncate(PRInt32 offset) const
+nsresult nsFileSpec::Truncate(PRUint32 offset) const
//----------------------------------------------------------------------------------------
{
char* Path = nsCRT::strdup(mPath);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecImpl.cpp
^
|
@@ -457,7 +457,7 @@
return mFileSpec.Error();
}
//----------------------------------------------------------------------------------------
-NS_IMETHODIMP nsFileSpecImpl::Truncate(PRInt32 aNewLength)
+NS_IMETHODIMP nsFileSpecImpl::Truncate(PRUint32 aNewLength)
//----------------------------------------------------------------------------------------
{
return mFileSpec.Truncate(aNewLength);
@@ -736,7 +736,7 @@
}
//----------------------------------------------------------------------------------------
-NS_IMETHODIMP nsFileSpecImpl::Tell(PRInt32 *_retval)
+NS_IMETHODIMP nsFileSpecImpl::Tell(PRUint32 *_retval)
//----------------------------------------------------------------------------------------
{
TEST_OUT_PTR(_retval)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecMac.cpp
^
|
@@ -991,7 +991,7 @@
} // nsFileSpec::RecursiveCopy
//----------------------------------------------------------------------------------------
-nsresult nsFileSpec::Truncate(PRInt32 aNewLength) const
+nsresult nsFileSpec::Truncate(PRUint32 aNewLength) const
//----------------------------------------------------------------------------------------
{
short refNum;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecOS2.cpp
^
|
@@ -583,7 +583,7 @@
//----------------------------------------------------------------------------------------
nsresult
-nsFileSpec::Truncate(PRInt32 aNewFileLength) const
+nsFileSpec::Truncate(PRUint32 aNewFileLength) const
//----------------------------------------------------------------------------------------
{
#ifdef XP_OS2
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecUnix.cpp
^
|
@@ -372,7 +372,7 @@
//----------------------------------------------------------------------------------------
-nsresult nsFileSpec::Truncate(PRInt32 offset) const
+nsresult nsFileSpec::Truncate(PRUint32 offset) const
//----------------------------------------------------------------------------------------
{
char* Path = nsCRT::strdup(mPath);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileSpecWin.cpp
^
|
@@ -520,11 +520,11 @@
//----------------------------------------------------------------------------------------
nsresult
-nsFileSpec::Truncate(PRInt32 aNewFileLength) const
+nsFileSpec::Truncate(PRUint32 aNewFileLength) const
//----------------------------------------------------------------------------------------
{
- DWORD status;
HANDLE hFile;
+ LARGE_INTEGER li;
// Leave it to Microsoft to open an existing file with a function
// named "CreateFile".
@@ -539,8 +539,12 @@
return NS_FILE_FAILURE;
// Seek to new, desired end of file
- status = SetFilePointer(hFile, aNewFileLength, NULL, FILE_BEGIN);
- if (status == 0xffffffff)
+ li.QuadPart = aNewFileLength;
+ li.LowPart = SetFilePointer(hFile,
+ li.LowPart,
+ &li.HighPart,
+ FILE_BEGIN);
+ if (0xffffffff == li.LowPart && GetLastError() != NO_ERROR)
goto error;
// Truncate file at current cursor position
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsFileStream.cpp
^
|
@@ -235,7 +235,7 @@
if (position < zero)
return PR_FALSE;
PRInt32 bytesRead = read(s, n - 1);
- if (failed())
+ if (failed() || bytesRead < 0)
return PR_FALSE;
s[bytesRead] = '\0'; // always terminate at the end of the buffer
char* tp = strpbrk(s, "\n\r");
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsIFileSpec.idl
^
|
@@ -131,7 +131,7 @@
void resolveSymlink();
void delete(in boolean recursive);
- void truncate(in long aNewLength);
+ void truncate(in unsigned long aNewLength);
void rename([const] in string newLeafName);
void copyToDir([const] in nsIFileSpec newParentDir);
void moveToDir([const] in nsIFileSpec newParentDir);
@@ -155,7 +155,7 @@
void flush();
void seek(in long offset);
- long tell();
+ unsigned long tell();
void endLine();
attribute AString unicodePath;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/obsolete/nsIFileStream.cpp
^
|
@@ -330,8 +330,11 @@
// To avoid corruption, we flush during a seek. see bug number 18949
InternalFlush(PR_FALSE);
+ const nsInt64 zero = 0;
nsInt64 position = PR_Seek64(mFileDesc, 0, PR_SEEK_CUR);
nsInt64 available = PR_Available64(mFileDesc);
+ if (position < zero || available < zero)
+ return NS_FILE_RESULT(PR_FILE_SEEK_ERROR);
nsInt64 fileSize = position + available;
nsInt64 newPosition = offset;
switch (whence)
@@ -340,7 +343,6 @@
case NS_SEEK_SET: ; break;
case NS_SEEK_END: newPosition += fileSize; break;
}
- const nsInt64 zero = 0;
if (newPosition < zero)
{
newPosition = 0;
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/string/public/nsCharTraits.h
^
|
@@ -73,6 +73,37 @@
typedef PRBool nsCharTraits_bool;
#endif
+// Some macros for working with PRUnichar
+#define PLANE1_BASE PRUint32(0x00010000)
+// High surrogates are in the range 0xD800 -- OxDBFF
+#define IS_HIGH_SURROGATE(u) ((PRUnichar(u) & 0xFC00) == 0xD800)
+// Low surrogates are in the range 0xDC00 -- 0xDFFF
+#define IS_LOW_SURROGATE(u) ((PRUnichar(u) & 0xFC00) == 0xDC00)
+// Faster than testing IS_HIGH_SURROGATE || IS_LOW_SURROGATE
+#define IS_SURROGATE(u) ((PRUnichar(u) & 0xF800) == 0xD800)
+
+// Everything else is not a surrogate: 0x000 -- 0xD7FF, 0xE000 -- 0xFFFF
+
+// N = (H - 0xD800) * 0x400 + 0x10000 + (L - 0xDC00)
+// I wonder whether we could somehow assert that H is a high surrogate
+// and L is a low surrogate
+#define SURROGATE_TO_UCS4(h, l) (((PRUint32(h) & 0x03FF) << 10) + \
+ (PRUint32(l) & 0x03FF) + PLANE1_BASE)
+
+// Extract surrogates from a UCS4 char
+// See unicode specification 3.7 for following math.
+#define H_SURROGATE(c) PRUnichar(PRUnichar((PRUint32(c) - PLANE1_BASE) >> 10) | \
+ PRUnichar(0xD800))
+#define L_SURROGATE(c) PRUnichar(PRUnichar((PRUint32(c) - PLANE1_BASE) & 0x03FF) | \
+ PRUnichar(0xDC00))
+
+#define IS_IN_BMP(ucs) (PRUint32(ucs) < PLANE1_BASE)
+#define UCS2_REPLACEMENT_CHAR PRUnichar(0xFFFD)
+
+#define UCS_END PRUint32(0x00110000)
+#define IS_VALID_CHAR(c) ((PRUint32(c) < UCS_END) && !IS_SURROGATE(c))
+#define ENSURE_VALID_CHAR(c) (IS_VALID_CHAR(c) ? (c) : UCS2_REPLACEMENT_CHAR)
+
template <class CharT> struct nsCharTraits {};
NS_SPECIALIZE_TEMPLATE
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/string/public/nsReadableUtils.h
^
|
@@ -371,5 +371,7 @@
return (aStr.Length() == aLen);
}
+NS_COM void
+AppendUCS4ToUTF16(const PRUint32 aSource, nsAString& aDest);
#endif // !defined(nsReadableUtils_h___)
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/string/public/nsUTF8Utils.h
^
|
@@ -39,6 +39,8 @@
#ifndef nsUTF8Utils_h_
#define nsUTF8Utils_h_
+#include "nsCharTraits.h"
+
class UTF8traits
{
public:
@@ -51,9 +53,6 @@
static PRBool is6byte(char c) { return (c & 0xFE) == 0xFC; }
};
-#define PLANE1_BASE 0x00010000
-#define UCS2_REPLACEMENT_CHAR 0xfffd
-
#ifdef __GNUC__
#define NS_ALWAYS_INLINE __attribute__((always_inline))
#else
@@ -139,6 +138,14 @@
while ( state-- )
{
+ if (p == end)
+ {
+ NS_ERROR("Buffer ended in the middle of a multibyte sequence");
+ mErrorEncountered = PR_TRUE;
+ mBuffer = out;
+ return N;
+ }
+
c = *p++;
if ( UTF8traits::isInSeq(c) )
@@ -176,13 +183,11 @@
}
else if ( ucs4 >= PLANE1_BASE )
{
- if ( ucs4 >= 0x00110000 )
+ if ( ucs4 >= UCS_END )
*out++ = UCS2_REPLACEMENT_CHAR;
else {
- // surrogate, see unicode specification 3.7 for following math.
- ucs4 -= PLANE1_BASE;
- *out++ = (PRUnichar)(ucs4 >> 10) | 0xd800u;
- *out++ = (PRUnichar)(ucs4 & 0x3ff) | 0xdc00u;
+ *out++ = (buffer_type)H_SURROGATE(ucs4);
+ *out++ = (buffer_type)L_SURROGATE(ucs4);
}
}
else
@@ -308,17 +313,16 @@
*out++ = 0xC0 | (char)(c >> 6);
*out++ = 0x80 | (char)(0x003F & c);
}
- else if (0xD800 != (0xF800 & c)) // U+0800 - U+D7FF,U+E000 - U+FFFF
+ else if (!IS_SURROGATE(c)) // U+0800 - U+D7FF,U+E000 - U+FFFF
{
*out++ = 0xE0 | (char)(c >> 12);
*out++ = 0x80 | (char)(0x003F & (c >> 6));
*out++ = 0x80 | (char)(0x003F & c );
}
- else if (0xD800 == (0xFC00 & c)) // U+D800 - U+DBFF
+ else if (IS_HIGH_SURROGATE(c)) // U+D800 - U+DBFF
{
// D800- DBFF - High Surrogate
- // N = (H- D800) *400 + 10000 + ...
- PRUint32 ucs4 = 0x10000 + ((0x03FF & c) << 10);
+ value_type h = c;
++p;
if (p == end)
@@ -329,11 +333,11 @@
}
c = *p;
- if (0xDC00 == (0xFC00 & c))
+ if (IS_LOW_SURROGATE(c))
{
// DC00- DFFF - Low Surrogate
- // N += ( L - DC00 )
- ucs4 |= (0x03FF & c);
+ // N = (H - D800) *400 + 10000 + ( L - DC00 )
+ PRUint32 ucs4 = SURROGATE_TO_UCS4(h, c);
// 0001 0000-001F FFFF
*out++ = 0xF0 | (char)(ucs4 >> 18);
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpcom/string/src/nsReadableUtils.cpp
^
|
@@ -1094,3 +1094,19 @@
return sEmpty;
}
+
+NS_COM
+void
+AppendUCS4ToUTF16(const PRUint32 aSource, nsAString& aDest)
+ {
+ NS_ASSERTION(IS_VALID_CHAR(aSource), "Invalid UCS4 char");
+ if (IS_IN_BMP(aSource))
+ {
+ aDest.Append(PRUnichar(aSource));
+ }
+ else
+ {
+ aDest.Append(H_SURROGATE(aSource));
+ aDest.Append(L_SURROGATE(aSource));
+ }
+ }
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpfe/bootstrap/module.ver
^
|
@@ -1,7 +1,7 @@
WIN32_MODULE_COMPANYNAME=mozilla.org
WIN32_MODULE_COPYRIGHT=©Mozilla Developers, according to the MPL 1.1/GPL 2.0/LGPL 2.1 licenses, as applicable.
-WIN32_MODULE_PRODUCTVERSION=1,1,11,0
-WIN32_MODULE_PRODUCTVERSION_STRING=1.1.11
+WIN32_MODULE_PRODUCTVERSION=1,1,13,0
+WIN32_MODULE_PRODUCTVERSION_STRING=1.1.13
WIN32_MODULE_TRADEMARKS=SeaMonkey and Mozilla are trademarks of The Mozilla Foundation.
WIN32_MODULE_DESCRIPTION=@MOZ_APP_DISPLAYNAME@
WIN32_MODULE_PRODUCTNAME=@MOZ_APP_DISPLAYNAME@
|
[-]
[+]
|
Changed |
seamonkey-source-1.1.13.tar.bz2/xpfe/bootstrap/version.txt
^
|
@@ -1 +1 @@
-1.1.11
\ No newline at end of file
+1.1.13
\ No newline at end of file
|