changeset 109727:1c524fb8ae89

merge trunk
author Kenichi Handa <handa@etlken>
date Mon, 09 Aug 2010 20:05:27 +0900
parents b5ae5029d51c (current diff) 64732fa6188a (diff)
children 614e229f245a
files
diffstat 24 files changed, 106 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/doc/misc/ChangeLog	Mon Aug 09 17:12:49 2010 +0900
+++ b/doc/misc/ChangeLog	Mon Aug 09 20:05:27 2010 +0900
@@ -1,3 +1,8 @@
+2010-08-09  Jay Belanger  <jay.p.belanger@gmail.com>
+
+	* calc.texi (Customizing Calc): Rearrange description of new
+	variables to match the presentation of other variables.
+
 2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 
 	* org.texi (Footnotes, Tables in HTML export): Fix typos.
--- a/doc/misc/calc.texi	Mon Aug 09 17:12:49 2010 +0900
+++ b/doc/misc/calc.texi	Mon Aug 09 20:05:27 2010 +0900
@@ -35214,6 +35214,7 @@
 @defvar calc-highlight-selections-with-faces
 @defvarx calc-selected-face
 @defvarx calc-nonselected-face
+See @ref{Displaying Selections}.@*
 The variable @code{calc-highlight-selections-with-faces} 
 determines how selected sub-formulas are distinguished.
 If @code{calc-highlight-selections-with-faces} is nil, then 
@@ -35224,7 +35225,7 @@
 then a selected sub-formula is distinguished either by displaying the
 non-selected portion of the formula with @code{calc-nonselected-face} 
 or by displaying the selected sub-formula with
-@code{calc-nonselected-face}. (@pxref{Displaying Selections}.)
+@code{calc-nonselected-face}.
 @end defvar
 
 @defvar calc-multiplication-has-precedence
--- a/lisp/calc/README	Mon Aug 09 17:12:49 2010 +0900
+++ b/lisp/calc/README	Mon Aug 09 20:05:27 2010 +0900
@@ -74,6 +74,8 @@
 
 Emacs 24.1
 
