public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Split Glob from ftrace.
Date: Fri, 29 Feb 2008 15:19:00 -0000	[thread overview]
Message-ID: <20080229151923.2323.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  a1f129abe0820ed5a7bd9f34842f4ebded1b9a97 (commit)
      from  8e6ab5488ff4b517582979b2fa0b8384ac6b0e09 (commit)

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

- Log -----------------------------------------------------------------
commit a1f129abe0820ed5a7bd9f34842f4ebded1b9a97
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Feb 29 10:15:29 2008 -0500

    Split Glob from ftrace.
    
    frysk-core/frysk/bindir/ChangeLog
    2008-02-29  Andrew Cagney  <cagney@redhat.com>
    
    	* ftrace.java: Glob moved to frysk.util.Glob.
    
    frysk-core/frysk/util/ChangeLog
    2008-02-29  Andrew Cagney  <cagney@redhat.com>
    
    	* Glob.java: Extracted from frysk.bindir.ftrace.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                  |    4 +
 frysk-core/frysk/bindir/ftrace.java                |   87 +-------------
 frysk-core/frysk/util/ChangeLog                    |    4 +
 .../frysk/{bindir/fcatch.java => util/Glob.java}   |  132 +++++++++++---------
 4 files changed, 82 insertions(+), 145 deletions(-)
 copy frysk-core/frysk/{bindir/fcatch.java => util/Glob.java} (51%)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index 1ba5299..b4b4092 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-29  Andrew Cagney  <cagney@redhat.com>
+
+	* ftrace.java: Glob moved to frysk.util.Glob.
+
 2008-02-29  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	* TestFcatch.java (testFcatchFollowsForks): new test.
diff --git a/frysk-core/frysk/bindir/ftrace.java b/frysk-core/frysk/bindir/ftrace.java
index 06c7972..da886bb 100644
--- a/frysk-core/frysk/bindir/ftrace.java
+++ b/frysk-core/frysk/bindir/ftrace.java
@@ -51,8 +51,7 @@ import java.util.Map;
 import java.util.Set;
 import frysk.proc.Proc;
 import java.util.logging.*;
-import java.util.regex.*;
-
+import java.util.regex.Pattern;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 
@@ -69,92 +68,10 @@ import frysk.ftrace.TracePointOrigin;
 import frysk.ftrace.Symbol;
 
 import lib.dwfl.ElfSymbolVersion;
-
+import frysk.util.Glob;
 import gnu.classpath.tools.getopt.Option;
 import gnu.classpath.tools.getopt.OptionException;
 
