public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Delete stray printlns.
@ 2008-02-11  3:28 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-02-11  3:28 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  c30b94dcece7bb870346e0a5c090b9bbd37e582f (commit)
       via  1accf258d4f76e6b10abd4ee9807e0bc5ca61cb6 (commit)
       via  0620f251a9d024526c11a1427375b5f60bc8131a (commit)
       via  4aa71a733bfa9f69f9e09220c68c44d972bf3df5 (commit)
       via  b8146c931913c022035935d64249ab7bfdbae246 (commit)
      from  0333fa32d6c00974189c629002a61c9e5eb451fe (commit)

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

- Log -----------------------------------------------------------------
commit c30b94dcece7bb870346e0a5c090b9bbd37e582f
Author: Andrew Cagney <cagney@redhat.com>
Date:   Sun Feb 10 18:51:40 2008 -0500

    Delete stray printlns.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-02-10  Andrew Cagney  <cagney@redhat.com>
    
    	* Node.java: Delete stray printlns.
    	* LogFactory.java: Ditto.

commit 1accf258d4f76e6b10abd4ee9807e0bc5ca61cb6
Author: Andrew Cagney <cagney@redhat.com>
Date:   Sun Feb 10 17:44:20 2008 -0500

    Add class tests; fix.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-02-10  Andrew Cagney  <cagney@redhat.com>
    
    	* LogFactory.java (get(Node,String)): New; use.
    	(get(Node,Class)): New; use
    	(complete(Node,String,List)): New; use.
    	* Log.java: Don't include the level in the message.
    	* Node.java (level): Delete.
    	(extensionSetting, childSetting): New.
    	(setChildren(Settings)): New.
    	(setExtensions(Setting)): New.
    	(setLoggers(Level)): New.
    	(get(String,int)): Delete.
    	(get(Class)): Delete.
    	(setClass(Node,Class)): New.
    	(get(String)): Re-write.
    	(complete(String,int,List)): Delete.
    	(complete(String,List)): Re-write.
    	* Setting.java: New.
    	* TestSetting.java: New.
    	* LogOption.java: Use LogFactory's get(Node,String).
    	* TestLib.java: Use LogFactory's get(Node,String) method.
    	* TetLog.java (testSubClassFINE()): Delete.
    	(testSetSuperThenPackageGetsPackage()): New.
    	(testSetPackageThenSuperGetsPackage()): New.
    	* package.html: Update.

commit 0620f251a9d024526c11a1427375b5f60bc8131a
Author: Andrew Cagney <cagney@redhat.com>
Date:   Sun Feb 10 09:10:45 2008 -0500

    Break down rsl Tests.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-02-10  Andrew Cagney  <cagney@redhat.com>
    
    	* TestLog.java: Break into ...
    	* TestCompletion.java: ... this. New.
    	* TestLib.java: ... this.  New.
    	* TestOptions.java: ... and this.  New.
    	* Node.java (root): Move to ...
    	* LogFactory.java (root): ... here.
    	* LogOption.java: Update.
    	* Log.java (log(String,Object,String,Object)): New.

commit 4aa71a733bfa9f69f9e09220c68c44d972bf3df5
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Feb 8 22:01:27 2008 -0500

    Add logging to LocalMemory, ForkFactory, TearDownExpect, TearDownFile.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* Log.java (log(String,long,String,int)): New.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* LocalMemory.java: Add logging.
    	* ForkFactory.java: Add logging.
    	* TearDownExpect.java: Add logging.
    	* TearDownFile.java: Use frysk.rsl.Log.

commit b8146c931913c022035935d64249ab7bfdbae246
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Feb 8 21:22:26 2008 -0500

    Eliminate "int pid" from TearDownProcess; use frysk.rsl.Log.
    
    frysk-core/frysk/hpd/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* HpdTestbed.java: Update to match
    	TearDownProcess.add(ProcessIdentifier).
    
    frysk-core/frysk/testbed/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* TestLib.java: Update to match
    	TearDownProcess.add(ProcessIdentifier).
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* Log.java (log(String,Object,String)): New.
    	(log(String,Object)): New.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-02-08  Andrew Cagney  <cagney@redhat.com>
    
    	* TearDownProcess.java: Use frysk.rsl.Log.
    	(add(int)): Delete.
    	(contains(int)): Delete.
    	(log(Object)): Delete.
    	(log(Object,Object)): Delete.
    	(log(Object,Object,String)): Delete.

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

