public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: scox@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Merge branch 'master' of ssh://sources.redhat.com/git/frysk
Date: Mon, 19 Nov 2007 17:58:00 -0000	[thread overview]
Message-ID: <20071119175814.29886.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  fd5a20b87a3d6c171fe8888b6d006b9241f1928c (commit)
       via  1213a237d4c989ed9f1310f0c823571d78cbb8f5 (commit)
      from  1a09ef28c7da47ad245f2a502780e5e592308035 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit fd5a20b87a3d6c171fe8888b6d006b9241f1928c
Merge: 1213a237d4c989ed9f1310f0c823571d78cbb8f5 1a09ef28c7da47ad245f2a502780e5e592308035
Author: Stan Cox <scox@redhat.com>
Date:   Mon Nov 19 12:52:05 2007 -0500

    Merge branch 'master' of ssh://sources.redhat.com/git/frysk

commit 1213a237d4c989ed9f1310f0c823571d78cbb8f5
Author: Stan Cox <scox@redhat.com>
Date:   Mon Nov 19 12:51:38 2007 -0500

    Add indentation to toPrint. (5310)
    
    * Type.java (toPrint(PrintWriter, Location, ByteBuffer, Format, int)):
    Add indent parameter.  Change all implementers.
    (toPrint(PrintWriter writer, int indent)): Likewise.
    * Value.java (toPrint(PrintWriter, ByteBuffer, Format, int): Likewise.
    * CompositeType.java (toPrint (PrintWriter, Location, ByteBuffer,
    * gen-type-funit-tests.py (main): Allow for improved formatting of
    array of struct and ptr to struct.
    Format, int)): Remove CompositeType special case.
    (toPrint (PrintWriter, int)): Likewise.

-----------------------------------------------------------------------

Summary of changes:
 .../frysk/debuginfo/gen-type-expect-tests.py       |    4 +-
 frysk-core/frysk/hpd/EvalCommands.java             |    6 +-
 frysk-core/frysk/pkglibdir/ChangeLog               |    5 +
 frysk-core/frysk/pkglibdir/gen-type-funit-tests.py |   80 ++++++++++----------
 frysk-core/frysk/value/ArithmeticType.java         |    2 +-
 frysk-core/frysk/value/ArrayType.java              |   18 ++--
 frysk-core/frysk/value/BooleanType.java            |    2 +-
 frysk-core/frysk/value/ChangeLog                   |   10 +++
 frysk-core/frysk/value/CharType.java               |    2 +-
 frysk-core/frysk/value/CompositeType.java          |   38 ++++------
 frysk-core/frysk/value/EnumType.java               |    4 +-
 frysk-core/frysk/value/FloatingPointType.java      |    2 +-
 frysk-core/frysk/value/FunctionType.java           |    8 +-
 frysk-core/frysk/value/IntegerType.java            |    2 +-
 frysk-core/frysk/value/PointerType.java            |   13 ++--
 frysk-core/frysk/value/Type.java                   |   12 ++--
 frysk-core/frysk/value/TypeDecorator.java          |   10 +-
 frysk-core/frysk/value/TypeDef.java                |    2 +-
 frysk-core/frysk/value/UnknownType.java            |    6 +-
 frysk-core/frysk/value/Value.java                  |   11 ++-
 frysk-core/frysk/value/Variable.java               |    4 +-
 frysk-core/frysk/value/VoidType.java               |    4 +-
 22 files changed, 128 insertions(+), 117 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/debuginfo/gen-type-expect-tests.py b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
index caf26d5..c8197e2 100644
--- a/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
+++ b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
@@ -115,6 +115,8 @@ public class %s extends TestLib {
 		 assertNotNull(varDie);
 		 varType = typeEntry.getType(varDie.getType());
 		 assertNotNull(varType);
+                 // System.out.println("Expect: " + expect[i].symbol + "\\n'" +
+                 //    expect[i].output + "'\\nGot:\\n'" + varType.toPrint());
 		 assertEquals(myName + expect[i].symbol, expect[i].output, varType.toPrint());
 	     }
 	}
