Gossamer Forum
Home : Products : Links 2.0 : Customization :

RECIP link checkin

(Page 1 of 4)
> >
Quote Reply
RECIP link checkin
i am in the process of writing a mod to check the database for reciprocal linking. The problem is that LINKS has been made so well that i never went in to hack the code until now, so i am not sure what's what inside the individual files

I am going to use a technique or opening each page, checking to see if the text is there (possibly within the ___% of the page).

if the link back is there, it will do nothing, but if it is not there it woll prompt the admin to email the contact, and then delete it if the check fails 2 times in a row.

If anyone would also like to work on this mod, i'd love to see how you are coming along

$page = get($exchange_URL);
$page =~ tr/A-Z/a-z/;
$page =~ s/\n/ /g;
$page =~ s/\s+/ /g;
$FORM{'search'} =~ tr/A-Z/a-z/;
Quote Reply
Re: RECIP link checkin In reply to
Is your mod going to be a separate script, or is it going to be in nph-verify.cgi?

Would it be possible to send an email to the owners of the links that don't have a reciprocal link?

By the way, does anyone here have a listing at 123webmaster.com? They sent me an email because I did not link back to their site. The email included the number of hits and the number of votes my link had, and also my rating. It looked like an automated email message, so 123webmaster.com must be using some kind of Reciprocal Link Check mod.

Good luck, serrow. I'm looking forward to your mod.
Quote Reply
Re: RECIP link checkin In reply to
Was considering doing something like this as well. I already added a field to the database and in the add page for a recip link url to be added. You might be better doing something that would look at a field in each record and then check for a link on the url provided. It would be pretty intensive to look a certain depth into a site for each recip. Time's that by a thousand links and it would take a while to spider all of those sites.
Quote Reply
Re: RECIP link checkin In reply to
That's a good point. You can also require a reciprocal link on the page that was submitted (usually the homepage), so you only have to check one URL. This is what 123webmaster.com does. However, many people (myself included) don't like to place links all over their front page...
Quote Reply
Re: RECIP link checkin In reply to
Sounds like a great project and I'm considering writing such a mod. What would need to be done is the following:

1. Compile instructions for how to add a new data field - Reciprocal Link URL.

2. Write a separate script to verify reciprocal link URLs - NO spidering as it only checks the URL (to the page where the recip can be found) the submitter provided when they originally submitted their site.

This can be done either manually periodically via browser or automatically via cron. If not found then the script would delete the listing from the links.db file and email the listing submitter. The script will have a fully featured administrative front end.

Such a script would also be portable to other databases.

Dan Smile
Quote Reply
Re: RECIP link checkin In reply to
Wouldn't it be nicer if the reciprocal link checking can be done with nph-verify.cgi?

As I said in my previous message, the mod also should allow the administrator to compose and send an email to the owners of links that don't have a reciprocal link.

I have no idea if these features are difficult to implement or not, as I really don't know how to code Smile
Quote Reply
Re: RECIP link checkin In reply to
I will post how to add the recip field to your add.cgi and add the field to the database... shortly. I have done that part.

I am currently looking at some link verifying perl code. I may try and write something that will be fairly simple without all the auto e-mail and delete stuff. Atleast you will know when a link is removed.
However as I haven't really gotten into it yet It may be more involved than I anticipate. I have only written a few perl scripts and am basically just in the learning stages.... So no promises on whether I can get it working.
Quote Reply
Re: RECIP link checkin In reply to
This is how to add the reciprical link field to your add resource page and database.


in links.def append the recip line to the end of your database definition.

