prefs.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:12k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /*
  3.  * The contents of this file are subject to the Mozilla Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/MPL/
  7.  * 
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  * 
  13.  * The Original Code is the Netscape security libraries.
  14.  * 
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation.  Portions created by Netscape are 
  17.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  18.  * Rights Reserved.
  19.  * 
  20.  * Contributor(s):
  21.  * 
  22.  * Alternatively, the contents of this file may be used under the
  23.  * terms of the GNU General Public License Version 2 or later (the
  24.  * "GPL"), in which case the provisions of the GPL are applicable 
  25.  * instead of those above.  If you wish to allow use of your 
  26.  * version of this file only under the terms of the GPL and not to
  27.  * allow others to use your version of this file under the MPL,
  28.  * indicate your decision by deleting the provisions above and
  29.  * replace them with the notice and other provisions required by
  30.  * the GPL.  If you do not delete the provisions above, a recipient
  31.  * may use your version of this file under either the MPL or the
  32.  * GPL.
  33.  */
  34. #ifndef _PREFS_H_
  35. #define _PREFS_H_
  36. #if 0
  37. #include "prtypes.h"
  38. #include "ssmdefs.h"
  39. typedef struct PrefFileStr PrefFile;
  40. /************************************************************
  41. ** FUNCTION: PREF_OpenPrefs
  42. **
  43. ** DESCRIPTION: Creates a PrefFile object for the preferences file.
  44. **              If the file does not exist, it does not create it, and
  45. **              returns a default set of preferences.  To create the
  46. **              preference file you must call PREF_WritePrefs() or
  47. **              PREF_ClosePrefs().  If the file has already been
  48. **              opened, the reference count is incremented and the
  49. **              same object is returned.
  50. **              
  51. ** INPUTS:
  52. **   filename
  53. **     The name of the preferences file to open.
  54. **       
  55. ** RETURNS:
  56. **   If successful, returns a pointer to a PrefFile object.
  57. **   If failed, returns NULL.
  58. **
  59. *************************************************************/
  60. PrefFile *
  61. PREF_OpenPrefs(char *filename);
  62. /************************************************************
  63. ** FUNCTION: PREF_WritePrefs
  64. **
  65. ** DESCRIPTION: Writes out the contents of prefs to the preferences
  66. **              file.  If the file does not exist, it is created.
  67. **              
  68. ** INPUTS:
  69. **   prefs
  70. **     The PrefFile object to write.
  71. **       
  72. ** RETURNS:
  73. **   If successful, returns PR_SUCCESS.
  74. **   If failed, returns PR_FAILURE.
  75. **
  76. *************************************************************/
  77. SSMStatus
  78. PREF_WritePrefs(PrefFile *prefs);
  79. /************************************************************
  80. ** FUNCTION: PREF_ClosePrefs
  81. **
  82. ** DESCRIPTION: Closes the PrefFile object.  If this is the last
  83. **              reference to to object, the contents are written out
  84. **              and the object is destroyed.
  85. **              
  86. ** INPUTS:
  87. **   prefs
  88. **     The PrefFile object to close.
  89. **       
  90. ** RETURNS:
  91. **   If successful, returns PR_SUCCESS.
  92. **   If failed, returns PR_FAILURE.
  93. **
  94. *************************************************************/
  95. SSMStatus
  96. PREF_ClosePrefs(PrefFile *prefs);
  97. /************************************************************
  98. ** FUNCTION: PREF_SetStringPref
  99. **
  100. ** DESCRIPTION: Sets a preference with a string value.  The preference
  101. **              will be created if it does not already exist.
  102. **              
  103. ** INPUTS:
  104. **   prefs
  105. **     The PrefFile object.
  106. **   name
  107. **     The name of the preference.
  108. **   value
  109. **     The value of the preference.
  110. **       
  111. ** RETURNS:
  112. **   If successful, returns PR_SUCCESS.
  113. **   If failed, returns PR_FAILURE.
  114. **
  115. *************************************************************/
  116. SSMStatus
  117. PREF_SetStringPref(PrefFile *prefs, char *name, char *value);
  118. /************************************************************
  119. ** FUNCTION: PREF_GetStringPref
  120. **
  121. ** DESCRIPTION: Gets the value of a string preference.  The returned
  122. **              string must be freed with PR_Free().
  123. **
  124. ** INPUTS:
  125. **   prefs
  126. **     The PrefFile object.
  127. **   name
  128. **     The name of the preference.
  129. **       
  130. ** RETURNS:
  131. **   If successful, returns a new string containing the value of
  132. **     the preference.
  133. **   If failed, returns NULL.
  134. **
  135. *************************************************************/
  136. char *
  137. PREF_GetStringPref(PrefFile *prefs, char *name);
  138. #else    /* PREFS LITE (tm) */
  139. /* XXX sjlee
  140.  * The following set of APIs describe the preference management system which
  141.  * we will use for the time being until a fully-functional prefs/profs library
  142.  * comes online, thus the name PREFS LITE.
  143.  */
  144. #include "prtypes.h"
  145. #include "ssmdefs.h"
  146. #include "plhash.h"
  147. /* pref types used for sending (and receiving) pref messages */
  148. #define STRING_PREF 0
  149. #define BOOL_PREF 1
  150. #define INT_PREF 2
  151. typedef struct PrefSetStr PrefSet;
  152. /*
  153.  * Function: PrefSet* PREF_NewPrefs()
  154.  * Purpose: Creates a PrefSet object.  The object is not associated with a
  155.  *          file, and the values are initially filled with default values.
  156.  * Return values:
  157.  * - a pointer to a PrefSet object; if failure, returns NULL
  158.  */
  159. PrefSet* PREF_NewPrefs(void);
  160. /*
  161.  * Function: SSMStatus PREF_ClosePrefs()
  162.  * Purpose: Closes the PrefSet object and frees the memory.  We do not write
  163.  *          changes back to the client at this time.
  164.  * Arguments and return values:
  165.  * - prefs: the PrefSet object to close
  166.  * - returns: PR_SUCCESS if successful; PR_FAILURE if failure
  167.  */
  168. SSMStatus PREF_ClosePrefs(PrefSet* prefs);
  169. /*
  170.  * Function: SSMStatus PREF_GetStringPref()
  171.  * Purpose: Retrieves the string pref for (key) from (prefs).
  172.  * Arguments and return values:
  173.  * - prefs: the pref set
  174.  * - key: the key for the pref item
  175.  * - value: on return, filled with a pointer to the string pref value (or it
  176.  *          be NULL if NULL was the legally assigned value).  Since this 
  177.  *          points to an existing string (not a new string), the caller
  178.  *          should not free it.  If the pref item does not exist, (*value) is
  179.  *          NULL.
  180.  * - returns: PR_SUCCESS if successful; error code otherwise
  181.  *
  182.  * Notes: Note that NULL is a legal string value for a pref item.  One should
  183.  *        check the return value (SSMStatus) to see if an error occurred.
  184.  */
  185. SSMStatus PREF_GetStringPref(PrefSet* prefs, char* key, char** value);
  186. /*
  187.  * Function: SSMStatus PREF_CopyStringPref()
  188.  * Purpose: identical to PREF_GetStringPref() except that it creates a new
  189.  *          string
  190.  * Arguments and return values:
  191.  * - prefs: the pref set
  192.  * - key: the key for the pref item
  193.  * - value: on return, filled with a pointer to the string newly allocated
  194.  *          that contains the pref value (or NULL if the value is NULL).
  195.  * - returns: PR_SUCCESS if successful; error code otherwise
  196.  *
  197.  * Notes: Use this function instead of PREF_GetStringPref() if you need a
  198.  *        newly allocated string.  The caller is responsible for freeing
  199.  *        the string when done.
  200.  */
  201. SSMStatus PREF_CopyStringPref(PrefSet* prefs, char* key, char** value);
  202. /*
  203.  * Function: SSMStatus PREF_SetStringPref()
  204.  * Purpose: Sets the string pref for (key) in (prefs).
  205.  * Arguments and return values:
  206.  * - prefs: the pref set
  207.  * - key: the key for the pref item
  208.  * - value: the string value to set for the key.  NULL may be used for a
  209.  *          value.
  210.  * - returns: PR_SUCCESS if successful; error code otherwise
  211.  */
  212. SSMStatus PREF_SetStringPref(PrefSet* prefs, char* key, char* value);
  213. /*
  214.  * Function: PRBool PREF_StringPrefChanged()
  215.  * Purpose: Compares the value in the set with the given value and determines
  216.  *          if it has changed
  217.  * Arguments and return values:
  218.  * - prefs: the pref set
  219.  * - key: the key for the pref item
  220.  * - value: the string value to compare.  NULL may be used for a value.
  221.  * - returns: PR_TRUE if the value does not match or the key was not found
  222.  *            (i.e. change needs to be saved); otherwise PR_FALSE
  223.  *
  224.  * Notes: this is useful when one wants to determine the items that need
  225.  *        to be permanently saved.
  226.  */
  227. PRBool PREF_StringPrefChanged(PrefSet* prefs, char* key, char* value);
  228. /*
  229.  * Function: SSMStatus PREF_GetBoolPref()
  230.  * Purpose: Retrieves the boolean pref for (key) from (prefs).
  231.  * Arguments and return values:
  232.  * - prefs: the pref set
  233.  * - key: the key for the pref item
  234.  * - value: on return, filled with the boolean pref value.
  235.  * - returns: PR_SUCCESS if successful; error code otherwise
  236.  */
  237. SSMStatus PREF_GetBoolPref(PrefSet* prefs, char* key, PRBool* value);
  238. /*
  239.  * Function: SSMStatus PREF_SetBoolPref()
  240.  * Purpose: Sets the boolean pref for (key) in (prefs).
  241.  * Arguments and return values:
  242.  * - prefs: the pref set
  243.  * - key: the key for the pref item
  244.  * - value: the boolean value to set for the key.
  245.  * - returns: PR_SUCCESS if successful; error code otherwise
  246.  */
  247. SSMStatus PREF_SetBoolPref(PrefSet* prefs, char* key, PRBool value);
  248. /*
  249.  * Function: PRBool PREF_BoolPrefChanged()
  250.  * Purpose: Compares the value in the set with the given value and determines
  251.  *          if it has changed
  252.  * Arguments and return values:
  253.  * - prefs: the pref set
  254.  * - key: the key for the pref item
  255.  * - value: the boolean value to compare.
  256.  * - returns: PR_TRUE if the value does not match or the key was not found
  257.  *            (i.e. change needs to be saved); otherwise PR_FALSE
  258.  *
  259.  * Notes: this is useful when one wants to determine the items that need
  260.  *        to be permanently saved.
  261.  */
  262. PRBool PREF_BoolPrefChanged(PrefSet* prefs, char* key, PRBool value);
  263. /*
  264.  * Function: SSMStatus PREF_GetIntPref()
  265.  * Purpose: Retrieves the integer pref for (key) from (prefs).
  266.  * Arguments and return values:
  267.  * - prefs: the pref set
  268.  * - key: the key for the pref item
  269.  * - value: on return, filled with the integer pref value
  270.  * - returns: PR_SUCCESS if successful; error code otherwise
  271.  */
  272. SSMStatus PREF_GetIntPref(PrefSet* prefs, char* key, PRIntn* value);
  273. /*
  274.  * Function: SSMStatus PREF_SetIntPref()
  275.  * Purpose: Sets the integer pref (key) in (prefs).
  276.  * Arguments and return values:
  277.  * - prefs: the prefs set
  278.  * - key: the key for the pref item
  279.  * - value: the integer value to set for the key
  280.  * - returns: PR_SUCCESS if successful; error code otherwise
  281.  */
  282. SSMStatus PREF_SetIntPref(PrefSet* prefs, char* key, PRIntn value);
  283. /*
  284.  * Function: PRBool PREF_IntPrefChanged()
  285.  * Purpose: Compares the value in the set with the given value and determines
  286.  *          if it has changed
  287.  * Arguments and return values:
  288.  * - prefs: the pref set
  289.  * - key: the key for the pref item
  290.  * - value: the integer value to compare.
  291.  * - returns: PR_TRUE if the value does not match or the key was not found
  292.  *            (i.e. change needs to be saved); otherwise PR_FALSE
  293.  *
  294.  * Notes: this is useful when one wants to determine the items that need
  295.  *        to be permanently saved.
  296.  */
  297. PRBool PREF_IntPrefChanged(PrefSet* prefs, char* key, PRIntn value);
  298. /****
  299.  * Functions and typedefs needed to iterated over multiple similar pref items.
  300.  * Used to find all specified LDAP servers for UI lookup.
  301.  ***/
  302. typedef struct
  303. {
  304.         char*            childList;
  305.         char*            parent;
  306.         unsigned int bufsize;
  307. } PrefChildIter;
  308. SSMStatus PREF_CreateChildList(PrefSet * prefs, const char* parent_key, 
  309.                                char ***child_list);
  310. SSMStatus pref_append_value(char *** list, char * value);
  311. #endif    /* PREFS LITE (tm) */
  312. #endif /* _PREFS_H_ */