@@ -137,7 +139,7 @@ public class %s extends TestLib {
                 assertNotNull(varDie);
 		DebugInfo debugInfo = new DebugInfo(frame);
                 Value value =  debugInfo.print(expect[i].symbol, frame);
-                value.toPrint(pw, task.getMemory(), Format.NATURAL);
+                value.toPrint(pw, task.getMemory(), Format.NATURAL, 0);
                 pw.flush();
                 String valueString = baos.toString();
                 // System.out.println("Expect: " + expect[i].symbol +
diff --git a/frysk-core/frysk/hpd/EvalCommands.java b/frysk-core/frysk/hpd/EvalCommands.java
index 1d6082a..b63e3bf 100644
--- a/frysk-core/frysk/hpd/EvalCommands.java
+++ b/frysk-core/frysk/hpd/EvalCommands.java
@@ -63,10 +63,10 @@ abstract class EvalCommands extends ParameterizedCommand {
 		    Type t = e.getType();
 		    if (t instanceof PointerType) {
 			writer.print("(");
-			t.toPrint(writer);
+			t.toPrint(writer, 0);
 			writer.print(") ");
 		    }	
-		    e.getValue().toPrint(writer, memory, format);
+		    e.getValue().toPrint(writer, memory, format, 0);
 		    writer.println();
 		}
 	    };
