HEX
Server: Apache/2.4.29 (Ubuntu)
System: Linux bareserver 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
User: root (0)
PHP: 7.2.24-0ubuntu0.18.04.17
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //usr/share/webmin/proc/StringSplitter.java
import java.util.Vector;

// StringSplitter
// A stringsplitter object splits a string into a number of substrings,
// each separated by one separator character. Separator characters can be
// included in the string by escaping them with a \
public class StringSplitter
{
	Vector parts = new Vector();
	int pos = 0;

	StringSplitter(String str, char sep)
	{
	this(str, sep, true);
	}

	StringSplitter(String str, char sep, boolean escape)
	{
	StringBuffer current;

	parts.addElement(current = new StringBuffer());
	for(int i=0; i<str.length(); i++) {
		char c = str.charAt(i);
		if (c == '\\' && i != str.length()-1 && escape)
			current.append(str.charAt(++i));
		else if (c == sep)
			parts.addElement(current = new StringBuffer());
		else
			current.append(c);
		}
	}

	// countTokens
	// The number of tokens left in the string
	int countTokens()
	{
	return parts.size() - pos;
	}

	// hasMoreTokens
	// Can we call nextToken?
	boolean hasMoreTokens()
	{
	return pos < parts.size();
	}

	// nextToken
	// Returns the string value of the next token
	String nextToken()
	{
	if (pos < parts.size())
		return ((StringBuffer)parts.elementAt(pos++)).toString();
	else
		return null;
	}

	// gettokens
	// Returns a vector of strings split from the given input string
	Vector gettokens()
	{
	return parts;
	}
}


// StringJoiner
// The complement of StringSplitter. Takes a number of substrings and adds
// them to a string, separated by some character. If the separator character
// appears in one of the substrings, escape it with a \
class StringJoiner
{
	char sep;
	StringBuffer str = new StringBuffer();
	int count = 0;

	// Create a new StringJoiner using the given separator
	StringJoiner(char s)
	{
	sep = s;
	}

	// add
	// Add one string, and a separator
	void add(String s)
	{
	if (count != 0)
		str.append(sep);
	for(int i=0; i<s.length(); i++) {
		char c = s.charAt(i);
		if (c == sep || c == '\\') str.append('\\');
		str.append(c);
		}
	count++;
	}

	// toString
	// Get the resulting string
	public String toString()
	{
	return str.toString();
	}
}