This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Another const-ify patch


	Here's another const-ification patch.  Okay to install?

		--Kaveh





Mon Jan 18 21:39:46 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpplib.h (progname): Qualify a char* with the keyword `const'.

	* cppmain.c (progname): Likewise.

	* final.c (bb_str): Likewise.
	(add_bb_string, final_scan_insn, output_asm_insn): Likewise.

	* fix-header.c (progname, read_scan_file): Likewise.

	* gen-protos.c (progname): Likewise.

	* genoutput.c (output_epilogue, process_template): Likewise.
	
	* local-alloc.c (requires_inout, block_alloc): Likewise.

	* output.h (output_asm_insn, assemble_string): Likewise.

	* recog.c (recog_constraints, check_asm_operands,
	decode_asm_operands, extract_insn, preprocess_constraints,
	constrain_operands): Likewise.

	* recog.h (operand_alternative, recog_constraints, insn_template,
	insn_outfun, insn_operand_constraint, insn_name): Likewise.

	* regclass.c (record_reg_classes, scan_one_insn): Likewise.

	* regmove.c (find_matches): Likewise.

	* reload.c (alternative_allows_memconst): Likewise.

	* reload1.c (constraint_accepts_reg_p,
	reload_cse_simplify_operands): Likewise.

	* rtl.h (decode_asm_operands): Likewise.

	* scan.h (fn_decl): Likewise.

	* varasm.c (assemble_string): Likewise.


diff -rup orig/egcs-CVS19990118/gcc/cpplib.h egcs-CVS19990118/gcc/cpplib.h
--- orig/egcs-CVS19990118/gcc/cpplib.h	Mon Jan 18 12:05:54 1999
+++ egcs-CVS19990118/gcc/cpplib.h	Mon Jan 18 20:19:16 1999
@@ -529,7 +529,7 @@ struct include_hash
     
 /* Name under which this program was invoked.  */
 
-extern char *progname;
+extern const char *progname;
 
 /* The structure of a node in the hash table.  The hash table
    has entries for all tokens defined by #define commands (type T_MACRO),
diff -rup orig/egcs-CVS19990118/gcc/cppmain.c egcs-CVS19990118/gcc/cppmain.c
--- orig/egcs-CVS19990118/gcc/cppmain.c	Mon Jan 18 12:05:54 1999
+++ egcs-CVS19990118/gcc/cppmain.c	Mon Jan 18 20:19:16 1999
@@ -31,7 +31,7 @@ extern char *getenv ();
 
 #include "cpplib.h"
 
-char *progname;
+const char *progname;
 
 cpp_reader parse_in;
 cpp_options options;
diff -rup orig/egcs-CVS19990118/gcc/final.c egcs-CVS19990118/gcc/final.c
--- orig/egcs-CVS19990118/gcc/final.c	Mon Jan 18 12:05:59 1999
+++ egcs-CVS19990118/gcc/final.c	Mon Jan 18 20:19:16 1999
@@ -282,7 +282,7 @@ static int bb_func_label_num	= -1;		/* C
 
 struct bb_str {
   struct bb_str *next;		/* pointer to next string */
-  char *string;			/* string */
+  const char *string;		/* string */
   int label_num;		/* label number */
   int length;			/* string length */
 };
@@ -299,7 +299,7 @@ static int asm_insn_count	PROTO((rtx));
 static void profile_function	PROTO((FILE *));
 static void profile_after_prologue PROTO((FILE *));
 static void add_bb		PROTO((FILE *));
-static int add_bb_string	PROTO((char *, int));
+static int add_bb_string	PROTO((const char *, int));
 static void output_source_line	PROTO((FILE *, rtx));
 static rtx walk_alter_subreg	PROTO((rtx));
 static void output_asm_name	PROTO((void));
@@ -1866,7 +1866,7 @@ add_bb (file)
 
 static int
 add_bb_string (string, perm_p)
-     char *string;
+     const char *string;
      int perm_p;
 {
   int len;
@@ -2395,7 +2395,7 @@ final_scan_insn (insn, file, optimize, p
       {
 	register rtx body = PATTERN (insn);
 	int insn_code_number;
-	char *template;
+	const char *template;
 #ifdef HAVE_cc0
 	rtx note;
 #endif
@@ -3352,10 +3352,10 @@ output_asm_name ()
 
 void
 output_asm_insn (template, operands)
-     char *template;
+     const char *template;
      rtx *operands;
 {
-  register char *p;
+  register const char *p;
   register int c;
 
   /* An insn may return a null string template
diff -rup orig/egcs-CVS19990118/gcc/fix-header.c egcs-CVS19990118/gcc/fix-header.c
--- orig/egcs-CVS19990118/gcc/fix-header.c	Mon Jan 18 12:05:59 1999
+++ egcs-CVS19990118/gcc/fix-header.c	Mon Jan 18 20:19:16 1999
@@ -407,7 +407,7 @@ lookup_std_proto (name, name_length)
 
 char *inc_filename;
 int inc_filename_length;
-char *progname = "fix-header";
+const char *progname = "fix-header";
 FILE *outf;
 sstring line;
 
@@ -692,7 +692,7 @@ read_scan_file (in_fname, argc, argv)
 	  /* Append "_filbuf" and/or "_flsbuf" to the required functions.  */
 	  if (need_filbuf + need_flsbuf)
 	    {
-	      char *new_list;
+	      const char *new_list;
 	      if (need_filbuf)
 		SET_REQUIRED (fn);
 	      if (need_flsbuf)
diff -rup orig/egcs-CVS19990118/gcc/gen-protos.c egcs-CVS19990118/gcc/gen-protos.c
--- orig/egcs-CVS19990118/gcc/gen-protos.c	Mon Jan 18 12:06:11 1999
+++ egcs-CVS19990118/gcc/gen-protos.c	Mon Jan 18 20:19:16 1999
@@ -22,7 +22,7 @@ Foundation, 59 Temple Place - Suite 330,
 #include "cpphash.h"
 
 int verbose = 0;
-char *progname;
+const char *progname;
 
 #define HASH_SIZE 2503 /* a prime */
 int hash_tab[HASH_SIZE];
diff -rup orig/egcs-CVS19990118/gcc/genoutput.c egcs-CVS19990118/gcc/genoutput.c
--- orig/egcs-CVS19990118/gcc/genoutput.c	Mon Jan 18 12:06:37 1999
+++ egcs-CVS19990118/gcc/genoutput.c	Mon Jan 18 20:19:16 1999
@@ -209,7 +209,7 @@ output_epilogue ()
 {
   register struct data *d;
 
-  printf ("\nchar * const insn_template[] =\n  {\n");
+  printf ("\nconst char * const insn_template[] =\n  {\n");
   for (d = insn_data; d; d = d->next)
     {
       if (d->template)
@@ -219,7 +219,7 @@ output_epilogue ()
     }
   printf ("  };\n");
 
-  printf ("\nchar *(*const insn_outfun[])() =\n  {\n");
+  printf ("\nconst char *(*const insn_outfun[])() =\n  {\n");
   for (d = insn_data; d; d = d->next)
     {
       if (d->outfun)
@@ -239,7 +239,7 @@ output_epilogue ()
     }
   printf ("  };\n");
 
-  printf ("\nchar *insn_name[] =\n  {\n");
+  printf ("\nconst char *insn_name[] =\n  {\n");
   {
     int offset = 0;
     int next;
@@ -280,7 +280,7 @@ output_epilogue ()
       }
   }
   printf ("  };\n");
-  printf ("char **insn_name_ptr = insn_name;\n");
+  printf ("const char **insn_name_ptr = insn_name;\n");
 
   printf ("\nconst int insn_n_operands[] =\n  {\n");
   for (d = insn_data; d; d = d->next)
@@ -294,7 +294,7 @@ output_epilogue ()
 
   if (have_constraints)
     {
-      printf ("\nchar *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =\n  {\n");
+      printf ("\nconst char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =\n  {\n");
       for (d = insn_data; d; d = d->next)
 	{
 	  register int i;
@@ -571,7 +571,7 @@ process_template (d, template)
   d->template = 0;
   d->outfun = 1;
 
-  printf ("\nstatic char *\n");
+  printf ("\nstatic const char *\n");
   printf ("output_%d (operands, insn)\n", d->code_number);
   printf ("     rtx *operands ATTRIBUTE_UNUSED;\n");
   printf ("     rtx insn ATTRIBUTE_UNUSED;\n");
@@ -584,7 +584,7 @@ process_template (d, template)
   if (template[0] == '@')
     {
 
-      printf ("  static /*const*/ char *const strings_%d[] = {\n",
+      printf ("  static const char *const strings_%d[] = {\n",
 	      d->code_number);
 
       for (i = 0, cp = &template[1]; *cp; )
diff -rup orig/egcs-CVS19990118/gcc/local-alloc.c egcs-CVS19990118/gcc/local-alloc.c
--- orig/egcs-CVS19990118/gcc/local-alloc.c	Mon Jan 18 12:06:57 1999
+++ egcs-CVS19990118/gcc/local-alloc.c	Mon Jan 18 21:15:59 1999
@@ -261,7 +261,7 @@ static int find_free_reg	PROTO((enum reg
 static void mark_life		PROTO((int, enum machine_mode, int));
 static void post_mark_life	PROTO((int, enum machine_mode, int, int, int));
 static int no_conflict_p	PROTO((rtx, rtx, rtx));
-static int requires_inout	PROTO((char *));
+static int requires_inout	PROTO((const char *));
 
 /* Allocate a new quantity (new within current basic block)
    for register number REGNO which is born at index BIRTH
@@ -1105,7 +1105,7 @@ block_alloc (b)
 
 	      for (i = 1; i < recog_n_operands; i++)
 		{
-		  char *p = recog_constraints[i];
+		  const char *p = recog_constraints[i];
 		  int this_match = (requires_inout (p));
 
 		  n_matching_alts += this_match;
@@ -2177,7 +2177,7 @@ no_conflict_p (insn, r0, r1)
 
 static int
 requires_inout (p)
-     char *p;
+  const char *p;
 {
   char c;
   int found_zero = 0;
diff -rup orig/egcs-CVS19990118/gcc/output.h egcs-CVS19990118/gcc/output.h
--- orig/egcs-CVS19990118/gcc/output.h	Mon Jan 18 12:07:00 1999
+++ egcs-CVS19990118/gcc/output.h	Mon Jan 18 20:19:16 1999
@@ -81,7 +81,7 @@ extern void output_operand_lossage  PROT
 
 /* Output a string of assembler code, substituting insn operands.
    Defined in final.c.  */
-extern void output_asm_insn	PROTO((char *, rtx *));
+extern void output_asm_insn	PROTO((const char *, rtx *));
 
 /* Compute a worst-case reference address of a branch so that it
    can be safely used in the presence of aligned labels.
@@ -245,7 +245,7 @@ extern void assemble_zeros		PROTO((int))
 extern void assemble_align		PROTO((int));
 
 /* Assemble a string constant with the specified C string as contents.  */
-extern void assemble_string		PROTO((char *, int));
+extern void assemble_string		PROTO((const char *, int));
 /* Assemble everything that is needed for a variable or function declaration.
    Not used for automatic variables, and not used for function definitions.
    Should not be called for variables of incomplete structure type.
diff -rup orig/egcs-CVS19990118/gcc/recog.c egcs-CVS19990118/gcc/recog.c
--- orig/egcs-CVS19990118/gcc/recog.c	Mon Jan 18 12:07:00 1999
+++ egcs-CVS19990118/gcc/recog.c	Mon Jan 18 20:19:16 1999
@@ -86,7 +86,7 @@ int recog_n_alternatives;
 enum machine_mode recog_operand_mode[MAX_RECOG_OPERANDS];
 
 /* Indexed by N, gives the constraint string for operand N.  */
-char *recog_constraints[MAX_RECOG_OPERANDS];
+const char *recog_constraints[MAX_RECOG_OPERANDS];
 
 /* Indexed by N, gives the type (in, out, inout) for operand N.  */
 enum op_type recog_op_type[MAX_RECOG_OPERANDS];
@@ -154,7 +154,7 @@ check_asm_operands (x)
 {
   int noperands;
   rtx *operands;
-  char **constraints;
+  const char **constraints;
   int i;
 
   /* Post-reload, be more strict with things.  */
@@ -173,13 +173,13 @@ check_asm_operands (x)
     return 1;
 
   operands = (rtx *) alloca (noperands * sizeof (rtx));
-  constraints = (char **) alloca (noperands * sizeof (char *));
+  constraints = (const char **) alloca (noperands * sizeof (char *));
 
   decode_asm_operands (x, operands, NULL_PTR, constraints, NULL_PTR);
 
   for (i = 0; i < noperands; i++)
     {
-      char *c = constraints[i];
+      const char *c = constraints[i];
       if (ISDIGIT ((unsigned char)c[0]))
 	c = constraints[c[0] - '0'];
 
@@ -1385,7 +1385,7 @@ decode_asm_operands (body, operands, ope
      rtx body;
      rtx *operands;
      rtx **operand_locs;
-     char **constraints;
+     const char **constraints;
      enum machine_mode *modes;
 {
   register int i;
@@ -1985,7 +1985,7 @@ extract_insn (insn)
 			       recog_constraints, recog_operand_mode);
 	  if (noperands > 0)
 	    {
-	      char *p =  recog_constraints[0];
+	      const char *p =  recog_constraints[0];
 	      recog_n_alternatives = 1;
 	      while (*p)
 		recog_n_alternatives += (*p++ == ',');
@@ -2043,7 +2043,7 @@ preprocess_constraints ()
     {
       int j;
       struct operand_alternative *op_alt;
-      char *p = recog_constraints[i];
+      const char *p = recog_constraints[i];
 
       op_alt = recog_op_alt[i];
 
@@ -2173,7 +2173,7 @@ int
 constrain_operands (strict)
      int strict;
 {
-  char *constraints[MAX_RECOG_OPERANDS];
+  const char *constraints[MAX_RECOG_OPERANDS];
   int matching_operands[MAX_RECOG_OPERANDS];
   int earlyclobber[MAX_RECOG_OPERANDS];
   register int c;
@@ -2202,7 +2202,7 @@ constrain_operands (strict)
 	{
 	  register rtx op = recog_operand[opno];
 	  enum machine_mode mode = GET_MODE (op);
-	  register char *p = constraints[opno];
+	  register const char *p = constraints[opno];
 	  int offset = 0;
 	  int win = 0;
 	  int val;
diff -rup orig/egcs-CVS19990118/gcc/recog.h egcs-CVS19990118/gcc/recog.h
--- orig/egcs-CVS19990118/gcc/recog.h	Mon Jan 18 12:07:02 1999
+++ egcs-CVS19990118/gcc/recog.h	Mon Jan 18 20:19:17 1999
@@ -32,7 +32,7 @@ struct operand_alternative
 {
   /* Pointer to the beginning of the constraint string for this alternative,
      for easier access by alternative number.  */
-  char *constraint;
+  const char *constraint;
 
   /* The register class valid for this alternative (possibly NO_REGS).  */
   enum reg_class class;
@@ -152,7 +152,7 @@ extern int recog_n_alternatives;
 extern enum machine_mode recog_operand_mode[];
 
 /* Indexed by N, gives the constraint string for operand N.  */
-extern char *recog_constraints[];
+extern const char *recog_constraints[];
 
 /* Indexed by N, gives the type (in, out, inout) for operand N.  */
 extern enum op_type recog_op_type[];
@@ -175,9 +175,9 @@ extern struct operand_alternative recog_
 
 /* These are vectors indexed by insn-code.  Details in genoutput.c.  */
 
-extern char *const insn_template[];
+extern const char *const insn_template[];
 
-extern char *(*const insn_outfun[]) ();
+extern const char *(*const insn_outfun[]) ();
 
 extern const int insn_n_operands[];
 
@@ -191,7 +191,7 @@ extern const int insn_n_alternatives[];
    and second by the operand number.  Details in genoutput.c.  */
 
 #ifdef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
-extern char *const insn_operand_constraint[][MAX_RECOG_OPERANDS];
+extern const char *const insn_operand_constraint[][MAX_RECOG_OPERANDS];
 #endif
 
 #ifndef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
@@ -204,4 +204,4 @@ extern const char insn_operand_strict_lo
 
 extern int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS]) ();
 
-extern char * insn_name[];
+extern const char * insn_name[];
diff -rup orig/egcs-CVS19990118/gcc/regclass.c egcs-CVS19990118/gcc/regclass.c
--- orig/egcs-CVS19990118/gcc/regclass.c	Mon Jan 18 12:07:02 1999
+++ egcs-CVS19990118/gcc/regclass.c	Mon Jan 18 21:14:13 1999
@@ -693,7 +693,7 @@ static int loop_cost;
 
 static rtx scan_one_insn	PROTO((rtx, int));
 static void record_reg_classes	PROTO((int, int, rtx *, enum machine_mode *,
-				       char **, rtx));
+				       const char **, rtx));
 static int copy_cost		PROTO((rtx, enum machine_mode, 
 				       enum reg_class, int));
 static void record_address_regs	PROTO((rtx, enum reg_class, int));
@@ -755,7 +755,7 @@ scan_one_insn (insn, pass)
 {
   enum rtx_code code = GET_CODE (insn);
   enum rtx_code pat_code;
-  char *constraints[MAX_RECOG_OPERANDS];
+  const char *constraints[MAX_RECOG_OPERANDS];
   enum machine_mode modes[MAX_RECOG_OPERANDS];
   rtx set, note;
   int i, j;
@@ -898,7 +898,7 @@ scan_one_insn (insn, pass)
   for (i = 0; i < recog_n_operands - 1; i++)
     if (constraints[i][0] == '%')
       {
-	char *xconstraints[MAX_RECOG_OPERANDS];
+	const char *xconstraints[MAX_RECOG_OPERANDS];
 	int j;
 
 	/* Handle commutative operands by swapping the constraints.
@@ -1136,7 +1136,7 @@ record_reg_classes (n_alts, n_ops, ops, 
      int n_ops;
      rtx *ops;
      enum machine_mode *modes;
-     char **constraints;
+     const char **constraints;
      rtx insn;
 {
   int alt;
@@ -1156,7 +1156,7 @@ record_reg_classes (n_alts, n_ops, ops, 
 
       for (i = 0; i < n_ops; i++)
 	{
-	  char *p = constraints[i];
+	  const char *p = constraints[i];
 	  rtx op = ops[i];
 	  enum machine_mode mode = modes[i];
 	  int allows_mem = 0;
diff -rup orig/egcs-CVS19990118/gcc/regmove.c egcs-CVS19990118/gcc/regmove.c
--- orig/egcs-CVS19990118/gcc/regmove.c	Mon Jan 18 12:07:02 1999
+++ egcs-CVS19990118/gcc/regmove.c	Mon Jan 18 21:11:48 1999
@@ -1405,7 +1405,8 @@ find_matches (insn, matchp)
 
   for (op_no = 0; op_no < recog_n_operands; op_no++)
     {
-      char *p, c;
+      const char *p;
+      char c;
       int i = 0;
 
       p = recog_constraints[op_no];
diff -rup orig/egcs-CVS19990118/gcc/reload.c egcs-CVS19990118/gcc/reload.c
--- orig/egcs-CVS19990118/gcc/reload.c	Mon Jan 18 12:07:03 1999
+++ egcs-CVS19990118/gcc/reload.c	Mon Jan 18 21:17:33 1999
@@ -324,7 +324,7 @@ static int earlyclobber_operand_p PROTO(
 static int hard_reg_set_here_p	PROTO((int, int, rtx));
 static struct decomposition decompose PROTO((rtx));
 static int immune_p		PROTO((rtx, rtx, struct decomposition));
-static int alternative_allows_memconst PROTO((char *, int));
+static int alternative_allows_memconst PROTO((const char *, int));
 static rtx find_reloads_toplev	PROTO((rtx, int, enum reload_type, int, int, rtx));
 static rtx make_memloc		PROTO((rtx, int));
 static int find_reloads_address	PROTO((enum machine_mode, rtx *, rtx, rtx *,
@@ -4272,7 +4272,7 @@ find_reloads (insn, replace, ind_levels,
 
 static int
 alternative_allows_memconst (constraint, altnum)
-     char *constraint;
+     const char *constraint;
      int altnum;
 {
   register int c;
diff -rup orig/egcs-CVS19990118/gcc/reload1.c egcs-CVS19990118/gcc/reload1.c
--- orig/egcs-CVS19990118/gcc/reload1.c	Mon Jan 18 12:07:03 1999
+++ egcs-CVS19990118/gcc/reload1.c	Mon Jan 18 21:22:06 1999
@@ -426,7 +426,7 @@ static void delete_output_reload	PROTO((
 static void delete_address_reloads	PROTO((rtx, rtx));
 static void delete_address_reloads_1	PROTO((rtx, rtx, rtx));
 static rtx inc_for_reload		PROTO((rtx, rtx, rtx, int));
-static int constraint_accepts_reg_p	PROTO((char *, rtx));
+static int constraint_accepts_reg_p	PROTO((const char *, rtx));
 static void reload_cse_regs_1		PROTO((rtx));
 static void reload_cse_invalidate_regno	PROTO((int, enum machine_mode, int));
 static int reload_cse_mem_conflict_p	PROTO((rtx, rtx));
@@ -8235,7 +8235,7 @@ inc_for_reload (reloadreg, in, value, in
 
 static int
 constraint_accepts_reg_p (string, reg)
-     char *string;
+     const char *string;
      rtx reg;
 {
   int value = 0;
@@ -9009,7 +9009,7 @@ reload_cse_simplify_operands (insn)
 #ifdef REGISTER_CONSTRAINTS
   int i,j;
 
-  char *constraints[MAX_RECOG_OPERANDS];
+  const char *constraints[MAX_RECOG_OPERANDS];
   
   /* Vector recording how bad an alternative is.  */
   int *alternative_reject;
@@ -9043,7 +9043,7 @@ reload_cse_simplify_operands (insn)
     {
       enum machine_mode mode;
       int regno;
-      char *p;
+      const char *p;
 
       op_alt_regno[i] = (int *) alloca (recog_n_alternatives * sizeof (int));
       for (j = 0; j < recog_n_alternatives; j++)
diff -rup orig/egcs-CVS19990118/gcc/rtl.h egcs-CVS19990118/gcc/rtl.h
--- orig/egcs-CVS19990118/gcc/rtl.h	Mon Jan 18 12:06:37 1999
+++ egcs-CVS19990118/gcc/rtl.h	Mon Jan 18 20:19:17 1999
@@ -1029,7 +1029,9 @@ extern void free_reg_info		PROTO((void))
 
 /* recog.c */
 extern int asm_noperands		PROTO((rtx));
-extern char *decode_asm_operands	PROTO((rtx, rtx *, rtx **, char **, enum machine_mode *));
+extern char *decode_asm_operands	PROTO((rtx, rtx *, rtx **,
+					       const char **,
+					       enum machine_mode *));
 
 extern enum reg_class reg_preferred_class PROTO((int));
 extern enum reg_class reg_alternate_class PROTO((int));
diff -rup orig/egcs-CVS19990118/gcc/scan.h egcs-CVS19990118/gcc/scan.h
--- orig/egcs-CVS19990118/gcc/scan.h	Mon Jan 18 12:07:05 1999
+++ egcs-CVS19990118/gcc/scan.h	Mon Jan 18 20:19:17 1999
@@ -44,9 +44,9 @@ typedef struct sstring
 struct partial_proto;
 struct fn_decl
 {
-  char *fname;
-  char *rtype;
-  char *params;
+  const char *fname;
+  const char *rtype;
+  const char *params;
   struct partial_proto *partial;
 };
 
diff -rup orig/egcs-CVS19990118/gcc/varasm.c egcs-CVS19990118/gcc/varasm.c
--- orig/egcs-CVS19990118/gcc/varasm.c	Mon Jan 18 12:07:09 1999
+++ egcs-CVS19990118/gcc/varasm.c	Mon Jan 18 20:19:17 1999
@@ -1108,7 +1108,7 @@ assemble_align (align)
 
 void
 assemble_string (p, size)
-     char *p;
+     const char *p;
      int size;
 {
   int pos = 0;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]