Summary of changes:
 frysk-core/frysk/hpd/ChangeLog                     |    3 +
 frysk-core/frysk/hpd/HpdTestbed.java               |   10 +-
 frysk-core/frysk/testbed/ChangeLog                 |    3 +
 frysk-core/frysk/testbed/TestLib.java              |   12 +-
 frysk-sys/frysk/rsl/ChangeLog                      |   43 ++++
 frysk-sys/frysk/rsl/Log.java                       |  138 ++++-------
 frysk-sys/frysk/rsl/LogFactory.java                |   55 ++++-
 frysk-sys/frysk/rsl/LogOption.java                 |    8 +-
 frysk-sys/frysk/rsl/Node.java                      |  259 ++++++++++----------
 .../frysk/rsl/{LogFactory.java => Setting.java}    |   51 +++--
 .../rsl/{LogFactory.java => TestCompletion.java}   |   59 +++--
 .../frysk/rsl/{LogFactory.java => TestLib.java}    |   56 +++--
 frysk-sys/frysk/rsl/TestLog.java                   |  122 +--------
 .../rsl/{LogFactory.java => TestOptions.java}      |   49 +++--
 .../rsl/{LogFactory.java => TestSetting.java}      |   45 ++--
 frysk-sys/frysk/rsl/package.html                   |  116 ++++++++-
 frysk-sys/frysk/testbed/ChangeLog                  |   12 +
 frysk-sys/frysk/testbed/ForkFactory.java           |    4 +
 frysk-sys/frysk/testbed/LocalMemory.java           |   11 +-
 frysk-sys/frysk/testbed/TearDownExpect.java        |    5 +
 frysk-sys/frysk/testbed/TearDownFile.java          |   41 ++--
 frysk-sys/frysk/testbed/TearDownProcess.java       |   91 ++------
 22 files changed, 642 insertions(+), 551 deletions(-)
 copy frysk-sys/frysk/rsl/{LogFactory.java => Setting.java} (71%)
 copy frysk-sys/frysk/rsl/{LogFactory.java => TestCompletion.java} (57%)
 copy frysk-sys/frysk/rsl/{LogFactory.java => TestLib.java} (62%)
 copy frysk-sys/frysk/rsl/{LogFactory.java => TestOptions.java} (71%)
 copy frysk-sys/frysk/rsl/{LogFactory.java => TestSetting.java} (68%)

First 500 lines of diff:
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 317600d..0581c88 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -8,6 +8,9 @@
 
 2008-02-08  Andrew Cagney  <cagney@redhat.com>
 
+	* HpdTestbed.java: Update to match
+	TearDownProcess.add(ProcessIdentifier).
+
 	* ActionPointCommands.java: Use Task.getTid().
 	
 	* ActionPointCommands.java: Don't use Comparator; rely on the
diff --git a/frysk-core/frysk/hpd/HpdTestbed.java b/frysk-core/frysk/hpd/HpdTestbed.java
index f87d150..dcd75c3 100644
--- a/frysk-core/frysk/hpd/HpdTestbed.java
+++ b/frysk-core/frysk/hpd/HpdTestbed.java
@@ -50,6 +50,7 @@ import java.io.File;
 import frysk.testbed.TearDownExpect;
 import frysk.testbed.TearDownProcess;
 import frysk.sys.ProcessIdentifier;
