[Logo] JCVSForum - Community Support For JCVS Users and Developers
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: jcvslist
Forum Index » Profile for jcvslist » Messages posted by jcvslist
Author Message
<pre>
Hi
There is cvs ls command in the cvsnt version 2.0.41
but no such functionality is provided in the jcvs latest version.
We want to use cvs ls coomand through jcvs . Is there any way out which
would help in integrating this command
Can we make certain changes in the property files and make this command
work.
Please help us and reply as soon as possible



Thanks

Shashi Bhushan




Whilst this email has been checked for all known viruses, recipients should
undertake their own virus checking as Xansa will not accept any liability
whatsoever.

This email and any files transmitted with it are confidential and protected by
client privilege. It is solely for the use of the intended recipient.
Please delete it and notify the sender if you have received it in
error. Unauthorised use is prohibited.

Any opinions expressed in this email are those of the individual and not
necessarily the organisation.
Xansa, Registered Office: 420 Thames Valley Park Drive,
Thames Valley Park, Reading, RG6 1PU, UK.
Registered in England No.1000954.
t +44 (0)8702 416181
w www.xansa.com

</pre>
<pre>Hi,
I have implemented a group of simple functions to interface to the cvsc
library.
you can look at it and maybe it will help you understand more things. of
course,
if you are looking to replace the gui, you might think of a more in depth
understanding
of the cvsc library.
checkout www.technion.ac.il/~tzahi
the cvslib section.
good luck.

Regards,
tzahi.

-----Original Message-----
From: Tim Endres [mailto:time@trustice.com]
Sent: Wednesday, May 12, 2004 10:28 PM
To: dafs adf
Cc: jcvs@gjt.org
Subject: Re: [jcvs] We want to build an ourself GUI of jCVS and use ccvs
package of jCVS


String scrambled = CVSScramble.scramblePassword( passWord, 'A' );
project.setPassword( scrambled );


