|
Martin Stransky |
4bed479 |
From: Mike Hommey <glandium@debian.org>
|
|
Martin Stransky |
4bed479 |
Date: Sat, 21 Jun 2008 02:48:46 +0200
|
|
Martin Stransky |
4bed479 |
Subject: Allow .js preference files to set locked prefs with lockPref()
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
---
|
|
Martin Stransky |
4bed479 |
modules/libpref/prefapi.cpp | 5 ++++-
|
|
Martin Stransky |
4bed479 |
modules/libpref/prefapi.h | 3 ++-
|
|
Martin Stransky |
4bed479 |
modules/libpref/prefread.cpp | 12 +++++++++---
|
|
Martin Stransky |
4bed479 |
modules/libpref/prefread.h | 4 +++-
|
|
Martin Stransky |
4bed479 |
4 files changed, 18 insertions(+), 6 deletions(-)
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
diff --git a/modules/libpref/prefapi.cpp b/modules/libpref/prefapi.cpp
|
|
Martin Stransky |
4bed479 |
index dd27769..bd3f8ea 100644
|
|
Martin Stransky |
4bed479 |
--- a/modules/libpref/prefapi.cpp
|
|
Martin Stransky |
4bed479 |
+++ b/modules/libpref/prefapi.cpp
|
|
Martin Stransky |
4bed479 |
@@ -967,11 +967,14 @@ void PREF_ReaderCallback(void *closure,
|
|
Martin Stransky |
4bed479 |
PrefValue value,
|
|
Martin Stransky |
4bed479 |
PrefType type,
|
|
Martin Stransky |
4bed479 |
bool isDefault,
|
|
Martin Stransky |
4bed479 |
- bool isStickyDefault)
|
|
Martin Stransky |
4bed479 |
+ bool isStickyDefault,
|
|
Martin Stransky |
4bed479 |
+ bool isLocked)
|
|
Martin Stransky |
4bed479 |
{
|
|
Martin Stransky |
4bed479 |
uint32_t flags = isDefault ? kPrefSetDefault : kPrefForceSet;
|
|
Martin Stransky |
4bed479 |
if (isDefault && isStickyDefault) {
|
|
Martin Stransky |
4bed479 |
flags |= kPrefStickyDefault;
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
pref_HashPref(pref, value, type, flags);
|
|
Martin Stransky |
4bed479 |
+ if (isLocked)
|
|
Martin Stransky |
4bed479 |
+ PREF_LockPref(pref, true);
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
diff --git a/modules/libpref/prefapi.h b/modules/libpref/prefapi.h
|
|
Martin Stransky |
4bed479 |
index 5bd8c43..0ab0d7c 100644
|
|
Martin Stransky |
4bed479 |
--- a/modules/libpref/prefapi.h
|
|
Martin Stransky |
4bed479 |
+++ b/modules/libpref/prefapi.h
|
|
Martin Stransky |
4bed479 |
@@ -186,7 +186,8 @@ void PREF_ReaderCallback( void *closure,
|
|
Martin Stransky |
4bed479 |
PrefValue value,
|
|
Martin Stransky |
4bed479 |
PrefType type,
|
|
Martin Stransky |
4bed479 |
bool isDefault,
|
|
Martin Stransky |
4bed479 |
- bool isStickyDefault);
|
|
Martin Stransky |
4bed479 |
+ bool isStickyDefault,
|
|
Martin Stransky |
4bed479 |
+ bool isLocked);
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
#ifdef __cplusplus
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
diff --git a/modules/libpref/prefread.cpp b/modules/libpref/prefread.cpp
|
|
Martin Stransky |
4bed479 |
index 6c4d339..16c5057 100644
|
|
Martin Stransky |
4bed479 |
--- a/modules/libpref/prefread.cpp
|
|
Martin Stransky |
4bed479 |
+++ b/modules/libpref/prefread.cpp
|
|
Martin Stransky |
4bed479 |
@@ -43,6 +43,7 @@ enum {
|
|
Martin Stransky |
4bed479 |
#define BITS_PER_HEX_DIGIT 4
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
static const char kUserPref[] = "user_pref";
|
|
Martin Stransky |
4bed479 |
+static const char kLockPref[] = "lockPref";
|
|
Martin Stransky |
4bed479 |
static const char kPref[] = "pref";
|
|
Martin Stransky |
4bed479 |
static const char kPrefSticky[] = "sticky_pref";
|
|
Martin Stransky |
4bed479 |
static const char kTrue[] = "true";
|
|
Martin Stransky |
4bed479 |
@@ -131,7 +132,7 @@ pref_DoCallback(PrefParseState *ps)
|
|
Martin Stransky |
4bed479 |
break;
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
(*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault,
|
|
Martin Stransky |
4bed479 |
- ps->fstickydefault);
|
|
Martin Stransky |
4bed479 |
+ ps->fstickydefault, ps->flock);
|
|
Martin Stransky |
4bed479 |
return true;
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
@@ -191,6 +192,7 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen)
|
|
Martin Stransky |
4bed479 |
ps->vtype = PREF_INVALID;
|
|
Martin Stransky |
4bed479 |
ps->fdefault = false;
|
|
Martin Stransky |
4bed479 |
ps->fstickydefault = false;
|
|
Martin Stransky |
4bed479 |
+ ps->flock = false;
|
|
Martin Stransky |
4bed479 |
}
|
|
Martin Stransky |
4bed479 |
switch (c) {
|
|
Martin Stransky |
4bed479 |
case '/': /* begin comment block or line? */
|
|
Martin Stransky |
4bed479 |
@@ -202,8 +204,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen)
|
|
Martin Stransky |
4bed479 |
case 'u': /* indicating user_pref */
|
|
Martin Stransky |
4bed479 |
case 'p': /* indicating pref */
|
|
Martin Stransky |
4bed479 |
case 's': /* indicating sticky_pref */
|
|
Martin Stransky |
4bed479 |
+ case 'l': /* indicating lockPref */
|
|
Martin Stransky |
4bed479 |
ps->smatch = (c == 'u' ? kUserPref :
|
|
Martin Stransky |
4bed479 |
- (c == 's' ? kPrefSticky : kPref));
|
|
Martin Stransky |
4bed479 |
+ (c == 's' ? kPrefSticky :
|
|
Martin Stransky |
4bed479 |
+ (c == 'p' ? kPref : kLockPref)));
|
|
Martin Stransky |
4bed479 |
ps->sindex = 1;
|
|
Martin Stransky |
4bed479 |
ps->nextstate = PREF_PARSE_UNTIL_OPEN_PAREN;
|
|
Martin Stransky |
4bed479 |
state = PREF_PARSE_MATCH_STRING;
|
|
Martin Stransky |
4bed479 |
@@ -247,8 +251,10 @@ PREF_ParseBuf(PrefParseState *ps, const char *buf, int bufLen)
|
|
Martin Stransky |
4bed479 |
/* name parsing */
|
|
Martin Stransky |
4bed479 |
case PREF_PARSE_UNTIL_NAME:
|
|
Martin Stransky |
4bed479 |
if (c == '\"' || c == '\'') {
|
|
Martin Stransky |
4bed479 |
- ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky);
|
|
Martin Stransky |
4bed479 |
+ ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky
|
|
Martin Stransky |
4bed479 |
+ || ps->smatch == kLockPref);
|
|
Martin Stransky |
4bed479 |
ps->fstickydefault = (ps->smatch == kPrefSticky);
|
|
Martin Stransky |
4bed479 |
+ ps->flock = (ps->smatch == kLockPref);
|
|
Martin Stransky |
4bed479 |
ps->quotechar = c;
|
|
Martin Stransky |
4bed479 |
ps->nextstate = PREF_PARSE_UNTIL_COMMA; /* return here when done */
|
|
Martin Stransky |
4bed479 |
state = PREF_PARSE_QUOTED_STRING;
|
|
Martin Stransky |
4bed479 |
diff --git a/modules/libpref/prefread.h b/modules/libpref/prefread.h
|
|
Martin Stransky |
4bed479 |
index 3c317ff..0c13057 100644
|
|
Martin Stransky |
4bed479 |
--- a/modules/libpref/prefread.h
|
|
Martin Stransky |
4bed479 |
+++ b/modules/libpref/prefread.h
|
|
Martin Stransky |
4bed479 |
@@ -34,7 +34,8 @@ typedef void (*PrefReader)(void *closure,
|
|
Martin Stransky |
4bed479 |
PrefValue val,
|
|
Martin Stransky |
4bed479 |
PrefType type,
|
|
Martin Stransky |
4bed479 |
bool defPref,
|
|
Martin Stransky |
4bed479 |
- bool stickyPref);
|
|
Martin Stransky |
4bed479 |
+ bool stickyPref,
|
|
Martin Stransky |
4bed479 |
+ bool lockPref);
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
/* structure fields are private */
|
|
Martin Stransky |
4bed479 |
typedef struct PrefParseState {
|
|
Martin Stransky |
4bed479 |
@@ -56,6 +57,7 @@ typedef struct PrefParseState {
|
|
Martin Stransky |
4bed479 |
PrefType vtype; /* PREF_STRING,INT,BOOL */
|
|
Martin Stransky |
4bed479 |
bool fdefault; /* true if (default) pref */
|
|
Martin Stransky |
4bed479 |
bool fstickydefault; /* true if (sticky) pref */
|
|
Martin Stransky |
4bed479 |
+ bool flock; /* true if pref to be locked */
|
|
Martin Stransky |
4bed479 |
} PrefParseState;
|
|
Martin Stransky |
4bed479 |
|
|
Martin Stransky |
4bed479 |
/**
|