@@ -80,7 +80,7 @@ abstract class EvalCommands extends ParameterizedCommand {
 	static final Printer TYPE = new Printer() {
 		void print(Expression e, PrintWriter writer, Format format,
 			   ByteBuffer memory) {
-		    e.getType().toPrint(writer);
+		    e.getType().toPrint(writer, 0);
 		    writer.println();
 		}
 	    };
diff --git a/frysk-core/frysk/pkglibdir/ChangeLog b/frysk-core/frysk/pkglibdir/ChangeLog
index 607b5fb..d383139 100644
--- a/frysk-core/frysk/pkglibdir/ChangeLog
+++ b/frysk-core/frysk/pkglibdir/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-19  Stan Cox  <scox@redhat.com>
+
+	* gen-type-funit-tests.py (main): Allow for improved formatting of
+	array of struct and ptr to struct.
+
 2007-11-15  Stan Cox  <scox@redhat.com>
 
 	* funit-quicksort.c: New.
diff --git a/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py b/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
index a23ae24..123d477 100644
--- a/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
+++ b/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
@@ -417,32 +417,31 @@ c_file.add('''struct {
 }''', "struct_arr_arr_int", '''{
   .arr_arr_int={{1,2},{3,4}},
 }''')
-# ??? array doesn't know the current indentation level
 c_file.add('''struct {
   struct {
-  int int_var;
-} arr_struct[2];
+    int int_var;
+  } arr_struct[2];
 }''', "struct_arr_struct", '''{
   .arr_struct={{
-  .int_var=1,
-},{
-  .int_var=2,
-}},
+    .int_var=1,
+  },{
+    .int_var=2,
+  }},
 }''')
 c_file.add('''struct {
   union {
-  int int_var;
-} arr_union[4];
+    int int_var;
+  } arr_union[4];
 }''', "struct_arr_union", '''{
   .arr_union={{
-  .int_var=1,
-},{
-  .int_var=2,
-},{
-  .int_var=0,
-},{
-  .int_var=0,
-}},
+    .int_var=1,
+  },{
+    .int_var=2,
+  },{
+    .int_var=0,
+  },{
+    .int_var=0,
+  }},
 }''')
 c_file.add('''struct {
   int * arr_ptr[2];
@@ -532,16 +531,15 @@ c_file.add('''struct {
 c_file.add('''struct {
   int (* ptr_arr)[4];
 }''', "struct_ptr_arr", "")
-# ??? ptr  doesn't know the current indentation level
 c_file.add('''struct {
   struct {
-  int int_var;
-} * ptr_struct;
+    int int_var;
+  } * ptr_struct;
 }''', "struct_ptr_struct", "")
 c_file.add('''struct {
   union {
-  int int_var;
-} * ptr_union;
+    int int_var;
+  } * ptr_union;
 }''', "struct_ptr_union", "")
 c_file.add('''struct {
   int * * ptr_ptr;
@@ -555,28 +553,28 @@ c_file.add('''union {
 }''')
 c_file.add('''union {
   struct {
-  int int_var;
-} arr_struct[2];
+    int int_var;
+  } arr_struct[2];
 }''', "union_arr_struct", '''{
   .arr_struct={{
-  .int_var=1,
-},{
-  .int_var=0,
-}},
+    .int_var=1,
+  },{
+    .int_var=0,
+  }},
 }''')
 c_file.add('''union {
   union {
-  int int_var;
-  float float_var;
-} arr_union[2];
+    int int_var;
+    float float_var;
+  } arr_union[2];
 }''', "union_arr_union", '''{
   .arr_union={{
-  .int_var=1,
-  .float_var=1.4012985E-45,
-},{
-  .int_var=0,
-  .float_var=0.0,
-}},
+    .int_var=1,
+    .float_var=1.4012985E-45,
+  },{
+    .int_var=0,
+    .float_var=0.0,
+  }},
 }''')
 c_file.add('''union {
   int * arr_ptr[4];
@@ -671,13 +669,13 @@ c_file.add('''union {
 }''', "union_ptr_arr", "")
 c_file.add('''union {
   struct {
-  int int_var;
-} * ptr_struct;
+    int int_var;
+  } * ptr_struct;
 }''', "union_ptr_struct", "")
 c_file.add('''union {
   union {
-  int int_var;
-} * ptr_union;
+    int int_var;
+  } * ptr_union;
 }''', "union_ptr_union", "")
 c_file.add('''union {
   int * * ptr_ptr;
diff --git a/frysk-core/frysk/value/ArithmeticType.java b/frysk-core/frysk/value/ArithmeticType.java
index 4134a05..a0fc2d7 100644
--- a/frysk-core/frysk/value/ArithmeticType.java
+++ b/frysk-core/frysk/value/ArithmeticType.java
@@ -70,7 +70,7 @@ public abstract class ArithmeticType
 	return var1.assign(var2);
     }
 
-    public void toPrint(PrintWriter writer) {
+    public void toPrint(PrintWriter writer, int indent) {
 	writer.print(getName());
     }
 
diff --git a/frysk-core/frysk/value/ArrayType.java b/frysk-core/frysk/value/ArrayType.java
index 897c9ec..c5e7b06 100644
--- a/frysk-core/frysk/value/ArrayType.java
+++ b/frysk-core/frysk/value/ArrayType.java
@@ -169,8 +169,8 @@ public class ArrayType
     }
 
     void toPrint(PrintWriter writer, Location location,
-		 ByteBuffer memory, Format format) {
-	// XXX: Add dimension start/end instead of assuming {}
+		 ByteBuffer memory, Format format, int indent) {
+	// XXX: Add dimension start/end string instead of assuming {}
 	for (int i = 0; i < dimension.length - 1; i++)
 	    writer.print("{");
 	for (ArrayIterator e = new ArrayIterator(location); e.hasNext(); ) {
@@ -184,7 +184,7 @@ public class ArrayType
 		    if ((e.idx % stride[i]) == 0)
 			writer.print("{");
 	    }
-	    if (! toPrintVector(writer, type, e, memory, format))
+	    if (! toPrintVector(writer, type, e, memory, format, indent))
 	      break;
 	}
 	for (int i = 0; i < dimension.length - 1; i++)
@@ -192,7 +192,7 @@ public class ArrayType
     }
 
     private boolean toPrintVector(PrintWriter writer, Type type, ArrayIterator e,
-	    ByteBuffer memory, Format format)
+	    ByteBuffer memory, Format format, int indent)
     {
 	boolean isVector = dimension.length == 1;
 	int vectorLength = dimension[dimension.length - 1];
@@ -222,7 +222,7 @@ public class ArrayType
 		writer.print((char)c.longValue());
 	    }
 	    else {
-		type.toPrint(writer, l, memory, format);
+		type.toPrint(writer, l, memory, format, indent);
 		if (i < vectorLength - 1)
 		    writer.print(",");
 	    }
@@ -238,8 +238,8 @@ public class ArrayType
 	return noNullByte;
     }
 
-    public void toPrint(String s, PrintWriter writer) {
-	type.toPrint(writer);
+    public void toPrint(PrintWriter writer, String s, int indent) {
+	type.toPrint(writer, indent);
 	writer.print(" " + s);
 	for(int i = 0; i < this.dimension.length; i++) {
 	    writer.print("[");
@@ -248,8 +248,8 @@ public class ArrayType
 	}
     }
     
-    public void toPrint(PrintWriter writer) {
-	this.toPrint("", writer);
+    public void toPrint(PrintWriter writer, int indent) {
+	this.toPrint(writer, "", indent);
     }
     
     /* getALUs are double dispatch functions to determine 
diff --git a/frysk-core/frysk/value/BooleanType.java b/frysk-core/frysk/value/BooleanType.java
index 63001db..4db5245 100644
--- a/frysk-core/frysk/value/BooleanType.java
+++ b/frysk-core/frysk/value/BooleanType.java
@@ -71,7 +71,7 @@ public class BooleanType
 	    super.putBigInteger(location, BigInteger.ONE);
     }
     public void toPrint(PrintWriter writer, Location location,
-			ByteBuffer memory, Format format) {
+			ByteBuffer memory, Format format, int indent) {
 	if (getBigInteger(location).equals(BigInteger.ZERO))
 	    writer.print("true");
 	else
diff --git a/frysk-core/frysk/value/ChangeLog b/frysk-core/frysk/value/ChangeLog
index d30cda8..3b2cf17 100644
--- a/frysk-core/frysk/value/ChangeLog
+++ b/frysk-core/frysk/value/ChangeLog
@@ -1,3 +1,13 @@
+2007-11-19  Stan Cox  <scox@redhat.com>
+
+	* Type.java (toPrint(PrintWriter, Location, ByteBuffer, Format, int)):
+	Add indent parameter.  Change all implementers.
+	(toPrint(PrintWriter writer, int indent)): Likewise.
+	* Value.java (toPrint(PrintWriter, ByteBuffer, Format, int): Likewise.
+	* CompositeType.java (toPrint (PrintWriter, Location, ByteBuffer,
+	Format, int)): Remove CompositeType special case.
+	(toPrint (PrintWriter, int)): Likewise.
+
 2007-11-18  Andrew Cagney  <cagney@redhat.com>
 
 	* ArrayType.java (completeMember(String,List)): New.
diff --git a/frysk-core/frysk/value/CharType.java b/frysk-core/frysk/value/CharType.java
index 6319c84..852ccef 100644
--- a/frysk-core/frysk/value/CharType.java
+++ b/frysk-core/frysk/value/CharType.java
@@ -62,7 +62,7 @@ public class CharType
     }
 
     public void toPrint(PrintWriter writer, Location location,
-			ByteBuffer memory, Format format) {
+			ByteBuffer memory, Format format, int indent) {
 	writer.print("'");
 	writer.print((char) getBigInteger(location).longValue());
 	writer.print("'");
diff --git a/frysk-core/frysk/value/CompositeType.java b/frysk-core/frysk/value/CompositeType.java
index 9937d28..7bc3c43 100644
--- a/frysk-core/frysk/value/CompositeType.java
+++ b/frysk-core/frysk/value/CompositeType.java
@@ -249,8 +249,12 @@ public abstract class CompositeType
 	return new ClassIterator();
     }
 
-    void toPrint(int indentation, PrintWriter writer, Location location,
-		 ByteBuffer memory, Format format) {
+    
+    
+    void toPrint(PrintWriter writer, Location location,
+		 ByteBuffer memory, Format format, int indentation) {
+	if (indentation == 0)
+	    indentation = 2;
 	String indentPrefix = "";
 	for (int indent = 1; indent <= indentation; indent++)
 	    indentPrefix = indentPrefix + " ";
@@ -269,11 +273,7 @@ public abstract class CompositeType
 		Location loc = location.slice(member.offset,
 					      member.type.getSize());
 		Value val = new Value(member.type, loc);
-		if (member.type instanceof CompositeType)
-		    ((CompositeType) member.type).toPrint(indentation + 2,
-							  writer, loc, memory, format);
-		else
-		    val.toPrint(writer, memory, format);
+		val.toPrint(writer, memory, format, indentation + 2);
 		writer.print(",\n");
 	    }
 	}
@@ -282,12 +282,7 @@ public abstract class CompositeType
 	writer.print("}");
     }
 
-    void toPrint(PrintWriter writer, Location location, ByteBuffer memory,
-		 Format format) {
-	this.toPrint(2, writer, location, memory, format);
-    }
-  
-    public void toPrint(int indentation, PrintWriter writer) {
+    public void toPrint(PrintWriter writer, int indentation) {
 	// FIXME: going away.
 	if (this.isTypedef() && this.getName() != null
 	    && this.getName().length() > 0) {
@@ -295,6 +290,8 @@ public abstract class CompositeType
 	    return;
 	}
 
+	if (indentation == 0)
+	    indentation = 2;
 	String indentPrefix = "";
 	for (int indent = 1; indent <= indentation; indent++)
 	    indentPrefix = indentPrefix + " ";
@@ -344,18 +341,19 @@ public abstract class CompositeType
 	    writer.print(indentPrefix);
 	    if (member.type.isTypedef())
 		writer.print(member.type.getName());
-	    else if (member.type instanceof CompositeType)
-		((CompositeType) member.type).toPrint(indentation + 2, writer);
 	    else if (member.type instanceof ArrayType) {
+		// For handling int x[2]
 		printName = false;
-		((ArrayType) member.type).toPrint(member.name, writer);
+		((ArrayType) member.type).toPrint(writer, member.name, indentation + 2);
 	    }
 	    else if (member.type instanceof PointerType) {
+		// For handling int (*x)[2]
 		printName = false;
-		((PointerType) member.type).toPrint(" " + member.name, writer);
+		((PointerType) member.type).toPrint(writer, " " + member.name,
+						    indentation + 2);
 	    }
 	    else
-		member.type.toPrint(writer);
+		member.type.toPrint (writer, indentation + 2);
 	    if (member.type instanceof frysk.value.FunctionType)
 		printName = false;
 	    if (printName) {
@@ -378,10 +376,6 @@ public abstract class CompositeType
 	writer.print("}");
     }
     
-    public void toPrint( PrintWriter writer) {
-	this.toPrint(2, writer);
-    }
-
     public Value member(Value var1, String member)
     {
 	DynamicMember mem = (DynamicMember)nameToMember.get(member);
diff --git a/frysk-core/frysk/value/EnumType.java b/frysk-core/frysk/value/EnumType.java
index ff59cdd..872be47 100644
--- a/frysk-core/frysk/value/EnumType.java
+++ b/frysk-core/frysk/value/EnumType.java
@@ -86,7 +86,7 @@ public class EnumType extends IntegerTypeDecorator
     // Should Format be made responsible?  So that HEX would override
     // printing the enum's name and print raw hex instead?
     void toPrint (PrintWriter writer, Location location,
-		  ByteBuffer memory, Format format) {
+		  ByteBuffer memory, Format format, int indent) {
 	BigInteger value = getBigInteger(location);
 	Member map = (Member)valueToMember.get(value);
 	if (map != null)
@@ -96,7 +96,7 @@ public class EnumType extends IntegerTypeDecorator
 	    format.print(writer, location, this);
     }
 
-    public void toPrint(PrintWriter writer) {
+    public void toPrint(PrintWriter writer, int indent) {
 	writer.print("enum");
 	if (getName() != null) {
 	    writer.print(" ");
diff --git a/frysk-core/frysk/value/FloatingPointType.java b/frysk-core/frysk/value/FloatingPointType.java
index 63aa570..9baf827 100644
--- a/frysk-core/frysk/value/FloatingPointType.java
+++ b/frysk-core/frysk/value/FloatingPointType.java
@@ -56,7 +56,7 @@ public class FloatingPointType
     }
 
     public void toPrint(PrintWriter writer, Location location,
-			ByteBuffer memory, Format format) {
+			ByteBuffer memory, Format format, int indent) {
 	// double-dispatch.
 	format.print(writer, location, this);
     }
diff --git a/frysk-core/frysk/value/FunctionType.java b/frysk-core/frysk/value/FunctionType.java
index 44efb9d..4a85845 100644
--- a/frysk-core/frysk/value/FunctionType.java
+++ b/frysk-core/frysk/value/FunctionType.java
@@ -58,23 +58,23 @@ public class FunctionType
   
    
     void toPrint(PrintWriter writer, Location location,
-		 ByteBuffer memory, Format format) {
+		 ByteBuffer memory, Format format, int indent) {
 	// XXX: Print the function's name?
 	writer.print("0x");
 	BigInteger v = new BigInteger(1, location.get(memory.order()));
 	writer.print(Long.toHexString(v.longValue()));
     }
   
-    public void toPrint(PrintWriter writer) {
+    public void toPrint(PrintWriter writer, int indent) {
 	if (returnType == null)
 	    writer.print("void");
 	else
-	    returnType.toPrint(writer);
+	    returnType.toPrint(writer, 0);
 	writer.print(" ");
 	writer.print(this.getName());
 	writer.print(" (");
 	for (int i = 0; i < this.parmTypes.size(); i++) {
-	    ((Type)this.parmTypes.get(i)).toPrint(writer);
+	    ((Type)this.parmTypes.get(i)).toPrint(writer, 0);
 	    writer.print(" ");
 	    writer.print((String)this.parmNames.get(i));
 	    if (i < this.parmTypes.size() - 1)
diff --git a/frysk-core/frysk/value/IntegerType.java b/frysk-core/frysk/value/IntegerType.java
index db9166b..2cf02ba 100644
--- a/frysk-core/frysk/value/IntegerType.java
+++ b/frysk-core/frysk/value/IntegerType.java
@@ -55,7 +55,7 @@ public abstract class IntegerType
     }
 
     void toPrint(PrintWriter writer, Location location,
-		 ByteBuffer memory, Format format) {
+		 ByteBuffer memory, Format format, int indent) {
 	// double-dispatch.
 	format.print(writer, location, this);
     }
diff --git a/frysk-core/frysk/value/PointerType.java b/frysk-core/frysk/value/PointerType.java
index f7805d8..0e6cad1 100644
--- a/frysk-core/frysk/value/PointerType.java
+++ b/frysk-core/frysk/value/PointerType.java
@@ -76,7 +76,7 @@ public class PointerType
     }
     
     void toPrint(PrintWriter writer, Location location, ByteBuffer memory,
-		 Format format) {
+		 Format format, int indent) {
 	format.print(writer, location, this);


hooks/post-receive
--
frysk system monitor/debugger


             reply	other threads:[~2007-11-19 17:58 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-19 17:58 scox [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-06-05 15:33 rmoseley
2008-05-12 16:30 rmoseley
2008-05-12 16:07 pmuldoon
2008-05-09 17:29 rmoseley
2008-04-02 22:41 pmuldoon
2008-04-01 12:28 pmuldoon
2008-03-20 20:20 rmoseley
2008-03-18 16:22 pmuldoon
2008-02-26 15:32 pmuldoon
2008-01-24 19:23 rmoseley
2008-01-23 21:10 rmoseley
2008-01-03 16:55 pmuldoon
2007-12-13 20:18 rmoseley
2007-12-04 17:45 jflavio
2007-11-30  4:24 jflavio
2007-11-28 21:40 jflavio
2007-11-28 16:20 jflavio
2007-11-28 13:08 pmuldoon
2007-11-28 12:04 mark
2007-11-20 22:47 scox
2007-11-17  8:35 rmoseley
2007-11-16 15:59 scox
2007-11-16 14:59 pmuldoon
2007-11-14  2:38 scox
2007-11-14  2:09 jflavio
2007-11-13  0:41 scox
2007-11-10 14:47 jflavio
2007-11-10  0:34 scox
2007-11-09 14:59 jflavio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071119175814.29886.qmail@sourceware.org \
    --to=scox@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).