gecko-dev/security/psm/server/prefs.h

345 строки
12 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1994-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (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.
*/
#ifndef _PREFS_H_
#define _PREFS_H_
#if 0
#include "prtypes.h"
#include "ssmdefs.h"
typedef struct PrefFileStr PrefFile;
/************************************************************
** FUNCTION: PREF_OpenPrefs
**
** DESCRIPTION: Creates a PrefFile object for the preferences file.
** If the file does not exist, it does not create it, and
** returns a default set of preferences. To create the
** preference file you must call PREF_WritePrefs() or
** PREF_ClosePrefs(). If the file has already been
** opened, the reference count is incremented and the
** same object is returned.
**
** INPUTS:
** filename
** The name of the preferences file to open.
**
** RETURNS:
** If successful, returns a pointer to a PrefFile object.
** If failed, returns NULL.
**
*************************************************************/
PrefFile *
PREF_OpenPrefs(char *filename);
/************************************************************
** FUNCTION: PREF_WritePrefs
**
** DESCRIPTION: Writes out the contents of prefs to the preferences
** file. If the file does not exist, it is created.
**
** INPUTS:
** prefs
** The PrefFile object to write.
**
** RETURNS:
** If successful, returns PR_SUCCESS.
** If failed, returns PR_FAILURE.
**
*************************************************************/
SSMStatus
PREF_WritePrefs(PrefFile *prefs);
/************************************************************
** FUNCTION: PREF_ClosePrefs
**
** DESCRIPTION: Closes the PrefFile object. If this is the last
** reference to to object, the contents are written out
** and the object is destroyed.
**
** INPUTS:
** prefs
** The PrefFile object to close.
**
** RETURNS:
** If successful, returns PR_SUCCESS.
** If failed, returns PR_FAILURE.
**
*************************************************************/
SSMStatus
PREF_ClosePrefs(PrefFile *prefs);
/************************************************************
** FUNCTION: PREF_SetStringPref
**
** DESCRIPTION: Sets a preference with a string value. The preference
** will be created if it does not already exist.
**
** INPUTS:
** prefs
** The PrefFile object.
** name
** The name of the preference.
** value
** The value of the preference.
**
** RETURNS:
** If successful, returns PR_SUCCESS.
** If failed, returns PR_FAILURE.
**
*************************************************************/
SSMStatus
PREF_SetStringPref(PrefFile *prefs, char *name, char *value);
/************************************************************
** FUNCTION: PREF_GetStringPref
**
** DESCRIPTION: Gets the value of a string preference. The returned
** string must be freed with PR_Free().
**
** INPUTS:
** prefs
** The PrefFile object.
** name
** The name of the preference.
**
** RETURNS:
** If successful, returns a new string containing the value of
** the preference.
** If failed, returns NULL.
**
*************************************************************/
char *
PREF_GetStringPref(PrefFile *prefs, char *name);
#else /* PREFS LITE (tm) */
/* XXX sjlee
* The following set of APIs describe the preference management system which
* we will use for the time being until a fully-functional prefs/profs library
* comes online, thus the name PREFS LITE.
*/
#include "prtypes.h"
#include "ssmdefs.h"
#include "plhash.h"
/* pref types used for sending (and receiving) pref messages */
#define STRING_PREF 0
#define BOOL_PREF 1
#define INT_PREF 2
typedef struct PrefSetStr PrefSet;
/*
* Function: PrefSet* PREF_NewPrefs()
* Purpose: Creates a PrefSet object. The object is not associated with a
* file, and the values are initially filled with default values.
* Return values:
* - a pointer to a PrefSet object; if failure, returns NULL
*/
PrefSet* PREF_NewPrefs(void);
/*
* Function: SSMStatus PREF_ClosePrefs()
* Purpose: Closes the PrefSet object and frees the memory. We do not write
* changes back to the client at this time.
* Arguments and return values:
* - prefs: the PrefSet object to close
* - returns: PR_SUCCESS if successful; PR_FAILURE if failure
*/
SSMStatus PREF_ClosePrefs(PrefSet* prefs);
/*
* Function: SSMStatus PREF_GetStringPref()
* Purpose: Retrieves the string pref for (key) from (prefs).
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: on return, filled with a pointer to the string pref value (or it
* be NULL if NULL was the legally assigned value). Since this
* points to an existing string (not a new string), the caller
* should not free it. If the pref item does not exist, (*value) is
* NULL.
* - returns: PR_SUCCESS if successful; error code otherwise
*
* Notes: Note that NULL is a legal string value for a pref item. One should
* check the return value (SSMStatus) to see if an error occurred.
*/
SSMStatus PREF_GetStringPref(PrefSet* prefs, char* key, char** value);
/*
* Function: SSMStatus PREF_CopyStringPref()
* Purpose: identical to PREF_GetStringPref() except that it creates a new
* string
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: on return, filled with a pointer to the string newly allocated
* that contains the pref value (or NULL if the value is NULL).
* - returns: PR_SUCCESS if successful; error code otherwise
*
* Notes: Use this function instead of PREF_GetStringPref() if you need a
* newly allocated string. The caller is responsible for freeing
* the string when done.
*/
SSMStatus PREF_CopyStringPref(PrefSet* prefs, char* key, char** value);
/*
* Function: SSMStatus PREF_SetStringPref()
* Purpose: Sets the string pref for (key) in (prefs).
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: the string value to set for the key. NULL may be used for a
* value.
* - returns: PR_SUCCESS if successful; error code otherwise
*/
SSMStatus PREF_SetStringPref(PrefSet* prefs, char* key, char* value);
/*
* Function: PRBool PREF_StringPrefChanged()
* Purpose: Compares the value in the set with the given value and determines
* if it has changed
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: the string value to compare. NULL may be used for a value.
* - returns: PR_TRUE if the value does not match or the key was not found
* (i.e. change needs to be saved); otherwise PR_FALSE
*
* Notes: this is useful when one wants to determine the items that need
* to be permanently saved.
*/
PRBool PREF_StringPrefChanged(PrefSet* prefs, char* key, char* value);
/*
* Function: SSMStatus PREF_GetBoolPref()
* Purpose: Retrieves the boolean pref for (key) from (prefs).
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: on return, filled with the boolean pref value.
* - returns: PR_SUCCESS if successful; error code otherwise
*/
SSMStatus PREF_GetBoolPref(PrefSet* prefs, char* key, PRBool* value);
/*
* Function: SSMStatus PREF_SetBoolPref()
* Purpose: Sets the boolean pref for (key) in (prefs).
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: the boolean value to set for the key.
* - returns: PR_SUCCESS if successful; error code otherwise
*/
SSMStatus PREF_SetBoolPref(PrefSet* prefs, char* key, PRBool value);
/*
* Function: PRBool PREF_BoolPrefChanged()
* Purpose: Compares the value in the set with the given value and determines
* if it has changed
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: the boolean value to compare.
* - returns: PR_TRUE if the value does not match or the key was not found
* (i.e. change needs to be saved); otherwise PR_FALSE
*
* Notes: this is useful when one wants to determine the items that need
* to be permanently saved.
*/
PRBool PREF_BoolPrefChanged(PrefSet* prefs, char* key, PRBool value);
/*
* Function: SSMStatus PREF_GetIntPref()
* Purpose: Retrieves the integer pref for (key) from (prefs).
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: on return, filled with the integer pref value
* - returns: PR_SUCCESS if successful; error code otherwise
*/
SSMStatus PREF_GetIntPref(PrefSet* prefs, char* key, PRIntn* value);
/*
* Function: SSMStatus PREF_SetIntPref()
* Purpose: Sets the integer pref (key) in (prefs).
* Arguments and return values:
* - prefs: the prefs set
* - key: the key for the pref item
* - value: the integer value to set for the key
* - returns: PR_SUCCESS if successful; error code otherwise
*/
SSMStatus PREF_SetIntPref(PrefSet* prefs, char* key, PRIntn value);
/*
* Function: PRBool PREF_IntPrefChanged()
* Purpose: Compares the value in the set with the given value and determines
* if it has changed
* Arguments and return values:
* - prefs: the pref set
* - key: the key for the pref item
* - value: the integer value to compare.
* - returns: PR_TRUE if the value does not match or the key was not found
* (i.e. change needs to be saved); otherwise PR_FALSE
*
* Notes: this is useful when one wants to determine the items that need
* to be permanently saved.
*/
PRBool PREF_IntPrefChanged(PrefSet* prefs, char* key, PRIntn value);
/****
* Functions and typedefs needed to iterated over multiple similar pref items.
* Used to find all specified LDAP servers for UI lookup.
***/
typedef struct
{
char* childList;
char* parent;
unsigned int bufsize;
} PrefChildIter;
SSMStatus PREF_CreateChildList(PrefSet * prefs, const char* parent_key,
char ***child_list);
SSMStatus pref_append_value(char *** list, char * value);
#endif /* PREFS LITE (tm) */
#endif /* _PREFS_H_ */