summaryrefslogtreecommitdiffstats
path: root/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch')
-rw-r--r--debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch b/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch
new file mode 100644
index 0000000000..c06839fe7d
--- /dev/null
+++ b/debian/patches/fixes/Allow-.js-preference-files-to-set-locked-prefs-with-.patch
@@ -0,0 +1,79 @@
+From: Mike Hommey <glandium@debian.org>
+Date: Sat, 21 Jun 2008 02:48:46 +0200
+Subject: Allow .js preference files to set locked prefs with lockPref()
+
+---
+ modules/libpref/parser/src/lib.rs | 20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/modules/libpref/parser/src/lib.rs b/modules/libpref/parser/src/lib.rs
+index bce98c0..da33195 100644
+--- a/modules/libpref/parser/src/lib.rs
++++ b/modules/libpref/parser/src/lib.rs
+@@ -11,8 +11,9 @@
+ //! ```text
+ //! <pref-file> = <pref>*
+ //! <pref> = <pref-spec> "(" <pref-name> "," <pref-value> <pref-attrs> ")" ";"
+-//! <pref-spec> = "user_pref" | "pref" | "sticky_pref" // in default pref files
++//! <pref-spec> = "user_pref" | "pref" | "sticky_pref" | "lockPref" // in default pref files
+ //! <pref-spec> = "user_pref" // in user pref files
++//! <pref-spec> = "user_pref" | "pref" | "sticky_pref | lockPref"
+ //! <pref-name> = <string-literal>
+ //! <pref-value> = <string-literal> | "true" | "false" | <int-value>
+ //! <int-value> = <sign>? <int-literal>
+@@ -171,6 +172,7 @@ enum Token {
+ // Keywords
+ Pref, // pref
+ StickyPref, // sticky_pref
++ LockPref, // lockPref
+ UserPref, // user_pref
+ True, // true
+ False, // false
+@@ -293,7 +295,7 @@ struct KeywordInfo {
+ token: Token,
+ }
+
+-const KEYWORD_INFOS: [KeywordInfo; 7] = [
++const KEYWORD_INFOS: [KeywordInfo; 8] = [
+ // These are ordered by frequency.
+ KeywordInfo {
+ string: b"pref",
+@@ -323,6 +325,10 @@ const KEYWORD_INFOS: [KeywordInfo; 7] = [
+ string: b"sticky_pref",
+ token: Token::StickyPref,
+ },
++ KeywordInfo {
++ string: b"lockPref",
++ token: Token::LockPref,
++ },
+ ];
+
+ struct Parser<'t> {
+@@ -375,14 +381,15 @@ impl<'t> Parser<'t> {
+ // this will be either the first token of a new pref, or EOF.
+ loop {
+ // <pref-spec>
+- let (pref_value_kind, mut is_sticky) = match token {
++ let (pref_value_kind, mut is_sticky, mut is_locked) = match token {
+ Token::Pref if self.kind == PrefValueKind::Default => {
+- (PrefValueKind::Default, false)
++ (PrefValueKind::Default, false, false)
+ }
+ Token::StickyPref if self.kind == PrefValueKind::Default => {
+- (PrefValueKind::Default, true)
++ (PrefValueKind::Default, true, false)
+ }
+- Token::UserPref => (PrefValueKind::User, false),
++ Token::LockPref => (PrefValueKind::Default, false, true),
++ Token::UserPref => (PrefValueKind::User, false, false),
+ Token::SingleChar(EOF) => return !self.has_errors,
+ _ => {
+ token = self.error_and_recover(
+@@ -492,7 +499,6 @@ impl<'t> Parser<'t> {
+ };
+
+ // ("," <pref-attr>)* // default pref files only
+- let mut is_locked = false;
+ let mut has_attrs = false;
+ if self.kind == PrefValueKind::Default {
+ let ok = loop {