+import frysk.sys.ProcessIdentifierFactory;
 
 /**
  * Variation on frysk.expunit.Expect that drives the HPD.
@@ -180,7 +181,9 @@ public class HpdTestbed extends TearDownExpect {
 			 new Regex("Attached to process ([0-9]+)\r\n"
 				   + h.prompt) {
 			     public void execute() {
-				 int pid = Integer.parseInt(group(1));
+				 ProcessIdentifier pid
+				     = ProcessIdentifierFactory.create
+				     (Integer.parseInt(group(1)));
 				 TearDownProcess.add(pid);
 			     }
 			 },
@@ -221,8 +224,9 @@ public class HpdTestbed extends TearDownExpect {
 			 new Regex("Attached to process ([0-9]+)\r\n"
 				   + h.prompt) {
 			     public void execute() {
-				 int pid = Integer.parseInt(group(1));
-				 TearDownProcess.add(pid);
+				 TearDownProcess.add
+				     (ProcessIdentifierFactory.create
+				      (Integer.parseInt(group(1))));
 			     }
 			 },
 			 new Regex(".*\r\n" + h.prompt) {
diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog
index 4390b5c..58b63dc 100644
--- a/frysk-core/frysk/testbed/ChangeLog
+++ b/frysk-core/frysk/testbed/ChangeLog
@@ -1,5 +1,8 @@
 2008-02-08  Andrew Cagney  <cagney@redhat.com>
 
+	* TestLib.java: Update to match
+	TearDownProcess.add(ProcessIdentifier).
+	
 	* OffspringType.java: Use ProcessIdentifierFactory.create(int).
 	* TestLib.java: Update to match Stat.ppid.
 
diff --git a/frysk-core/frysk/testbed/TestLib.java b/frysk-core/frysk/testbed/TestLib.java
index bb45590..433a282 100644
--- a/frysk-core/frysk/testbed/TestLib.java
+++ b/frysk-core/frysk/testbed/TestLib.java
@@ -39,6 +39,8 @@
 
 package frysk.testbed;
 
+import frysk.sys.ProcessIdentifier;
+import frysk.sys.ProcessIdentifierFactory;
 import frysk.proc.Proc;
 import frysk.proc.Host;
 import frysk.proc.Manager;
@@ -203,14 +205,18 @@ public class TestLib
 		public void update (Observable o, Object obj) {
 		    Proc proc = (Proc) obj;
 		    if (isChildOfMine(proc)) {
-			TearDownProcess.add(proc.getPid());
+			TearDownProcess.add
+			    (ProcessIdentifierFactory.create(proc.getPid()));
 			return;
 		    }
 		    Proc parent = proc.getParent();
 		    if (parent != null) {
-			int parentPid = proc.getParent().getPid();
+			ProcessIdentifier parentPid
+			    = ProcessIdentifierFactory.create(proc.getParent()
+							      .getPid());
 			if (TearDownProcess.contains(parentPid)) {
-			    TearDownProcess.add(proc.getPid());
+			    TearDownProcess.add(ProcessIdentifierFactory
+						.create(proc.getPid()));
 			    return;
 			}
 		    }
diff --git a/frysk-sys/frysk/rsl/ChangeLog b/frysk-sys/frysk/rsl/ChangeLog
index 4a91958..773cd80 100644
--- a/frysk-sys/frysk/rsl/ChangeLog
+++ b/frysk-sys/frysk/rsl/ChangeLog
@@ -1,5 +1,48 @@
+2008-02-10  Andrew Cagney  <cagney@redhat.com>
+
+	* Node.java: Delete stray printlns.
+	* LogFactory.java: Ditto.
+	
+	* LogFactory.java (get(Node,String)): New; use.
+	(get(Node,Class)): New; use
+	(complete(Node,String,List)): New; use.
+	* Log.java: Don't include the level in the message.
+	* Node.java (level): Delete.
+	(extensionSetting, childSetting): New.
+	(setChildren(Settings)): New.
+	(setExtensions(Setting)): New.
+	(setLoggers(Level)): New.
+	(get(String,int)): Delete.
+	(get(Class)): Delete.
+	(setClass(Node,Class)): New.
+	(get(String)): Re-write.
+	(complete(String,int,List)): Delete.
+	(complete(String,List)): Re-write.
+	* Setting.java: New.
+	* TestSetting.java: New.
+	* LogOption.java: Use LogFactory's get(Node,String).
+	* TestLib.java: Use LogFactory's get(Node,String) method.
+	* TetLog.java (testSubClassFINE()): Delete.
+	(testSetSuperThenPackageGetsPackage()): New.
+	(testSetPackageThenSuperGetsPackage()): New.
+	* package.html: Update.
+	
+	* TestLog.java: Break into ...
+	* TestCompletion.java: ... this. New.
+	* TestLib.java: ... this.  New.
+	* TestOptions.java: ... and this.  New.
+	* Node.java (root): Move to ...
+	* LogFactory.java (root): ... here.
+	* LogOption.java: Update.
+	* Log.java (log(String,Object,String,Object)): New.
+
 2008-02-08  Andrew Cagney  <cagney@redhat.com>
 
+	* Log.java (log(String,long,String,int)): New.
+
+	* Log.java (log(String,Object,String)): New.
+	(log(String,Object)): New.
+
 	* LogOption.java: Permit "frysk", assume fine.
 	* Log.java: In log, append Level with a colon.
 	
diff --git a/frysk-sys/frysk/rsl/Log.java b/frysk-sys/frysk/rsl/Log.java
index 11b0359..d2435f4 100644
--- a/frysk-sys/frysk/rsl/Log.java
+++ b/frysk-sys/frysk/rsl/Log.java
@@ -129,7 +129,6 @@ public final class Log {
 	out.print(": ");
 	out.print(path);
 	out.print(":");
-	out.print(level.toPrint());
     }
 
     private void prefix() {
@@ -206,6 +205,13 @@ public final class Log {
 	    out.print(">>");
 	}
     }
+    /**
+     * Use poorly implemented reflection to dump Objects.
+     */
+    private void print(Object o) {
+	out.print(" ");
+	dump(o);
+    }
     
     /**
      * Chars are printed in quotes.
@@ -268,13 +274,6 @@ public final class Log {
 	out.print(" ");
 	out.print(s);
     }
-    /**
-     * Use poorly implemented reflection to dump Objects.
-     */
-    private void print(Object o) {
-	out.print(" ");
-	dump(o);
-    }
     
     /**
      * For compatibility with existing loggers.
@@ -297,151 +296,102 @@ public final class Log {
 	suffix();
     }
 
-    // Add at will and on demand.
+    // Static log methods.
     public void log(String p1) {
 	if (!logging)
 	    return;
-	prefix();
-	print(p1);
-	suffix();
+	prefix(); print(p1); suffix();
     }
-    
     public void log(String p1, char p2) {
 	if (!logging)
 	    return;
-	prefix();
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(); print(p1); print(p2); suffix();
     }
     public void log(String p1, char[] p2) {
 	if (!logging)
 	    return;
-	prefix();
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(); print(p1); print(p2); suffix();
     }
     public void log(String p1, String p2) {
 	if (!logging)
 	    return;
-	prefix();
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(); print(p1); print(p2); suffix();
+    }
+    public void log(String p1, Object p2) {
+	if (!logging)
+	    return;
+	prefix(); print(p1); print(p2); suffix();
+    }
+    public void log(String p1, Object p2, String p3) {
+	if (!logging)
+	    return;
+	prefix(); print(p1); print(p2); print(p3); suffix();
+    }
+    public void log(String p1, Object p2, String p3, Object p4) {
+	if (!logging)
+	    return;
+	prefix(); print(p1); print(p2); print(p3); print(p4); suffix();
+    }
+    public void log(String p1, long p2, String p3, int p4) {
+	if (!logging)
+	    return;
+	prefix(); print(p1); print(p2); print(p3); print(p4); suffix();
     }
     
+    // Non-static log methods; first parameter is the object.
     public void log(Object self, String p1) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	suffix();
+	prefix(self); print(p1); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, int p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, long p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, String p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, Object p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, int[] p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
-    // Add at will and on demand.
     public void log(Object self, String p1, long[] p2) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	suffix();
+	prefix(self); print(p1); print(p2); suffix();
     }
-
     public void log(Object self, String p1, int p2, String p3, char p4) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	print(p3);
-	print(p4);
-	suffix();
+	prefix(self); print(p1); print(p2); print(p3); print(p4); suffix();
     }
-
     public void log(Object self, String p1, Object p2, String p3, Object p4) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	print(p3);
-	print(p4);
-	suffix();
+	prefix(self); print(p1); print(p2); print(p3); print(p4); suffix();
     }
-    
     public void log(Object self, String p1, Object p2, String p3, int p4) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	print(p3);
-	print(p4);
-	suffix();
+	prefix(self); print(p1); print(p2); print(p3); print(p4); suffix();
     }
-    
     public void log(Object self, String p1, Object p2, String p3, Object p4, String p5, Object p6) {
 	if (!logging)
 	    return;
-	prefix(self);
-	print(p1);
-	print(p2);
-	print(p3);
-	print(p4);
-	print(p5);
-	print(p6);
-	suffix();
+	prefix(self); print(p1); print(p2); print(p3); print(p4); print(p5); print(p6); suffix();
     }
 }
diff --git a/frysk-sys/frysk/rsl/LogFactory.java b/frysk-sys/frysk/rsl/LogFactory.java
index 899fa86..9b8385d 100644
--- a/frysk-sys/frysk/rsl/LogFactory.java
+++ b/frysk-sys/frysk/rsl/LogFactory.java
@@ -46,8 +46,16 @@ import java.util.List;
  */
 public final class LogFactory {
 
-    public static Node get(String klass) {
-	return Node.root.get(klass);
+    /**
+     * The root Node; also serves as a single global lock.
+     */
+    static final Node root = new Node();
+
+    /**
+     * Find the Node corresponding to PATH.
+     */
+    public static Node get(String path) {
+	return get(root, path);
     }
     public static Log fine(String klass) {
 	return get(klass).get(Level.FINE);
@@ -55,9 +63,23 @@ public final class LogFactory {
     public static Log finest(String klass) {
 	return get(klass).get(Level.FINEST);
     }
+    static Node get(Node node, String path) {
+	synchronized (root) {
+	    String[] names = path.split("\\.", -1);
+	    for (int i = 0; i < names.length; i++) {
+		String name = names[i];
+		if (name.length() > 0)
+		    node = node.get(name);
+	    }
+	    return node;
+	}
+    }
 
+    /**
+     * Find the node corresponding to KLASS.
+     */
     public static Node get(Class klass) {
-	return Node.root.get(klass);
+	return get(root, klass);
     }
     public static Log fine(Class klass) {
 	return get(klass).get(Level.FINE);
@@ -65,8 +87,33 @@ public final class LogFactory {
     public static Log finest(Class klass) {
 	return get(klass).get(Level.FINEST);
     }
+    static Node get(Node root, Class klass) {
+	return get(root, klass.getName()).setClass(root, klass);
+    }
 
+    /**
+     * Return completions.
+     */
     public static int complete(String incomplete, List candidates) {
-	return Node.root.complete(incomplete, candidates);
+	return complete(root, incomplete, candidates);
+    }
+    static int complete(Node node, String incomplete, List candidates) {
+	synchronized (root) {
+	    String[] names = incomplete.split("\\.", -1);
+	    for (int i = 0; i < names.length - 1; i++) {
+		if (names[i].length() > 0)
+		    node = node.get(names[i]);
+	    }
+	    String name;
+	    if (names.length > 0)
+		name = names[names.length - 1];
+	    else
+		name = "";
+	    int pos = node.complete(name, candidates);
+	    if (pos < 0)
+		return -1;
+	    else
+		return incomplete.lastIndexOf(name) + pos;
+	}
     }
 }
diff --git a/frysk-sys/frysk/rsl/LogOption.java b/frysk-sys/frysk/rsl/LogOption.java
index 1ef8d83..6b35e07 100644
--- a/frysk-sys/frysk/rsl/LogOption.java
+++ b/frysk-sys/frysk/rsl/LogOption.java
@@ -61,7 +61,7 @@ public class LogOption extends Option {
      * Parse ARG0 setting log levels.
      */
     public static void level(String arg0) throws OptionException {
-	level(Node.root, arg0);
+	level(LogFactory.root, arg0);
     }
     /**
      * Parse ARG0 setting log levels.
@@ -77,15 +77,15 @@ public class LogOption extends Option {
 		// Either LEVEL or LOGGER
 		level = Level.valueOf(logLevel[0]);
 		if (level != null) {
-		    logger = root.get("");
+		    logger = root;
 		} else {
 		    level = Level.FINE;
-		    logger = root.get(logLevel[0]);
+		    logger = LogFactory.get(root, logLevel[0]);
 		}
 		break;
 	    case 2:
 		// LOGGER=LEVEL
-		logger = root.get(logLevel[0]);
+		logger = LogFactory.get(root, logLevel[0]);
 		level = Level.valueOf(logLevel[1]);
 		break;
 	    default:
diff --git a/frysk-sys/frysk/rsl/Node.java b/frysk-sys/frysk/rsl/Node.java
index e6e1ff5..0c8145f 100644
--- a/frysk-sys/frysk/rsl/Node.java
+++ b/frysk-sys/frysk/rsl/Node.java
@@ -42,6 +42,7 @@ package frysk.rsl;
 import java.util.TreeMap;


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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-02-11  3:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-11  3:28 [SCM] master: Delete stray printlns cagney

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).