# Definition of your database file.
%db_def = (
ID => [0, 'numer', 5, 8, 1, '', ''],
Title => [1, 'alpha', 40, 75, 1, '', ''],
URL => [2, 'alpha', 40, 75, 1, 'http://', '^http|news|mailto|ftp'],
Date => [3, 'date', 15, 15, 1, \&get_date, ''],
Category => [4, 'alpha', 0, 150, 1, '', ''],
Description => [5, 'alpha', '40x3', 500, 0, '', ''],
'Contact Name' => [6, 'alpha', 40, 75, 1, '', ''],
'Contact Email' => [7, 'alpha', 40, 75, 1, '', '.+@.+\..+'],
Hits => [8, 'numer', 10, 10, 1, '0', '\d+'],
isNew => [9, 'alpha', 0, 5, 0, 'No', ''],
isPopular => [10, 'alpha', 0, 5, 0, 'No', ''],
Rating => [11, 'numer', 10, 10, 1, 0, '^[\d\.]+$'],
Votes => [12, 'numer', 10, 10, 1, 0, '^\d+$'],
ReceiveMail => [13, 'alpha', 10, 10, 1, 'Yes', 'No|Yes'],
recip => [14, 'alpha', 40, 75, 0, 'http://', '^http|news|mailto|ftp']


in add.cgi add the recip line to the sub send_email

sub send_email {
# --------------------------------------------------------
# Sends an email to the admin, letting him know that there is
# a new link waiting to be validated. No error checking as we don't
# want users to see the informative &cgierr output.

# Check to make sure that there is an admin email address defined.
$db_admin_email or &cgierr("Admin Email Address Not Defined in config file!");

my $to = $db_admin_email;
my $from = $in{$db_cols[$db_contact_email]};
my $subject = "Addition to Database: $in{'Title'}\n";
my $msg = qq|
The following link is awaiting validation:

Title: $in{'Title'}
URL: $in{'URL'}
Recip URL: $in{'recip'}
Category: $in{'Category'}
Description: $in{'Description'}
Contact Name: $in{'Contact Name'}
Contact Email: $in{'Contact Email'}
Remote Host: $ENV{'REMOTE_HOST'}
Referer: $ENV{'HTTP_REFERER'}

To validate, please go to:
$db_script_url

Sincerely,

Links Manager.
|;





on your add.html and add_error.html template file add this line:

Reciprical URL: <input name="recip" size="40">


I think this is everything. I hope I didn't forget any other modifications I had to perform.

Good Luck
-Delay

Also the link checking code looks fairly complex to integrate into links.
While I may do that in something in the future for now I am probably going
to look at using a software program and just load the links
database file into it. I've got to get my site operational soon I have been
spending too much time doing modifications before I know the site will
be successful.
Quote Reply
Re: RECIP link checkin In reply to
I thought that the url.db was automatically created when ou build. it should be in the same dir as the the links.db. If you want to use links.db instead, just change all occurrances of $links[1] to $links[2]

-Nicholas

------------------
Quote Reply
Re: RECIP link checkin In reply to
thanks for the code delay. I have the recip link checker working with some test data (not in the links.db) format. this will be the first time i will have anything opening the database so i am taking a few precautions.

I will not let lverify.pl delete records. it will send out a mailing to each using subscribe.pl (anyone have a good way to do this?) and then i will have the final say in deleting the links.

I am eventually going to add it to the verify script (there isn't a lot to do left) but for now i would like to keep it separate for ease in applying this mod, thanks for all your comments, and keep them coming
Quote Reply
Re: RECIP link checkin In reply to
This works. It's kinda slow so I made it check five links at a time:

Code:
#!/usr/bin/perl
## Program Name: fetch.pl
require "links.cfg";
$perpage=0;
if ($ENV{'QUERY_STRING'}){
$perpage=$ENV{'QUERY_STRING'};}

print "Content-type: text/html\n\n";
print "<html><title>testing - $perpage</title>";

use LWP::Simple;


open (LINK, "full_path_to/url.db") or &cgierr("unable to open url index $db_url_name. Reason: $!");
if ($db_use_flock) {
flock (LINK, 2) or &cgierr("unable to get exclusive lock. Reason: $!");
}
seek (LINK, 0, 0); # rewind to beginning.

# Go through the Links database and find the link we want to go to.
LINE: while (<LINK> ) {
next LINE if (/^#/); # Skip comment lines.
next LINE if (/^\s*$/); # Skip blank lines.
@links=split (/\|/);
if (($links[0] < $perpage+5) and ($links[0] >= $perpage)) {
print "checking $links[1] - ";
&getcontent("$links[1]",
"0",
"1",
"<html>",
"</html>");
}
elsif ($links[0] > $perpage+5) {
$perpage=$perpage+5;
print "<a href=?$perpage>Next 5</a>";
exit;


}

} #end of while
close (LINK);


## End of program.

sub getcontent{
$counter=0;
local ($url,$base_url_img, $base_url_href, $start_string, $end_string) = @_;

defined ($page = get($url));


@page = split(/\n/,$page);

foreach $line(@page) {

if ($line =~ /www.ceglobe.com/i) {
$counter=1;
}

}

if ($counter > 0) {
print "They are linking back<br>";
}
else {
print "They are not linking back<br>";
}
}

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


[This message has been edited by CEGlobe (edited June 16, 1999).]

[This message has been edited by CEGlobe (edited June 16, 1999).]
Quote Reply
Re: RECIP link checkin In reply to
CEGLOBE:

in your application, i have had a few problems. is your url.db the same as the links.db. I am assuming from looking thru the code, that it is not. if it is not, how did you create this database?

could you give a little descriptive HOW TO? in doing this? I would like this to open the links.db and just go from there

thanks a lot
Quote Reply
Re: RECIP link checkin In reply to
I don't know if this will help, but has anyone checked out Cliff's Link Trader Script? It has reciprocal link checking capabilities. Perhaps you can "borrow" some code? Smile

The script is availible at http://www.shavenferret.com/scripts/linkt/ .
Quote Reply
Re: RECIP link checkin In reply to
Excellent checker CEGlobe. I made a few minor alterations. I hope you don't mind :-) This is for those that performed the recip alteration above. The fetch script now reads the recip field in the links.db. It also only prints out if a person is not linking. If someone is linking it prints nothing. I am going to rewrite the script a bit more so it will run from cron and generate a report of those that aren't recipricating. Script also puts url of page and hyperlinks it so you can manually view the page before sending out an e-mail. Also prints out the e-mail address and links it on the page of the person so you don't have to look it up manually.

only thing that needs to be modified is the url to check for. the $site_check variable.

Script needs to reside in the admin directory as well or put the full path to links.cfg

Thanks again CEGlobe you did the hard part...
Good Luck,

-Delay

#!/usr/bin/perl
## Program Name: fetch.pl
#put the url you want to check for
$site_check = "www.yourdomain.com";
require "links.cfg";
$perpage=0;
if ($ENV{'QUERY_STRING'}){
$perpage=$ENV{'QUERY_STRING'};}
print "Content-type: text/html\n\n";
print "<html><title>testing - $perpage</title>";
use LWP::Simple;

open (LINK, "$db_links_name") or &cgierr("unable to open url index $db_url_name. Reason: $!");
if ($db_use_flock) {
flock (LINK, 14) or &cgierr("unable to get exclusive lock. Reason: $!");
}
seek (LINK, 0, 0); # rewind to beginning.
# Go through the Links database and find the link we want to go to.
LINE: while (<LINK> ) {
next LINE if (/^#/); # Skip comment lines.
next LINE if (/^\s*$/); # Skip blank lines.
@links=split (/\|/);
if (($links[0] < $perpage+5) and ($links[0] >= $perpage)) {
#print "checking $links[14] - ";
&getcontent("$links[14]",
"0",
"1",
"<html>",
"</html>");
}
elsif ($links[0] > $perpage+5) {
$perpage=$perpage+5;
print "<a href=?$perpage>Next 5</a>";
exit;

}
} #end of while
close (LINK);

## End of program.
sub getcontent{
$counter=0;
local ($url,$base_url_img, $base_url_href, $start_string, $end_string) = @_;
defined ($page = get($url));

@page = split(/\n/,$page);
foreach $line(@page) {
if ($line =~ /$site_check/i) {
$counter=1;
}
}
if ($counter > 0) {
#print "They are linking back<br>";
}
else {
print "checking \<a href\=\"$links[14]\"\>$links[14]\<\/a\> \- They are not linking back ";
print "\<a href\=\"mailto\:$links[7]\"\> $links[7]\<\/a\><br>";
}
}
Quote Reply
Re: RECIP link checkin In reply to
Looks good. I hope it runs faster than my version Smile.

------------------
Quote Reply
Re: RECIP link checkin In reply to
I modified my last version to try and make things faster. I also borrowed delay's part with the new field numbers and such. One last thing, if it can't connect to the site, it syas can't connect rather thatn just saying they aren't linking back:
Code:
#!/usr/bin/perl
## Program Name: fetch.pl
#put the url you want to check for
$site_check = "www.ceglobe.com";
require "d:/http/ceglobe/software/admin/links.cfg";
$perpage=0;
if ($ENV{'QUERY_STRING'}){
$perpage=$ENV{'QUERY_STRING'};}
print "Content-type: text/html\n\n";
$finalnum=$perpage+5;
print "<html><title>Checking Links - ID #'s ($perpage-$finalpage)</title>";
&main;

sub main {
open (LINK, "$db_url_name") or print("unable to open url index $db_url_name. Reason: $!");

seek (LINK, 0, 0); # rewind to beginning.
# Go through the Links database and find the link we want to go to.
LINE: while (<LINK> ) {
next LINE if (/^#/); # Skip comment lines.
next LINE if (/^\s*$/); # Skip blank lines.
@links=split (/\|/);
if (($links[0] < $perpage+5) and ($links[0] >= $perpage)) {
&getcontent("$links[14]");
}
elsif ($links[0] > $perpage+5) {
$perpage=$perpage+5;
print "<a href=?$perpage>Next 5</a>";
exit;
}

} #end of while
close (LINK);
}

sub getcontent{
use LWP::Simple;
$counter=0;
local ($url) = @_;
$page = get($url);

if ($page) {

if ($page =~ /$site_check/i){

}
else {
print "checking $url - They are not linking back ";
print "<a href=\"mailto\:$links[7]\"> $links[7]</a><br>";
}
}
else {
print "Checking $url - Could not connect! - <a href=\"$url\" target=\"_new\">[Manually Check]</a><br>";
}
}

------------------
Quote Reply
Re: RECIP link checkin In reply to
Yet another modification. Basically I used CEglobes modifications and added auto e-mailing users that don't provide a recip. The auto e-mail code is taken from the add.cgi link addition e-mail script. Before you use this on your huge links sites test it out first! I am still building my site and I only have 6 links to check and it worked fine with those but on a big list I don't really know. It doesn't do anything to the sites it can't connect with. You will have to e-mail those manually. or modify this script a bit to do it. I also commented out the next page feature as I don't need that for my site. If you want to have this feature remove the comment tags from those lines. A couple of other minor things I added. It also checks to see if the recip field actually contains a url. If it doesn't nothing is displayed. Many of my listings will have a blank recip field so I don't need a report on those links. Also linked the url even for sites it went to and couldn't locate the recip.

I am not sure if I will use the auto e-mail feature myself.

#!/usr/bin/perl
## Program Name: fetch.pl
#put the url you want to check for
$site_check = "www.yourdomain.com";
require "links.cfg";
$perpage=0;
if ($ENV{'QUERY_STRING'}){
$perpage=$ENV{'QUERY_STRING'};}
print "Content-type: text/html\n\n";
$finalnum=$perpage+5;
print "<html><title>Checking Links - ID #'s ($perpage-$finalpage)</title>";
&main;
sub main {
open (LINK, "$db_links_name") or print("unable to open url index $db_links_name. Reason: $!");
seek (LINK, 0, 0); # rewind to beginning.
# Go through the Links database and find the link we want to go to.
LINE: while (<LINK> ) {
next LINE if (/^#/); # Skip comment lines.
next LINE if (/^\s*$/); # Skip blank lines.
@links=split (/\|/);
#if (($links[0] < $perpage+5) and ($links[0] >= $perpage)) {
&getcontent("$links[14]");
#}
#elsif ($links[0] > $perpage+5) {
#$perpage=$perpage+5;
#print "<a href=?$perpage>Next 5</a>";
#exit;
#}
} #end of while
close (LINK);
}
sub getcontent{
use LWP::Simple;
$counter=0;
local ($url) = @_;
$page = get($url);
if ($page) {
if ($page =~ /$site_check/i){
}
else {
if ($links[14] =~ "http.*") {
print "checking <a href=\"$url\" target=\"_new\">$url</a> - They are not linking back ";
print "<a href=\"mailto\:$links[7]?subject=Unable to verify reciprical link&body=$subject\">$links[7]</a><br>";
&send_email;

}
}
}
else {
if ($links[14] =~ "http.*") {
print "Checking $url - Could not connect! - <a href=\"$url\" target=\"_new\">[Manually Check]</a><br>";
}
}
}
sub send_email {
# --------------------------------------------------------

# Check to make sure that there is an admin email address defined.

$db_admin_email or &cgierr("Admin Email Address Not Defined in config file!");

my $to = $links[7];
my $from = $db_admin_email;
my $subject = "Unable to find Reciprical Link\n";
my $msg = qq|Hello $links[6],

I am the webmaster of http://$site_check.
I was verifying the reciprical links and was
unable to find a link on your site ($links[2]).
You submitted $links[14]
as the location of where I could find my return link.
I have searched this page and am unable to find it.
You are listed on my site in the $links[4] Category.
Please let me know where I can find my link.

Best Regards,

-Webmaster

|;

# Then mail it away!
require "$db_lib_path/Mailer.pm";
my $mailer = new Mailer ( { smtp => $db_smtp_server,
sendmail => $db_mail_path,
from => $from,
subject => $subject,
to => $to,
msg => $msg,
log => $db_mailer_log
} ) or return;
$mailer->send or return;
}

Quote Reply
Re: RECIP link checkin In reply to
I am getting some errors on all of these mods. i am installing them in the admin directory, and so far, everything looks okay, but when i run it all the html prints is

"next 5" and it never tests any of the urls
also when i click on next 5 it takes me to

http://mydomain.com/cgi-bin/links/admin/?5 and of course this is forbidden since it hasn't called fetch yet



also, could someone send me a small amount of a test database to test this with. i haven't integrated the new recip_url in my links and i wanted to test before all goes online

thanks a lot
Quote Reply
Re: RECIP link checkin In reply to
Serrow,

Here are some problems you could be having. First if you do not have the recip field added to your database it is probably going to give you problems. A little explanation on what the script is doing. Wherever you see this it is using the links.db
$db_links_name. This variable is defined in links.cfg. Therefore is you wanted to do a test, you would replace the $db_links_name
with the full path to your test database on this line.

open (LINK, "$db_links_name") or print("unable to open url index $db_links_name. Reason: $!");

Second uncomment these lines to get the next page feature working again.

if (($links[0] < $perpage+5) and ($links[0] >= $perpage)) {
&getcontent("$links[14]");
}
elsif ($links[0] > $perpage+5) {
$perpage=$perpage+5;
print "<a href=?$perpage>Next 5</a>";
exit;
}

It might however give you a blank page just saying next 5 at the bottom even with the recip field installed. This is because it is looking to make sure there is an actual URL in the recip field if there isn't it is skipped. But it is still counted as one of the 5 on the page.

Also here is an example record for you to test with.
1|site title|http://www.yourdomain.com|12-Jun-1999|Category|site description|Name|youremail@yourdomain.com|0|Yes|No|0|0|Yes|http://www.yourdomain.com/recip.html

Just open any text editor and put in test records like this with one per line. Save it as test.db or whatever. Upload it to your directory and put the /full path/test.db to it in the fetch script as described above.

Also to give you a little more idea as to what the script is doing... when you see these $links[14] it is calling the 15 field in each record. Remember that it starts with 0 so $links[0] is actually the first field which in the example above would be the number 1 for the record. So if you have nothing in $links[14], you are not going to be chacking anything....

Anyway I hope this helps,
-Delay


Quote Reply
Re: RECIP link checkin In reply to
here is a little that i added to the fetch that ceglobe originally posted. it will add a checkbox, and a delete button to delete the fields so if you're tired of emailing them, you can just eliminate them. it calls the admin so it will do all the necesary things to delete the record properly.

also, i can't decide what i would like to do about emailing. i want an automated function, but i don't want it to email them every time i check (in case i just want to know) i would like it to print to a text file the id, url, recip, and email address then when i am ready i can email

also i am working to just check both the URL and the recip URL since i have several hundred records already in the database and those don't have a reciprocal field. who knows, many of these submissions may have even posted me on their front page

eventually, i would like to have this spider the origal url 1 level, but that is on the burner

this has been a great thread... keep it alive if you have anything

#!/usr/local/bin/perl
## Program Name: fetch.pl
#put the url you want to check for
$site_check = "search_phrase";
require "links.cfg";
$perpage=0;
if ($ENV{'QUERY_STRING'}){
$perpage=$ENV{'QUERY_STRING'};}
$increment = 20;
print "Content-type: text/html\n\n";
print "<html><title>testing - $perpage</title>\n";

print "<body>\n";
print "<form action=admin.cgi METHOD=POST><input type=hidden name=db value=links>";
use LWP::Simple;
open (LINK, "$db_links_name") or &cgierr("unable to open url index $db_url_name. Reason: $!");
if ($db_use_flock) {
flock (LINK, 14) or &cgierr("unable to get exclusive lock. Reason: $!");
}
seek (LINK, 0, 0); # rewind to beginning.
# Go through the Links database and find the link we want to go to.
LINE: while (<LINK> ) {
next LINE if (/^#/); # Skip comment lines.
next LINE if (/^\s*$/); # Skip blank lines.
@links=split (/\|/);


if (($links[0] < $perpage+$increment) and ($links[0] >= $perpage)) {
#print "checking $links[14] - ";
&getcontent("$links[14]",
"0",
"1",
"<html>",
"</html>");
}
elsif ($links[0] > $perpage+$increment) {
$perpage=$perpage+$increment;
print "<a href=fetch.pl?$perpage>Next $increment</a><br>";
&del_button;
exit;

}
} #end of while
close (LINK);

## End of program.
sub getcontent{
$counter=0;
local ($url,$base_url_img, $base_url_href, $start_string, $end_string) = @_;
defined ($page = get($url));

@page = split(/\n/,$page);
foreach $line(@page) {
if ($line =~ /$site_check/i) {
$counter=1;
}
}
if ($counter > 0) {
print "They are linking back<br>";
}
else {
print "ID $links[0] <input TYPE=CHECKBOX NAME=$links[0] VALUE=\"delete\">checking \<a href\=\"$links[14]\"\>$links[14]\<\/a\> \- They are not linking back ";
print "\<a href\=\"mailto\:$links[7]\"\> $links[7]\<\/a\><br>";



}
}

sub del_button{
print "<INPUT TYPE=SUBMIT name=delete_records VALUE=Delete Checked Link(s)> <INPUT TYPE=RESET VALUE=Reset>\n";
print "</body></html>\n";
}

&del_button;
Quote Reply
Re: RECIP link checkin In reply to
Thanks for the addition Serrow. I have a fairly major update. I will upload in a bit. I need to write the instructions up as it is a little more involved. I added your delete feature. I also added a little automation to the e-mail part without auto e-mailing everyone. Also integrated into the admin panel and have it able to run from cron to generate a report instead of running interactively. It can still be run interactively, though I think the script might time out if run from a web browser on a large list.
Quote Reply
Re: RECIP link checkin In reply to
serrow, you should change this part:

&getcontent("$links[14]",
"0",
"1",
"<html>",
"</html>");

to:

&getcontent("$links[14]");


and this:

local ($url,$base_url_img, $base_url_href, $start_string, $end_string) = @_;

to:

local ($url) = @_;

It just makes htings easier.



------------------
Quote Reply
Re: RECIP link checkin In reply to
Ok everyone who is following this thread. Here are my modifications to the link checker script. The instructions are long so I just put an HTML page on my server.

http://www.uv-ray.com/recip_mod/

There are quite a few modifications. I think I included all the steps. Let me know if you are able to get it working so I will know if my instructions are ok and I included everything.

Once Again thanks CEGlobe and Serrow. Looks like we were able to make something pretty good together.
Quote Reply
Re: RECIP link checkin In reply to
Delay,

There are few minor problem with you instructions.

Quote:
#full path to report
$report_url = "http://www.yourdomain.com/cgi-bin/admin/data/recip.html";

You can't place recip.html in the data directory. I believe that .HTML files cannot be viewed in the CGI-BIN. You have to place recip.html outside the CGI-BIN.

You also forgot a line break in

Quote:
#full path to script $report_cgi = "http://www.yourdomain.com/cgi-bin/admin/recip.cgi";

Also, you have to put <form></form> around the <textarea></textarea> or the text field won't show up in Netscape. Strange Smile It works fine in IE.

Finally,

Quote:
<p><$font><b>Emailing</b><br></font> <$font>
<a href="$db_script_url?db=links&html_mail_update=1">Newsletter</a><br>
<a href="$db_script_url?db=links&html_mail_target=1">Link Owners</a><br>
</font>
</p>
<pre>

The last <pre> shouldn't be there, should it?

Thanks for the awesome mod!
Quote Reply
Re: RECIP link checkin In reply to
I have changed the $report_url and $recip_report, but recip.cgi still creates recip.html in the /admin/data directory. What am I missing?

[This message has been edited by t_dog (edited June 18, 1999).]
> >