+* Added option to highlight selections using faces.
+
 * Gave `calc-histogram' the option of using a vector to determine the bins.
 
 * Added "O" option prefix.
--- a/src/ChangeLog	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/ChangeLog	Mon Aug 09 20:05:27 2010 +0900
@@ -1,3 +1,32 @@
+2010-08-09  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	Use const char* instead of char*.
+	Reduce the number of warnings with -Wwrite-strings.
+	* xrdb.c (get_environ_db, get_system_name):
+	* unexelf.c (find_section):
+	* term.c (string_cost, string_cost_one_line, per_line_cost)
+	(get_named_tty, init_tty):
+	* sysdep.c (sys_subshell):
+	* sound.c (sound_perror, sound_warning, vox_open, vox_init)
+	(alsa_sound_perror, alsa_open, alsa_configure, alsa_init):
+	* search.c (Freplace_match):
+	* process.c (Fmake_network_process, send_process, init_process):
+	* lread.c (Fload, init_lread):
+	* keymap.c (Fdescribe_buffer_bindings, describe_map_tree):
+	* keyboard.c (parse_tool_bar_item, struct event_head):
+	* gtkutil.h (xg_get_font_name):
+	* gtkutil.c (get_dialog_title, create_dialog, xg_get_font_name)
+	(make_widget_for_menu_item, make_menu_item, create_menus)
+	(xg_make_tool_item):
+	* font.c (parse_matrix, font_parse_name):
+	* floatfns.c (rounding_driver, float_error_fn_name):
+	* filelock.c (get_boot_time_1, lock_file_1):
+	* fileio.c (barf_or_query_if_file_exists, check_writable):
+	* editfns.c (get_system_name, get_operating_system_release)
+	(Fencode_time, Fset_time_zone_rule):
+	* dispextern.h (string_cost, per_line_cost, get_named_tty, init_tty):
+	* buffer.c (defvar_per_buffer): Use const.
+
 2010-08-08  Kenichi Handa  <handa@m17n.org>
 
 	* charset.c: Include <stdlib.h>
--- a/src/buffer.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/buffer.c	Mon Aug 09 20:05:27 2010 +0900
@@ -5283,7 +5283,7 @@
   } while (0)
 
 static void
-defvar_per_buffer (struct Lisp_Buffer_Objfwd *bo_fwd, char *namestring,
+defvar_per_buffer (struct Lisp_Buffer_Objfwd *bo_fwd, const char *namestring,
 		   Lisp_Object *address, Lisp_Object type, char *doc)
 {
   struct Lisp_Symbol *sym;
--- a/src/dispextern.h	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/dispextern.h	Mon Aug 09 20:05:27 2010 +0900
@@ -3275,18 +3275,18 @@
 extern void tty_reset_terminal_modes (struct terminal *);
 extern void tty_turn_off_insert (struct tty_display_info *);
 extern void tty_turn_off_highlight (struct tty_display_info *);
-extern int string_cost (char *);
-extern int per_line_cost (char *);
+extern int string_cost (const char *);
+extern int per_line_cost (const char *);
 extern void calculate_costs (struct frame *);
 extern void produce_glyphs (struct it *);
 extern void produce_special_glyphs (struct it *, enum display_element_type);
 extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, unsigned long);
 extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
 extern struct terminal *get_tty_terminal (Lisp_Object, int);
-extern struct terminal *get_named_tty (char *);
+extern struct terminal *get_named_tty (const char *);
 EXFUN (Ftty_type, 1);
 extern void create_tty_output (struct frame *);
-extern struct terminal *init_tty (char *, char *, int);
+extern struct terminal *init_tty (const char *, const char *, int);
 
 
 /* Defined in scroll.c */
--- a/src/editfns.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/editfns.c	Mon Aug 09 20:05:27 2010 +0900
@@ -1404,16 +1404,16 @@
 
 /* For the benefit of callers who don't want to include lisp.h */
 
-char *
+const char *
 get_system_name (void)
 {
   if (STRINGP (Vsystem_name))
-    return (char *) SDATA (Vsystem_name);
+    return (const char *) SDATA (Vsystem_name);
   else
     return "";
 }
 
-char *
+const char *
 get_operating_system_release (void)
 {
   if (STRINGP (Voperating_system_release))
@@ -1819,7 +1819,7 @@
   else
     {
       char tzbuf[100];
-      char *tzstring;
+      const char *tzstring;
       char **oldenv = environ, **newenv;
 
       if (EQ (zone, Qt))
@@ -2001,7 +2001,7 @@
 If TZ is t, use Universal Time.  */)
   (Lisp_Object tz)
 {
-  char *tzstring;
+  const char *tzstring;
 
   /* When called for the first time, save the original TZ.  */
   if (!environbuf)
--- a/src/fileio.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/fileio.c	Mon Aug 09 20:05:27 2010 +0900
@@ -1823,7 +1823,7 @@
    If QUICK is nonzero, we ask for y or n, not yes or no.  */
 
 void
-barf_or_query_if_file_exists (Lisp_Object absname, unsigned char *querystring, int interactive, struct stat *statptr, int quick)
+barf_or_query_if_file_exists (Lisp_Object absname, const unsigned char *querystring, int interactive, struct stat *statptr, int quick)
 {
   register Lisp_Object tem, encoded_filename;
   struct stat statbuf;
@@ -2473,7 +2473,7 @@
 /* Return nonzero if file FILENAME exists and can be written.  */
 
 static int
-check_writable (char *filename)
+check_writable (const char *filename)
 {
 #ifdef MSDOS
   struct stat st;
--- a/src/filelock.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/filelock.c	Mon Aug 09 20:05:27 2010 +0900
@@ -118,7 +118,7 @@
 static int boot_time_initialized;
 
 #ifdef BOOT_TIME
-static void get_boot_time_1 (char *, int);
+static void get_boot_time_1 (const char *, int);
 #endif
 
 static time_t
@@ -249,7 +249,7 @@
    Success is indicated by setting BOOT_TIME to a larger value.  */
 
 void
-get_boot_time_1 (char *filename, int newest)
+get_boot_time_1 (const char *filename, int newest)
 {
   struct utmp ut, *utp;
   int desc;
@@ -360,8 +360,8 @@
 {
   register int err;
   time_t boot_time;
-  char *user_name;
-  char *host_name;
+  const char *user_name;
+  const char *host_name;
   char *lock_info_str;
 
   /* Call this first because it can GC.  */
--- a/src/floatfns.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/floatfns.c	Mon Aug 09 20:05:27 2010 +0900
@@ -117,7 +117,7 @@
 
 static Lisp_Object float_error_arg, float_error_arg2;
 
-static char *float_error_fn_name;
+static const char *float_error_fn_name;
 
 /* Evaluate the floating point expression D, recording NUM
    as the original argument for error messages.
@@ -746,7 +746,7 @@
 rounding_driver (Lisp_Object arg, Lisp_Object divisor,
 		 double (*double_round) (double),
 		 EMACS_INT (*int_round2) (EMACS_INT, EMACS_INT),
-		 char *name)
+		 const char *name)
 {
   CHECK_NUMBER_OR_FLOAT (arg);
 
--- a/src/font.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/font.c	Mon Aug 09 20:05:27 2010 +0900
@@ -699,9 +699,9 @@
 
 /* Font name parser and unparser */
 
-static int parse_matrix (char *);
+static int parse_matrix (const char *);
 static int font_expand_wildcards (Lisp_Object *, int);
-static int font_parse_name (char *, Lisp_Object);
+static int font_parse_name (const char *, Lisp_Object);
 
 /* An enumerator for each field of an XLFD font name.  */
 enum xlfd_field_index
@@ -758,7 +758,7 @@
    -1.  */
 
 static int
-parse_matrix (char *p)
+parse_matrix (const char *p)
 {
   double matrix[4];
   char *end;
@@ -1765,7 +1765,7 @@
    0.  Otherwise return -1.  */
 
 static int
-font_parse_name (char *name, Lisp_Object font)
+font_parse_name (const char *name, Lisp_Object font)
 {
   if (name[0] == '-' || strchr (name, '*') || strchr (name, '?'))
     return font_parse_xlfd (name, font);
--- a/src/gtkutil.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/gtkutil.c	Mon Aug 09 20:05:27 2010 +0900
@@ -1183,10 +1183,10 @@
 /* Return the dialog title to use for a dialog of type KEY.
    This is the encoding used by lwlib.  We use the same for GTK.  */
 
-static char *
+static const char *
 get_dialog_title (char key)
 {
-  char *title = "";
+  const char *title = "";
 
   switch (key) {
   case 'E': case 'e':
@@ -1243,7 +1243,7 @@
                GCallback select_cb,
                GCallback deactivate_cb)
 {
-  char *title = get_dialog_title (wv->name[0]);
+  const char *title = get_dialog_title (wv->name[0]);
   int total_buttons = wv->name[1] - '0';
   int right_buttons = wv->name[4] - '0';
   int left_buttons;
@@ -1761,7 +1761,7 @@
    DEFAULT_NAME, if non-zero, is the default font name.  */
 
 char *
-xg_get_font_name (FRAME_PTR f, char *default_name)
+xg_get_font_name (FRAME_PTR f, const char *default_name)
 {
   GtkWidget *w;
   char *fontname = NULL;
@@ -1971,7 +1971,7 @@
    Returns the GtkHBox.  */
 
 static GtkWidget *
-make_widget_for_menu_item (char *utf8_label, char *utf8_key)
+make_widget_for_menu_item (const char *utf8_label, const char *utf8_key)
 {
   GtkWidget *wlbl;
   GtkWidget *wkey;
@@ -2009,8 +2009,8 @@
    but the MacOS X version doesn't either, so I guess that is OK.  */
 
 static GtkWidget *
-make_menu_item (char *utf8_label,
-                char *utf8_key,
+make_menu_item (const char *utf8_label,
+                const char *utf8_key,
                 widget_value *item,
                 GSList **group)
 {
@@ -2238,7 +2238,7 @@
               int add_tearoff_p,
               GtkWidget *topmenu,
               xg_menu_cb_data *cl_data,
-              char *name)
+              const char *name)
 {
   widget_value *item;
   GtkWidget *wmenu = topmenu;
@@ -3977,7 +3977,7 @@
 xg_make_tool_item (FRAME_PTR f,
                    GtkWidget *wimage,
                    GtkWidget **wbutton,
-                   char *label,
+                   const char *label,
                    int i)
 {
   GtkToolItem *ti = gtk_tool_item_new ();
--- a/src/gtkutil.h	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/gtkutil.h	Mon Aug 09 20:05:27 2010 +0900
@@ -133,7 +133,7 @@
                                int mustmatch_p,
                                int only_dir_p);
 
-extern char *xg_get_font_name (FRAME_PTR f, char *);
+extern char *xg_get_font_name (FRAME_PTR f, const char *);
 
 extern GtkWidget *xg_create_widget (const char *type,
                                     const char *name,
--- a/src/keyboard.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/keyboard.c	Mon Aug 09 20:05:27 2010 +0900
@@ -8326,8 +8326,8 @@
       /* Try to make one from caption and key.  */
       Lisp_Object key = PROP (TOOL_BAR_ITEM_KEY);
       Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION);
-      char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : "";
-      char *caption = STRINGP (capt) ? (char *) SDATA (capt) : "";
+      const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : "";
+      const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : "";
       char buf[64];
       EMACS_INT max_lbl = 2*tool_bar_max_label_size;
       Lisp_Object new_lbl;
@@ -11532,7 +11532,7 @@
    event header symbols and put properties on them.  */
 struct event_head {
   Lisp_Object *var;
-  char *name;
+  const char *name;
   Lisp_Object *kind;
 };
 
--- a/src/keymap.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/keymap.c	Mon Aug 09 20:05:27 2010 +0900
@@ -2962,7 +2962,7 @@
   register Lisp_Object start1;
   struct gcpro gcpro1;
 
-  char *alternate_heading
+  const char *alternate_heading
     = "\
 Keyboard translations:\n\n\
 You type        Translation\n\
@@ -3134,13 +3134,13 @@
 
 void
 describe_map_tree (Lisp_Object startmap, int partial, Lisp_Object shadow,
-		   Lisp_Object prefix, char *title, int nomenu, int transl,
+		   Lisp_Object prefix, const char *title, int nomenu, int transl,
 		   int always_title, int mention_shadow)
 {
   Lisp_Object maps, orig_maps, seen, sub_shadows;
   struct gcpro gcpro1, gcpro2, gcpro3;
   int something = 0;
-  char *key_heading
+  const char *key_heading
     = "\
 key             binding\n\
 ---             -------\n";
--- a/src/keymap.h	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/keymap.h	Mon Aug 09 20:05:27 2010 +0900
@@ -43,7 +43,7 @@
 extern Lisp_Object get_keymap (Lisp_Object, int, int);
 EXFUN (Fset_keymap_parent, 2);
 extern void describe_map_tree (Lisp_Object, int, Lisp_Object, Lisp_Object,
-                               char *, int, int, int, int);
+                               const char *, int, int, int, int);
 extern int current_minor_maps (Lisp_Object **, Lisp_Object **);
 extern void initial_define_key (Lisp_Object, int, const char *);
 extern void initial_define_lispy_key (Lisp_Object, const char *, const char *);
--- a/src/lread.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/lread.c	Mon Aug 09 20:05:27 2010 +0900
@@ -984,7 +984,7 @@
   int compiled = 0;
   Lisp_Object handler;
   int safe_p = 1;
-  char *fmode = "r";
+  const char *fmode = "r";
   Lisp_Object tmp[2];
   int version;
 
@@ -3971,7 +3971,7 @@
 void
 init_lread (void)
 {
-  char *normal;
+  const char *normal;
   int turn_off_warning = 0;
 
   /* Compute the default load-path.  */
--- a/src/process.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/process.c	Mon Aug 09 20:05:27 2010 +0900
@@ -180,7 +180,7 @@
 #define SIGCHLD SIGCLD
 #endif /* SIGCLD */
 
-extern char *get_operating_system_release (void);
+extern const char *get_operating_system_release (void);
 
 /* Serial processes require termios or Windows.  */
 #if defined (HAVE_TERMIOS) || defined (WINDOWSNT)
@@ -3033,7 +3033,8 @@
 #ifdef HAVE_GETADDRINFO
   struct addrinfo ai, *res, *lres;
   struct addrinfo hints;
-  char *portstring, portbuf[128];
+  const char *portstring;
+  char portbuf[128];
 #else /* HAVE_GETADDRINFO */
   struct _emacs_addrinfo
   {
@@ -5415,7 +5416,7 @@
    This function can evaluate Lisp code and can garbage collect.  */
 
 static void
-send_process (volatile Lisp_Object proc, unsigned char *volatile buf,
+send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
 	      volatile int len, volatile Lisp_Object object)
 {
   /* Use volatile to protect variables from being clobbered by longjmp.  */
@@ -7423,7 +7424,7 @@
      processes.  As such, we only change the default value.  */
  if (initialized)
   {
-    char *release = get_operating_system_release ();
+    const char *release = get_operating_system_release ();
     if (!release || !release[0] || (release[0] < MIN_PTY_KERNEL_VERSION
 				    && release[1] == '.')) {
       Vprocess_connection_type = Qnil;
--- a/src/search.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/search.c	Mon Aug 09 20:05:27 2010 +0900
@@ -2655,7 +2655,7 @@
       for (pos_byte = 0, pos = 0; pos_byte < length;)
 	{
 	  unsigned char str[MAX_MULTIBYTE_LENGTH];
-	  unsigned char *add_stuff = NULL;
+	  const unsigned char *add_stuff = NULL;
 	  int add_len = 0;
 	  int idx = -1;
 
--- a/src/sound.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/sound.c	Mon Aug 09 20:05:27 2010 +0900
@@ -115,10 +115,10 @@
 };
 
 #ifdef HAVE_ALSA
-static void alsa_sound_perror (char *, int) NO_RETURN;
+static void alsa_sound_perror (const char *, int) NO_RETURN;
 #endif
-static void sound_perror (char *) NO_RETURN;
-static void sound_warning (char *);
+static void sound_perror (const char *) NO_RETURN;
+static void sound_warning (const char *);
 static int parse_sound (Lisp_Object, Lisp_Object *);
 
 /* END: Common Definitions */
@@ -329,7 +329,7 @@
 /* Like perror, but signals an error.  */
 
 static void
-sound_perror (char *msg)
+sound_perror (const char *msg)
 {
   int saved_errno = errno;
 
@@ -347,7 +347,7 @@
 /* Display a warning message.  */
 
 static void
-sound_warning (char *msg)
+sound_warning (const char *msg)
 {
   message (msg);
 }
@@ -727,7 +727,7 @@
 static void
 vox_open (struct sound_device *sd)
 {
-  char *file;
+  const char *file;
 
   /* Open the sound device.  Default is /dev/dsp.  */
   if (sd->file)
@@ -872,7 +872,7 @@
 static int
 vox_init (struct sound_device *sd)
 {
-  char *file;
+  const char *file;
   int fd;
 
   /* Open the sound device.  Default is /dev/dsp.  */
@@ -915,7 +915,7 @@
 /* This driver is available on GNU/Linux. */
 
 static void
-alsa_sound_perror (char *msg, int err)
+alsa_sound_perror (const char *msg, int err)
 {
   error ("%s: %s", msg, snd_strerror (err));
 }
@@ -934,7 +934,7 @@
 static void
 alsa_open (struct sound_device *sd)
 {
-  char *file;
+  const char *file;
   struct alsa_params *p;
   int err;
 
@@ -1056,7 +1056,7 @@
       int chn;
       snd_mixer_t *handle;
       snd_mixer_elem_t *e;
-      char *file = sd->file ? sd->file : DEFAULT_ALSA_SOUND_DEVICE;
+      const char *file = sd->file ? sd->file : DEFAULT_ALSA_SOUND_DEVICE;
 
       if (snd_mixer_open (&handle, 0) >= 0)
         {
@@ -1220,7 +1220,7 @@
 static int
 alsa_init (struct sound_device *sd)
 {
-  char *file;
+  const char *file;
   snd_pcm_t *handle;
   int err;
 
--- a/src/sysdep.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/sysdep.c	Mon Aug 09 20:05:27 2010 +0900
@@ -630,7 +630,7 @@
 
   if (pid == 0)
     {
-      char *sh = 0;
+      const char *sh = 0;
 
 #ifdef DOS_NT    /* MW, Aug 1993 */
       getwd (oldwd);
--- a/src/term.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/term.c	Mon Aug 09 20:05:27 2010 +0900
@@ -1087,7 +1087,7 @@
    not counting any line-dependent padding.  */
 
 int
-string_cost (char *str)
+string_cost (const char *str)
 {
   cost = 0;
   if (str)
@@ -1099,7 +1099,7 @@
    counting any line-dependent padding at one line.  */
 
 static int
-string_cost_one_line (char *str)
+string_cost_one_line (const char *str)
 {
   cost = 0;
   if (str)
@@ -1111,7 +1111,7 @@
    in tenths of characters.  */
 
 int
-per_line_cost (char *str)
+per_line_cost (const char *str)
 {
   cost = 0;
   if (str)
@@ -2301,7 +2301,7 @@
    Returns NULL if the named terminal device is not opened.  */
 
 struct terminal *
-get_named_tty (char *name)
+get_named_tty (const char *name)
 {
   struct terminal *t;
 
@@ -3372,7 +3372,7 @@
    If MUST_SUCCEED is true, then all errors are fatal. */
 
 struct terminal *
-init_tty (char *name, char *terminal_type, int must_succeed)
+init_tty (const char *name, const char *terminal_type, int must_succeed)
 {
   char *area = NULL;
   char **address = &area;
--- a/src/unexelf.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/unexelf.c	Mon Aug 09 20:05:27 2010 +0900
@@ -610,7 +610,7 @@
    if NOERROR is 0; we return -1 if NOERROR is nonzero.  */
 
 static int
-find_section (char *name, char *section_names, char *file_name,
+find_section (const char *name, char *section_names, char *file_name,
 	      ElfW(Ehdr) *old_file_h, ElfW(Shdr) *old_section_h, int noerror)
 {
   int idx;
--- a/src/xrdb.c	Mon Aug 09 17:12:49 2010 +0900
+++ b/src/xrdb.c	Mon Aug 09 20:05:27 2010 +0900
@@ -53,7 +53,7 @@
 extern struct passwd *getpwuid (uid_t);
 extern struct passwd *getpwnam (const char *);
 
-extern char *get_system_name (void);
+extern const char *get_system_name (void);
 
 char *x_get_string_resource (XrmDatabase rdb, const char *name,
 			     const char *class);
@@ -438,7 +438,8 @@
 {
   XrmDatabase db;
   char *p;
-  char *path = 0, *home = 0, *host;
+  char *path = 0, *home = 0;
+  const char *host;
 
   if ((p = getenv ("XENVIRONMENT")) == NULL)
     {