-class Glob
-{
-    private static int matchCharacterClass(String glob, int from)
-	throws PatternSyntaxException
-    {
-	int i = from + 2;
-	while (glob.charAt(++i) != ':' && i < glob.length())
-	    continue;
-	if (i >= glob.length() || glob.charAt(++i) != ']')
-	    throw new PatternSyntaxException
-		("Unmatched '['.", glob, from);
-	return i;
-    }
-
-    private static int matchBrack(String glob, int from)
-	throws PatternSyntaxException
-    {
-	// On first character, both [ and ] are legal.  But when [ is
-	// foolowed with :, it's character class.
-	int i = from + 1;
-	if (glob.charAt(i) == '[' && glob.charAt(i + 1) == ':')
-	    i = matchCharacterClass(glob, i) + 1;
-	else
-	    ++i; // skip any character, including [ or ]
-	boolean escape = false;
-	for (; i < glob.length(); ++i) {
-	    char c = glob.charAt(i);
-	    if (escape) {
-		++i;
-		escape = false;
-	    }
-	    else if (c == '[' && glob.charAt(i + 1) == ':')
-		i = matchCharacterClass(glob, i);
-	    else if (c == ']')
-		return i;
-	}
-	throw new PatternSyntaxException
-	    ("Unmatched '" + glob.charAt(from) + "'.", glob, from);
-    }
-
-    private static String toRegex(String glob) {
-	StringBuffer buf = new StringBuffer();
-	boolean escape = false;
-	for(int i = 0; i < glob.length(); ++i) {
-	    char c = glob.charAt(i);
-	    if (escape) {
-		if (c == '\\')
-		    buf.append("\\\\");
-		else if (c == '*')
-		    buf.append("\\*");
-		else if (c == '?')
-		    buf.append('?');
-		else
-		    buf.append('\\').append(c);
-		escape = false;
-	    }
-	    else {
-		if (c == '\\')
-		    escape = true;
-		else if (c == '[') {
-		    int j = matchBrack(glob, i);
-		    buf.append(glob.substring(i, j+1));
-		    i = j;
-		}
-		else if (c == '*')
-		    buf.append(".*");
-		else if (c == '?')
-		    buf.append('.');
-		else if (c == '.')
-		    buf.append("\\.");
-		else
-		    buf.append(c);
-	    }
-	}
-	return buf.toString();
-    }
-
-    public static Pattern compile(String glob) {
-	return Pattern.compile(toRegex(glob));
-    }
-}
-
 abstract class Rule
 {
     final public boolean addition;
diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog
index b7ef1d7..a4de4ff 100644
--- a/frysk-core/frysk/util/ChangeLog
+++ b/frysk-core/frysk/util/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-29  Andrew Cagney  <cagney@redhat.com>
+
+	* Glob.java: Extracted from frysk.bindir.ftrace.
+
 2008-02-28  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	* ProcRunningUtil.java: Framework for all commandline
diff --git a/frysk-core/frysk/bindir/fcatch.java b/frysk-core/frysk/util/Glob.java
similarity index 51%
copy from frysk-core/frysk/bindir/fcatch.java
copy to frysk-core/frysk/util/Glob.java
index ed5f6cf..8cd8bdc 100644
--- a/frysk-core/frysk/bindir/fcatch.java
+++ b/frysk-core/frysk/util/Glob.java
@@ -37,77 +37,89 @@
 // version and license this file solely under the GPL without
 // exception.
 
-package frysk.bindir;
+package frysk.util;
 
-import frysk.util.Util;
-import frysk.util.CommandlineParser;
-import frysk.util.FCatch;
-import frysk.proc.Proc;
-import gnu.classpath.tools.getopt.Option;
-import gnu.classpath.tools.getopt.OptionException;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
-public class fcatch {
+public class Glob {
 
-    FCatch catcher = new FCatch();
-
-    private boolean requestedPid = false;
-
-    private static StringBuffer argString;
-
-    private void run(String[] args) {
-	CommandlineParser parser = new CommandlineParser("fcatch") {
-	    protected void validate() throws OptionException {
-		if (!requestedPid && argString == null)
-		    throw new OptionException("no command or PID specified");
-	    }
+    private static int matchCharacterClass(String glob, int from)
+	throws PatternSyntaxException
+    {
+	int i = from + 2;
+	while (glob.charAt(++i) != ':' && i < glob.length())
+	    continue;
+	if (i >= glob.length() || glob.charAt(++i) != ']')
+	    throw new PatternSyntaxException
+		("Unmatched '['.", glob, from);
+	return i;
+    }
 
-	    //@Override
-	    public void parseCommand(Proc command) {
-		// FIXME: This concatinatin the string is unnecessary.
-		String[] line = command.getCmdLine();
-		argString = new StringBuffer(line[0]);
-		for (int i = 1; i < line.length; i++)
-		    argString.append(" ").append(line[i]);
+    private static int matchBrack(String glob, int from)
+	throws PatternSyntaxException
+    {
+	// On first character, both [ and ] are legal.  But when [ is
+	// foolowed with :, it's character class.
+	int i = from + 1;
+	if (glob.charAt(i) == '[' && glob.charAt(i + 1) == ':')
+	    i = matchCharacterClass(glob, i) + 1;
+	else
+	    ++i; // skip any character, including [ or ]
+	boolean escape = false;
+	for (; i < glob.length(); ++i) {
+	    char c = glob.charAt(i);
+	    if (escape) {
+		++i;
+		escape = false;
 	    }
-
-	};
-	addOptions(parser);
-	parser
-		.setHeader("Usage: fcatch [OPTIONS] -- PATH ARGS || fcatch [OPTIONS] PID");
-
-	parser.parse(args);
-
-	if (argString != null) {
-	    String[] cmd = argString.toString().split("\\s");
-
-	    catcher.trace(cmd, requestedPid);
+	    else if (c == '[' && glob.charAt(i + 1) == ':')
+		i = matchCharacterClass(glob, i);
+	    else if (c == ']')
+		return i;
 	}
+	throw new PatternSyntaxException
+	    ("Unmatched '" + glob.charAt(from) + "'.", glob, from);
     }
 
-    public void addOptions(CommandlineParser p) {
-	p.add(new Option('p', "pid to trace", "PID") {
-	    public void parsed(String arg) throws OptionException {
-		try {
-		    int pid = Integer.parseInt(arg);
-		    catcher.addProc(Util.getProcFromPid(pid));
-		    requestedPid = true;
-		    if (argString == null)
-			argString = new StringBuffer(pid);
-		    else
-			argString.append(" " + pid);
-
-		} catch (NumberFormatException e) {
-		    OptionException oe = new OptionException(
-			    "couldn't parse pid: " + arg);
-		    oe.initCause(e);
-		    throw oe;
+    private static String toRegex(String glob) {
+	StringBuffer buf = new StringBuffer();
+	boolean escape = false;
+	for(int i = 0; i < glob.length(); ++i) {
+	    char c = glob.charAt(i);
+	    if (escape) {
+		if (c == '\\')
+		    buf.append("\\\\");
+		else if (c == '*')
+		    buf.append("\\*");
+		else if (c == '?')
+		    buf.append('?');
+		else
+		    buf.append('\\').append(c);
+		escape = false;
+	    }
+	    else {
+		if (c == '\\')
+		    escape = true;
+		else if (c == '[') {
+		    int j = matchBrack(glob, i);
+		    buf.append(glob.substring(i, j+1));
+		    i = j;
 		}
+		else if (c == '*')
+		    buf.append(".*");
+		else if (c == '?')
+		    buf.append('.');
+		else if (c == '.')
+		    buf.append("\\.");
+		else
+		    buf.append(c);
 	    }
-	});
+	}
+	return buf.toString();
     }
 
-    public static void main(String[] args) {
-	fcatch fc = new fcatch();
-	fc.run(args);
+    public static Pattern compile(String glob) {
+	return Pattern.compile(toRegex(glob));
     }
 }


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


                 reply	other threads:[~2008-02-29 15:19 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20080229151923.2323.qmail@sourceware.org \
    --to=cagney@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).