> We want to build an ourself GUI of jCVS and use ccvs package of jCVS,
> some code below
>
> request.setHostName(this.url.getText());
> request.setPServer(true);
> request.setPort(2401);
> request.setConnectionMethod(CVSRequest.METHOD_INETD);
> request.setUserName(this.username.getText());
> request.setPassword(this.password.getPassword().toString());
> request.setRepository(this.remoteModuleName.getText());
> request.setRootRepository(this.remoteModulePath.getText());
> request.setRootDirectory(this.remoteModulePath.getText());
> request.setLocalDirectory(this.localModuleName.getText());
> project.setLocalRootDirectory(this.localDir.getText());
> project.setServerCommand("co";
> project.setUserName(this.username.getText());
> project.setPassword(this.password.getPassword().toString());
> project.setConnectionMethod(CVSRequest.METHOD_INETD);
> project.setConnectionPort(2401);
> request.responseHandler = project;
> request.traceRequest = CVSProject.overTraceRequest;
> request.traceResponse = CVSProject.overTraceResponse;
> request.traceTCPData = CVSProject.overTraceTCP;
> request.traceProcessing = CVSProject.overTraceProcessing;
> request.allowGzipFileMode = project.allowsGzipFileMode();
> request.setGzipStreamLevel( project.getGzipStreamLevel() );
> CVSResponse response=client.processCVSRequest(request);
> CVSRespItemVector itemVector=response.getItemList();
>
> then seems to success login,maybe.
> then we get a error message by using System.out.println(
response.toString() );
>
> CVSResponse: 0 items.
> The CVS Request failed.
> Failed authentication with the user name 'guest'.
> cvs [pserver aborted]: descramble: unknown scrambling method
>
> what's go wrong. what do we lost?
>
>
> ---------------------------------
> Do you Yahoo!?
> Win a $20,000 Career Makeover at Yahoo! HotJobs

--------------------------------------------------------------------
View List Archive: <http://www.gjt.org/mlist/jcvs/threads.html>
Search List Archive: <http://csdl.ics.hawaii.edu:8100/>
To unsubscribe from this list:
<http://www.gjt.org/servlets/MailingLists/UnsubForm.html/jcvs>




</pre>
<pre>String scrambled = CVSScramble.scramblePassword( passWord, 'A' );
project.setPassword( scrambled );


> We want to build an ourself GUI of jCVS and use ccvs package of jCVS,
> some code below
>
> request.setHostName(this.url.getText());
> request.setPServer(true);
> request.setPort(2401);
> request.setConnectionMethod(CVSRequest.METHOD_INETD);
> request.setUserName(this.username.getText());
> request.setPassword(this.password.getPassword().toString());
> request.setRepository(this.remoteModuleName.getText());
> request.setRootRepository(this.remoteModulePath.getText());
> request.setRootDirectory(this.remoteModulePath.getText());
> request.setLocalDirectory(this.localModuleName.getText());
> project.setLocalRootDirectory(this.localDir.getText());
> project.setServerCommand("co";
> project.setUserName(this.username.getText());
> project.setPassword(this.password.getPassword().toString());
> project.setConnectionMethod(CVSRequest.METHOD_INETD);
> project.setConnectionPort(2401);
> request.responseHandler = project;
> request.traceRequest = CVSProject.overTraceRequest;
> request.traceResponse = CVSProject.overTraceResponse;
> request.traceTCPData = CVSProject.overTraceTCP;
> request.traceProcessing = CVSProject.overTraceProcessing;
> request.allowGzipFileMode = project.allowsGzipFileMode();
> request.setGzipStreamLevel( project.getGzipStreamLevel() );
> CVSResponse response=client.processCVSRequest(request);
> CVSRespItemVector itemVector=response.getItemList();
>
> then seems to success login,maybe.
> then we get a error message by using System.out.println(
response.toString() );
>
> CVSResponse: 0 items.
> The CVS Request failed.
> Failed authentication with the user name 'guest'.
> cvs [pserver aborted]: descramble: unknown scrambling method
>
> what's go wrong. what do we lost?
>
>
> ---------------------------------
> Do you Yahoo!?
> Win a $20,000 Career Makeover at Yahoo! HotJobs

</pre>
<pre>I experienced this before.
Before you think to change the client code, use the existing one first, then
check whether you can check out.

You must edit passwd file in CVS server, add CVS users, and these users must be
associated with UNIX system user.
In jCVS, you need to add this user in project properties.

Thanks and Regards,
VN

-----Original Message-----
From: Raymond DeCampo [mailto:rdecampo@twcny.rr.com]
Sent: Wednesday, May 12, 2004 6:09 AM
To: jcvs@gjt.org
Subject: Re: [jcvs] We want to build an ourself GUI of jCVS and use ccvs
package of jCVS


dafs adf wrote:

> We want to build an ourself GUI of jCVS and use ccvs package of jCVS,
> some code below
> project.setPassword(this.password.getPassword().toString());
> then seems to success login,maybe.
> then we get a error message by using System.out.println(
response.toString() );
>
> CVSResponse: 0 items.
> The CVS Request failed.
> Failed authentication with the user name 'guest'.
> cvs [pserver aborted]: descramble: unknown scrambling method
>
> what's go wrong. what do we lost?
>

The password must be scrambled before you send it to the server. There
are methods in jCVS to do this scrambling. (I don't remember off the
top of my head.) The best approach when you have an issue like this, is
to examine the jCVS GUI client code to see what is done there.

Ray

--------------------------------------------------------------------
View List Archive: <http://www.gjt.org/mlist/jcvs/threads.html>
Search List Archive: <http://csdl.ics.hawaii.edu:8100/>
To unsubscribe from this list:
<http://www.gjt.org/servlets/MailingLists/UnsubForm.html/jcvs>



-------------------------------------------------------------------
This email is confidential and intended only for the use of the individual or
entity named above and may contain information that is privileged. If you are
not the intended recipient, you are notified that any dissemination,
distribution or copying of this email is strictly prohibited. If you have
received this email in error, please notify us immediately by return email or
telephone and destroy the original message. - This mail is sent via Sony Asia
Pacific Mail Gateway.
-------------------------------------------------------------------

</pre>
<pre>dafs adf wrote:

> We want to build an ourself GUI of jCVS and use ccvs package of jCVS,
> some code below
> project.setPassword(this.password.getPassword().toString());
> then seems to success login,maybe.
> then we get a error message by using System.out.println(
response.toString() );
>
> CVSResponse: 0 items.
> The CVS Request failed.
> Failed authentication with the user name 'guest'.
> cvs [pserver aborted]: descramble: unknown scrambling method
>
> what's go wrong. what do we lost?
>

The password must be scrambled before you send it to the server. There
are methods in jCVS to do this scrambling. (I don't remember off the
top of my head.) The best approach when you have an issue like this, is
to examine the jCVS GUI client code to see what is done there.

Ray

</pre>
<pre>We want to build an ourself GUI of jCVS and use ccvs package of jCVS,
some code below

request.setHostName(this.url.getText());
request.setPServer(true);
request.setPort(2401);
request.setConnectionMethod(CVSRequest.METHOD_INETD);
request.setUserName(this.username.getText());
request.setPassword(this.password.getPassword().toString());
request.setRepository(this.remoteModuleName.getText());
request.setRootRepository(this.remoteModulePath.getText());
request.setRootDirectory(this.remoteModulePath.getText());
request.setLocalDirectory(this.localModuleName.getText());
project.setLocalRootDirectory(this.localDir.getText());
project.setServerCommand("co");
project.setUserName(this.username.getText());
project.setPassword(this.password.getPassword().toString());
project.setConnectionMethod(CVSRequest.METHOD_INETD);
project.setConnectionPort(2401);
request.responseHandler = project;
request.traceRequest = CVSProject.overTraceRequest;
request.traceResponse = CVSProject.overTraceResponse;
request.traceTCPData = CVSProject.overTraceTCP;
request.traceProcessing = CVSProject.overTraceProcessing;
request.allowGzipFileMode = project.allowsGzipFileMode();
request.setGzipStreamLevel( project.getGzipStreamLevel() );
CVSResponse response=client.processCVSRequest(request);
CVSRespItemVector itemVector=response.getItemList();

then seems to success login,maybe.
then we get a error message by using System.out.println( response.toString()
);

CVSResponse: 0 items.
The CVS Request failed.
Failed authentication with the user name 'guest'.
cvs [pserver aborted]: descramble: unknown scrambling method

what's go wrong. what do we lost?


---------------------------------
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs
</pre>
<pre>Hi
I am completely new to CVS programming and with GJT. Using the commonCVSCommand,
I wish to retrieve information about the history of a particular file in CVS
The command I am using is:
CVS:history:p:AEF:d:-e
My problem is I am unable to understand how to analyse/read data returned in the
CVSResonse class for this command(or for any CVS command)
I tried to search a lot into javadocs at:
http://www.gjt.org/javadoc/index.html, but lot of methods(on clases like
CVSResponse, CVSRespItemVector, CVSResponseItem) do not have any description
associated.

I wish to retrieve history data in form of:
Revision, Author, Date and Comment

Further, I will also need to alter the command to retrieve data by using only
for a particular author or date
Please let me know achieve this.
Thanks in advance,
rrs
</pre>
<pre>Is there a version of jCVS that will run on an AS400 ?

Thank You
George

George H. Harrach MSCS
EDS Solutions Consulting
833 W. South Boulder Road
Louisville, Colorado 80027

Tel:303-666-3269 or 3035052367@airmessage.net


</pre>
<pre>To the list administrator:

I've noticed that the list does not set the "reply-to" field (or
whichever field it is; I'm not an email expert) when relaying messages.
As a result, when someone simply replies to a message from the list,
the mail program sends the reply only to the original sender, not the
list. Unless, of course, the replier notices this and fixes it. Other
lists I belong to do not have this problem. This causes people to miss
out on the valuable information being disseminated on the list. For
example, I noticed that Tim's reply to Paolo's first email was not sent
to the list (Paolo referenced it in subsequent emails). It would
greatly enhance the experience of the list if this issue could be resolved.

Second, I have noticed that the on-line archives are woefully
out-of-date. It would also be a boon if the archives could be updated
on a more regular basis. Once a week is probably sufficient given the
amount of traffic on the list.

Thank you for considering these suggestions.

Ray DeCampo


</pre>
<pre>Paolo,

Sorry for the misleading method names. This is how I set up my entries:


String rootDir = // root directory...
String localDir = // local directory...
String args[] = // set up arguments here...for log it would be a list of
filenames
CVSProject project = // set up project here...
CVSRequest request = // set up request here...

project.establishRootEntry(rootDir);
project.setLocalDirectory(localDir);
project.openProject(new File(localDir));

CVSEntryVentor entries = new CVSEntryVector();
CVSArgumentVector argV = new CVSArgumentVector();
for (int i = 0; i < args.length; i++)
{
argV.appendArgument(args[i]);

CVSEntry entry = project.locateEntry("./" + args[i]);
if (entry != null)
{
entries.appendEntry(entry);
}
}
request.appendArguments(argV);
request.setEntries(entries);


HTH,
Ray

</pre>
<pre>I can't execute CVS commands. Tim told me to see some files,

> Look at ProjectFrame in com.ice.jcvsii, specifically
> commonCVSCommand() and getEntriesToActUpon()

Raymond told me to use CVSProject methods to create a CVSEntry, but the
ones he said don't appear in the toolkit...

So I wrote some code, but results are not good. I try to attach it; many
thanks to eachone who has got time to have a look and say what I'm
missing or what I'm wrong.

/**************************************/
public void log()
{
File localRootDir = new File(localDirectory);
if (!localRootDir.exists() && !listingModules)
{
if (!localRootDir.mkdirs())
{
System.err.println("Cannot create local root directory");
return;
}
}
boolean allOk = true;

CVSArgumentVector arguments = new CVSArgumentVector();
CVSArgumentVector globalArguments = new CVSArgumentVector();

// This is the file I want to log; Codemart is Module name
arguments.appendArgument("Codemart/CVSLogger.java");

System.out.println("" + arguments);
int cvsPort = computePortNum(thisRep.getConnMethod(),
thisRep.isPServer());

// This is command line
String command = new String("log:A:E:dft: ");


CVSRequest request = new CVSRequest();

request.setArguments( new CVSArgumentVector() );
request.setGlobalArguments( new CVSArgumentVector());

CVSClient client = new CVSClient();
client.setHostName(thisRep.getHostName());
client.setPort(cvsPort);


CVSProject project = new CVSProject(client);
try
{
project.openProject(localRootDir);
}
catch (IOException ex)
{
System.out.println("Can't open the project!");
}


CVSProjectDef projectDef = new CVSProjectDef(
thisRep.getConnMethod(), thisRep.isPServer(), false,
thisRep.getHostName(), thisRep.getUserName(),
thisRep.getCvsRoot(), thisRep.getModule());

project.setProjectDef(projectDef);
project.setUserName("paolo");
project.setTempDirectory("/home/paolo/prova_checkout/tmp_checkout");
project.setRepository("Codemart");
project.setRootDirectory("/home/cvs-repos/paolo");
project.setLocalRootDirectory("/home/paolo/prova_checkout");
project.setPServer(false);
project.setConnectionPort(cvsPort);
project.setConnectionMethod(CVSRequest.METHOD_RSH);

project.setSetVariables(null);

project.setServerCommand(establishServerCommand(thisRep.getHostName(),
thisRep.getConnMethod(), thisRep.isPServer()));

project.setAllowsGzipFileMode(false);
project.setGzipStreamLevel(0);

if (thisRep.isPServer())
{
String scrambled =
CVSScramble.scramblePassword(thisRep.getPassword(),
'A' );
project.setPassword(scrambled);
}
else if (thisRep.getConnMethod() == CVSRequest.METHOD_SSH )
{
project.setPassword(thisRep.getPassword());
}

if (thisRep.getConnMethod() == CVSRequest.METHOD_RSH )
{
establishRSHProcess(project);
}

project.establishRootEntry(thisRep.getCvsRoot());

request.setPServer(thisRep.isPServer());
request.setUserName(thisRep.getUserName());

if (thisRep.isPServer() ||
thisRep.getConnMethod() == CVSRequest.METHOD_SSH )
{
request.setPassword( project.getPassword() );
}

request.setConnectionMethod(thisRep.getConnMethod());
request.setServerCommand(project.getServerCommand());
request.setRshProcess(rshPath);

request.setPort(cvsPort);
request.setHostName(client.getHostName() );

request.setRepository(thisRep.getCvsRoot());



request.setRootDirectory(thisRep.getCvsRoot());
request.setRootRepository(thisRep.getCvsRoot());
request.setLocalDirectory(localRootDir.getPath());

request.setSetVariables(project.getSetVariables());

request.responseHandler = project;

request.traceRequest = CVSProject.overTraceRequest;
request.traceResponse = CVSProject.overTraceResponse;
request.traceTCPData = CVSProject.overTraceTCP;
request.traceProcessing = CVSProject.overTraceProcessing;

request.allowGzipFileMode = project.allowsGzipFileMode();
request.setGzipStreamLevel(project.getGzipStreamLevel());


request.appendArguments(arguments);
request.appendGlobalArguments(globalArguments);


request.setUserInterface(this);

allOk = request.parseControlString( command );


CVSEntry entry = project.getRootEntry();
entry.setLocalDirectory("Codemart");
entry.setRepository("/home/cvs-repos/paolo/Codemart/");
entry.setName("./CVSLogger.java");

CVSEntryVector entries = new CVSEntryVector();
entries.appendEntry(entry);
System.out.println("----->" + entry.getLocalDirectory());
System.out.println(" " + entry.getRepositoryName());
System.out.println(" " + entry.getRepository());


request.setEntries(entries);

System.out.println("----------");
System.out.println("" + project.getEntryFile(entry));
System.out.println("" + project.getRepository());
System.out.println("" + project.getRootDirectory());
System.out.println("" + project.getRootEntry());


CVSResponse response = new CVSResponse();

client.processCVSRequest(request, response);
if (!listingModules)
{
project.processCVSResponse(request, response);
if (request.getArguments().containsArgument( "-P") ||
request.getArguments().containsArgument( "-r" ) ||
request.getArguments().containsArgument( "-D" ) )
{
project.pruneEmptySubDirs(request.handleEntries);
}
}


System.out.println("" + request.getEntrySelector() + " - " +
CVSRequest.ES_NONE);

String resultStr = response.getDisplayResults();

try
{
PrintStream tmp = System.out;
PrintStream out = new PrintStream(new FileOutputStream("./antan.log"));
PrintStream tee = new TeeStream(System.out, out);
System.setOut(tee);
System.out.println(resultStr);
System.setOut(tmp);
System.out.println("Ciao");
out.close();
}
catch (FileNotFoundException e)
{
}

if (response.getStatus() == CVSResponse.OK )
{
uiDisplayProgressMsg("log executed with success");
if (!listingModules)
{
File rootDirFile = new File(request.getLocalDirectory() +
"/" + request.getRepository());

}
}
else
{
this.uiDisplayProgressMsg("Failed to log");
}

if (response != null && ! request.saveTempFiles)
{
response.deleteTempFiles();
}
}
/**************************************/

I attach output too:

Opening server '514@arale.lips.dist.unige.it'...
Negotiating cvs protocol...
Sending command request, 'log'...
Reading server response...
Closing CVS server connection.
Command completed with 'error' status.
protocol error: directory '/home/cvs-repos/paolo/Codemart' not within
root '/home/cvs-repos/paolo/'

** The command completed with an error status.


--
Saluti,
Paolo

</pre>
<pre>George,

This is not a 'jCVS Question', but a general CVS question.
The simple answer to your question is "no", CVS does not
"rename" files.

To accomplish this, you must "remove" the original file using
CVS, then "add" the new file. The old file will be moved into the
CVS "Attic". This is essential, because old tagged releases
may require the original file with its original name.

Now, on the other hand, if there is no need for the "historical"
name of the file in question, you could just rename the ",v"
file in the CVS repository. This will muck up the history of
course.

tim.

> Can jCVS change the name of a file being managed ?
> If yes, can the revision history be kept.
>
> If jCVS cannot do this, is this a viable work-around.
> -rename the file(s) leaving the suffix the same in where ever it appears in
> the main repository
> -have the users update their local repositories to pick up this file
> -have the users remove the old file from their repositories
> -have the users clean everything up with jCVS,
>
> Thank You
> George
>
> George H. Harrach MSCS
> EDS Solutions Consulting
> 833 W. South Boulder Road
> Louisville, Colorado 80027

</pre>
<pre>Can jCVS change the name of a file being managed ?
If yes, can the revision history be kept.

If jCVS cannot do this, is this a viable work-around.
-rename the file(s) leaving the suffix the same in where ever it appears in
the main repository
-have the users update their local repositories to pick up this file
-have the users remove the old file from their repositories
-have the users clean everything up with jCVS,

Thank You
George

George H. Harrach MSCS
EDS Solutions Consulting
833 W. South Boulder Road
Louisville, Colorado 80027

Tel:303-666-3269 or 3035052367@airmessage.net


</pre>
<pre>You cannot parse the file argument using parseArgumentString().

First, you have an empty entries object. This object must contain
the CVSEntry for each file in your command. Once you have placed
the proper CVSEntry objects into your CVSEntryVector entries, you
then need to set the flag that tells cvsc to send the entries as file
arguments.

Look at ProjectFrame in com.ice.jcvsii, specifically commonCVSCommand()
and getEntriesToActUpon().

> Tim Endres wrote:
>
> > You cannot put the file name in the CVSSpec. You need to add it to
> the arguments
> > of the command via the argument vector.
> >
> > tim.
>
>
> Well, I tried to set
>
> command = "log:N:MA:cdefimoukt: -R -l"
>
> and
>
> argumentStr = "DBUpdater.java";
>
> In fact, in the source code of `CheckOutPanel.java', there is the
> following statement,
>
> CVSArgumentVector arguments =
> CVSArgumentVector.parseArgumentString(argumentStr);
>
> which parses `argumentStr' and sets the up the argument vector. I
> launched my app and this is what I can see:
>
> CVSRequest: command=log
> Opening server '514@arale.lips.dist.unige.it'...
> Negotiating cvs protocol...
> Sending command request, 'log'...
> Reading server response...
> Closing CVS server connection.
> Command completed with 'ok' status.
> cvs server: Logging .
>
> ** The command completed successfully.
>
> The result doesn't change if I change the name of the file I want to log
> or if the name points to a non existing file in my repository. Could you
> tell me where I can read documentation or what are the source file
> responsible to execute the log of a file?
>
> The result I expect is something like
>
> M RCS file: /home/cvspublic/apache-1.2/src/alloc.h,v
> M Working file: apache-1.2/src/alloc.h
> M head: 1.22
> M branch:
> M locks: strict
> M keyword substitution: kv
> M total revisions: 23; selected revisions: 23
> M description:
> M ----------------------------
> M revision 1.22
> M date: 1998/04/13 11:45:37; author: coar; state: Exp; lines: +8 -3
> M
> M Reword the licence text surrounding the use of the name "Apache"
> M in derived products. This will be in effect as of 1.2.7 and
> M following. (It's already in place for 1.3 in development.)
> M ----------------------------
> M revision 1.21
> M date: 1997/05/27 04:14:19; author: fielding; state: Exp; lines: +1 -0
> M Two problems were introduced by the two "error responses have wrong
> headers"
> M patches committed a couple weeks ago. The first is that a NULL table
> M causes mod_log_config to SIGSEGV on a call to table_get; the second is
> M that Location needs to be added to the output header table for redirects.
> M
> M Submitted by: Roy Fielding and Ed Korthof
> M Reviewed by: Jim Jagielski, Randy Terbush
>
> and so on.
>
> Thanks a lot for your help
>
> --
> Saluti,
> Paolo

</pre>
<pre>Paolo Gambetti wrote:
> I tried to do what Tim suggested, but I'm here again...
>
> Tim told me to setup an Entry for each file to be processed, o I added:
>
> CVSEntry entry = new CVSEntry();
> entry.setLocalDirectory("/home/paolo/prova_checkout";
> entry.setRepository("Codemart/";
> entry.setName("CVSLogger.java";
>
> where "/home/paolo/prova_checkout" is the local directory in which I
> executed the checkout, "Codemart/" is the module contained in CVS server
> and "CVSLogger.java" is the file I want to log.
>

Paolo,

When using entries I have had success using the following technique.
First, create a CVSProject and use the open command to initialize it.
(Sorry, I do not have my documentation handy, I think the method is
something like "openProject()"). Then use the findEntry() methods on
CVSProject to get the CVSEntry objects (do not create them yourself).
When passing the entry name, always start the name with "./". For
example, if the local directory is /home/paolo/prova_checkout and the
file is Codemart/CVSLogger.java, use "./Codemart/CVSLogger.java".

Good luck,
Ray

</pre>
 
Forum Index » Profile for jcvslist » Messages posted by jcvslist
Go to:   
Powered by JForum 2.1.9 © JForum Team