summaryrefslogtreecommitdiff
path: root/misc/bidwatcher
diff options
context:
space:
mode:
authortron <tron@pkgsrc.org>2001-11-21 22:40:05 +0000
committertron <tron@pkgsrc.org>2001-11-21 22:40:05 +0000
commite07cfe8a404a91761f8c87c47fbe935281649a99 (patch)
tree743d05a9a5ca90d67d0236dbad8797228ae6fb89 /misc/bidwatcher
parentce9fc5d8c47a6792424da112d7db823ba8c1c684 (diff)
downloadpkgsrc-e07cfe8a404a91761f8c87c47fbe935281649a99.tar.gz
Pull in latest bug fixes from the CVS repository which fix e.g problems
with loading the configuration and updating auctions. Bump version number to 1.3.0.99 as this is now close to what will be the 1.3.1 release.
Diffstat (limited to 'misc/bidwatcher')
-rw-r--r--misc/bidwatcher/Makefile4
-rw-r--r--misc/bidwatcher/distinfo7
-rw-r--r--misc/bidwatcher/patches/patch-aa553
-rw-r--r--misc/bidwatcher/patches/patch-ab29
-rw-r--r--misc/bidwatcher/patches/patch-ac462
-rw-r--r--misc/bidwatcher/patches/patch-ad12
6 files changed, 1048 insertions, 19 deletions
diff --git a/misc/bidwatcher/Makefile b/misc/bidwatcher/Makefile
index b1a11cd3eea..637f3193338 100644
--- a/misc/bidwatcher/Makefile
+++ b/misc/bidwatcher/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.5 2001/10/07 08:29:43 tron Exp $
+# $NetBSD: Makefile,v 1.6 2001/11/21 22:40:05 tron Exp $
DISTNAME= bidwatcher-1.3.0
-PKGNAME= bidwatcher-1.2.99.0
+PKGNAME= bidwatcher-1.3.0.99
CATEGORIES= misc
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=bidwatcher/}
diff --git a/misc/bidwatcher/distinfo b/misc/bidwatcher/distinfo
index 9bab1e6b238..678ae61d0cd 100644
--- a/misc/bidwatcher/distinfo
+++ b/misc/bidwatcher/distinfo
@@ -1,5 +1,8 @@
-$NetBSD: distinfo,v 1.4 2001/10/07 22:44:20 tron Exp $
+$NetBSD: distinfo,v 1.5 2001/11/21 22:40:05 tron Exp $
SHA1 (bidwatcher-1.3.0.tar.gz) = 2fc2d17d65aab43fd0b716cce3588207aebb8a68
Size (bidwatcher-1.3.0.tar.gz) = 97828 bytes
-SHA1 (patch-aa) = 3db432be9adf3a16cbc3056e0877674009bb019a
+SHA1 (patch-aa) = 5576ea59e5a996a95b285cceed59fca83555191c
+SHA1 (patch-ab) = 638a20dd89941b7b1033b655c8c51813e70f8814
+SHA1 (patch-ac) = 84246dbea849dfe78265e8867b33a1007d006a04
+SHA1 (patch-ad) = 346f653298f0c254b3f1669710753cba7426af41
diff --git a/misc/bidwatcher/patches/patch-aa b/misc/bidwatcher/patches/patch-aa
index 1d6e1eace8f..2c1c2831399 100644
--- a/misc/bidwatcher/patches/patch-aa
+++ b/misc/bidwatcher/patches/patch-aa
@@ -1,8 +1,208 @@
-$NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
+$NetBSD: patch-aa,v 1.5 2001/11/21 22:40:06 tron Exp $
--- bidwatcher.cpp.orig Thu Jul 5 02:31:54 2001
-+++ bidwatcher.cpp Mon Oct 8 00:42:19 2001
-@@ -639,7 +639,7 @@
++++ bidwatcher.cpp Wed Nov 21 23:34:17 2001
+@@ -5,6 +5,7 @@
+ // Tom McNair (tmcnair@cyberhighway.net)
+ // Wayne Schlitt (wayne@midwestcs.com)
+ // Ben Byer (bushing@users.sourceforge.net)
++// Kevin Dwyer (kevin@pheared.net)
+ //
+ // use of this code is restricted to the terms
+ // of the GNU GPL, which should have been included in this
+@@ -61,6 +62,8 @@
+ char * banner2 = "help us: please report ALL bugs at "
+ "http://sourceforge.net/projects/bidwatcher";
+
++const char * const bw_subdir = ".bidwatcher";
++
+ unsigned int * ParseList2(char *);
+ void WriteAucFile2(void);
+ void ReadAucFile2(void);
+@@ -137,15 +140,15 @@
+ int i;
+ for(i=0;i<aucIdx;i++) {
+ if(auction[i]==NULL) {
+- printf("auction[%d] was null at %d\n",i,line);
++ printf("auction[%lu] was null at %d\n",i,line);
+ die();
+ }
+ /* if(auction[i]->infourl==NULL) {
+- printf("auction[%d]->infourl was invalid at %d\n",i,line);
++ printf("auction[%lu]->infourl was invalid at %d\n",i,line);
+ die();
+ } */
+ if(auction[i]->magic!=12345) {
+- printf("auction[%d]->magic was %d at %d\n",i,auction[i]->magic,line);
++ printf("auction[%lu]->magic was %d at %d\n",i,auction[i]->magic,line);
+ die();
+ }
+ }
+@@ -256,9 +259,10 @@
+ {
+ if (updateInProgress ) return;
+ updateInProgress = TRUE;
++ int retval;
+
+- if(strlen(authID)>1) switch(GetUserBids2()) {
+- case 1:
++ if(strlen(authID)>1) switch(retval=GetUserBids2()) {
++ case GUA_SUCCESS:
+ GetUserListings();
+ UpdateList();
+ break;
+@@ -267,7 +271,7 @@
+ break;
+ default:
+ showError("Update failed: Network error");
+-
++ printf("getuserbids2 returned %d\n",retval);
+ }
+
+ if ( aucIdx != 0 ) UpdateAll(FALSE);
+@@ -335,7 +339,7 @@
+ myBidQuantity=quantity;
+ printf("myBidAmount set to %f\n",bid);
+ bidurl=new URL(g_strdup_printf("http://cgi.ebay.com/aw-cgi/eBayISAPI.dll?"
+- "MakeBid&item=%d&maxbid=%.2f&quant=%d",
++ "MakeBid&item=%lu&maxbid=%.2f&quant=%d",
+ ItemNumber,bid,quantity),proxyurl);
+ int returnVal = fetchURL(bidurl, &Buff, TIMEOUT);
+ if ( returnVal != 1 )
+@@ -352,19 +356,19 @@
+
+ switch(returnVal) {
+ case PBS_BIDTOOLOW:
+- sprintf(lineBuff,"Pre-bid on %d for %.2f FAILED: bid below asking price",
++ sprintf(lineBuff,"Pre-bid on %lu for %.2f FAILED: bid below asking price",
+ ItemNumber,snipeAmount);
+ showBidStatus(lineBuff);
+ free(Buff);
+ break;
+ case PBS_BADQUANTITY:
+- sprintf(lineBuff,"Pre-bid on %d FAILED: Bad quantity '%d'",
++ sprintf(lineBuff,"Pre-bid on %lu FAILED: Bad quantity '%d'",
+ ItemNumber,snipeQty);
+ showBidStatus(lineBuff);
+ free(Buff);
+ break;
+ case PBS_AUCTIONOVER:
+- sprintf(lineBuff,"Pre-bid on %d FAILED: Auction already ended",ItemNumber);
++ sprintf(lineBuff,"Pre-bid on %lu FAILED: Auction already ended",ItemNumber);
+ showBidStatus(lineBuff);
+ free(Buff);
+ break;
+@@ -375,13 +379,13 @@
+ scratch = strtok(0,"\"");
+ printf("Snipe key is %s\n",scratch);
+ strcpy(snipeKey, scratch);
+- sprintf(lineBuff,"Pre-bid on %d SUCCEEDED: %d at %.2f",
++ sprintf(lineBuff,"Pre-bid on %lu SUCCEEDED: %d at %.2f",
+ ItemNumber,snipeQty, snipeAmount);
+ showBidStatus(lineBuff);
+ free(Buff);
+ break;
+ default:
+- sprintf(lineBuff,"Pre-bid on %d FAILED: Unknown error %d",
++ sprintf(lineBuff,"Pre-bid on %lu FAILED: Unknown error %d",
+ ItemNumber,returnVal);
+ showBidStatus(lineBuff);
+ }
+@@ -396,7 +400,7 @@
+ char *end=strstr(url,"?");
+ end[1]='\0';
+
+- sprintf(bidurl->url,"%sAcceptBid&item=%d&key=%s"
++ sprintf(bidurl->url,"%sAcceptBid&item=%lu&key=%s"
+ "&userid=%s&pass=%s&maxbid=%.2f&quant=%d",url,
+ ItemNumber,snipeKey,authID,authPASS,snipeAmount,
+ snipeQty);
+@@ -406,7 +410,7 @@
+ retval = fetchURL(bidurl, &Buff, TIMEOUT);
+
+ if(retval!=NET_SUCCESS) {
+- sprintf(lineBuff,"Bid on %d FAILED: Error %d connecting to eBay",
++ sprintf(lineBuff,"Bid on %lu FAILED: Error %d connecting to eBay",
+ ItemNumber, retval);
+ showBidStatus(lineBuff);
+ return NET_NETERROR;
+@@ -415,42 +419,46 @@
+ if(windows && retval==PBS_SUCCESS) {
+ switch(returnVal) {
+ case PB_HIGHBID:
+- sprintf(lineBuff,"Bid on %d SUCCEEDED: You are the high bidder",
++ sprintf(lineBuff,"Bid on %lu SUCCEEDED: You are the high bidder",
+ ItemNumber);
+ showBidStatus(lineBuff);
+ break;
+ case PB_OUTBID:
+- sprintf(lineBuff,"Bid on %d LOST: Someone has outbid you",
++ sprintf(lineBuff,"Bid on %lu LOST: Someone has outbid you",
+ ItemNumber);
+ showBidStatus(lineBuff);
+ break;
+ case PB_BIDTOOLOW:
+- sprintf(lineBuff,"Bid on %d FAILED: Bid below current asking price",
++ sprintf(lineBuff,"Bid on %lu FAILED: Bid below current asking price",
+ ItemNumber);
+ showBidStatus(lineBuff);
+ break;
+ case PB_BADQUANTITY:
+- sprintf(lineBuff,"Bid on %d FAILED: Bad quantity '%d'",
++ sprintf(lineBuff,"Bid on %lu FAILED: Bad quantity '%d'",
+ ItemNumber,snipeQty);
+ showBidStatus(lineBuff);
+ break;
+ case PB_AUCTIONOVER:
+- sprintf(lineBuff,"Bid on %d FAILED: Auction already ended",
++ sprintf(lineBuff,"Bid on %lu FAILED: Auction already ended",
+ ItemNumber);
+ showBidStatus(lineBuff);
+ break;
+ case PB_BADUSER:
+- sprintf(lineBuff,"Bid on %d FAILED: Invalid username or password!",
++ sprintf(lineBuff,"Bid on %lu FAILED: Invalid username or password!",
+ ItemNumber);
+ showBidStatus(lineBuff);
+ break;
+ default:
+- sprintf(lineBuff,"Pre-bid on %d FAILED: Unknown error %d",
++ sprintf(lineBuff,"Pre-bid on %lu FAILED: Unknown error %d",
+ ItemNumber,returnVal);
+ showBidStatus(lineBuff);
+ if(returnVal>6 || returnVal<1) {
+- FILE *erfile=fopen(g_strdup_printf("%s/.bidwatcher/error-%d",
+- getenv("HOME"),ItemNumber),"w");
++ FILE *erfile=fopen(g_strdup_printf("%s/%s/error-%d",
++ getenv("HOME"),bw_subdir,ItemNumber),
++ "w");
++ //FILE *erfile=fopen(g_strdup_printf("%s/.bidwatcher/error-%lu",
++ // getenv("HOME"),ItemNumber),"w");
++
+ fprintf(erfile,"Error: could not parse answer.\n%s\n",bidurl->url);
+ fprintf(erfile,"%s",Buff);
+ fclose(erfile);
+@@ -619,9 +627,18 @@
+ snipeDelay=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON
+ (confwindow->
+ snipespin));
++
++ //if (strcmp(gtk_entry_get_text(GTK_ENTRY(confwindow->useridtext)), "") == 0)
++ // gtk_entry_set_text(GTK_ENTRY(confwindow->useridtext), "!");
++
+ strcpy(authID,
+- gtk_entry_get_text(GTK_ENTRY(confwindow->useridtext)));
++ gtk_entry_get_text(GTK_ENTRY(confwindow->useridtext)));
++
+ char encpassword[76];
++
++ //if (strcmp(gtk_entry_get_text(GTK_ENTRY(confwindow->passwordtext)), "") == 0)
++ //gtk_entry_set_text(GTK_ENTRY(confwindow->passwordtext), "!");
++
+ encode_password(encpassword,gtk_entry_get_text(GTK_ENTRY(confwindow
+ ->passwordtext)));
+ strcpy(authPASS,encpassword);
+@@ -639,7 +656,7 @@
if(proxyurl!=NULL) delete(proxyurl);
if(strlen(proxystring)>2)
@@ -11,26 +211,241 @@ $NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
else proxyurl=NULL;
if(timesyncurl!=NULL) delete(timesyncurl);
-@@ -1712,11 +1712,15 @@
+@@ -661,6 +678,7 @@
+ proxylabel=gtk_label_new("Proxy server: (ex: foo.bar.com:8080)");
+ useridtext=gtk_entry_new();
+ passwordtext=gtk_entry_new();
++ gtk_entry_set_visibility(GTK_ENTRY(passwordtext), FALSE);
+ browsertext=gtk_entry_new();
+ mailclienttext=gtk_entry_new();
+ proxytext=gtk_entry_new();
+@@ -741,8 +759,19 @@
+
+ char plainpassword[76];
+ decode_password(plainpassword,authPASS);
++
++ // if (strcmp(authID, "!") == 0)
++ // gtk_entry_set_text(GTK_ENTRY(useridtext),"");
++ //else
++
+ gtk_entry_set_text(GTK_ENTRY(useridtext),authID);
++
++ //if (strcmp(plainpassword,"!") == 0)
++ // gtk_entry_set_text(GTK_ENTRY(passwordtext),"");
++ //else
++
+ gtk_entry_set_text(GTK_ENTRY(passwordtext),plainpassword);
++
+ gtk_entry_set_text(GTK_ENTRY(browsertext),browserPATH);
+ gtk_entry_set_text(GTK_ENTRY(mailclienttext),emailPATH);
+ gtk_entry_set_text(GTK_ENTRY(proxytext),proxystring);
+@@ -839,6 +868,7 @@
+ "Wayne Schlitt <wayne@midwestcs.com>\n"
+ "Larry Gilbert (dischead@users.sourceforge.net)\n"
+ "Ben Byer <bushing@users.sourceforge.net>\n"
++ "Kevin Dwyer <kevin@pheared.net>\n"
+ "\n"
+ "All copyrights under the GNU GPL 1998-2001.\n"
+ "See the enclosed file COPYING for more details, or\n"
+@@ -949,7 +979,7 @@
+ if ( myauc ->TimeLeft[0] != 0 ) infoState = 3;
+ else infoState = 2;
+ }
+- sprintf(info, "Item Number : %d",myauc->ItemNumber);
++ sprintf(info, "Item Number : %lu",myauc->ItemNumber);
+ gtk_window_set_title(GTK_WINDOW(window),info);
+
+ strcpy(info, "Current Bid : ");
+@@ -992,7 +1022,8 @@
+ }
+ if ( infoState == 3 )
+ {
+- strcpy(info,myauc->Seller);
++ strcpy(info," ");
++ strcat(info,myauc->Seller);
+ strcat(info,myauc->SellerRate);
+ strcat(info,"\n ");
+ strcat(info,myauc->Location);
+@@ -1065,7 +1096,7 @@
+ gtk_container_set_border_width(GTK_CONTAINER(window),10);
+ char currentbid[80],chTemp[80];
+
+- gtk_window_set_title(GTK_WINDOW(window),g_strdup_printf("Item Number : %d",
++ gtk_window_set_title(GTK_WINDOW(window),g_strdup_printf("Item Number : %lu",
+ myauc->ItemNumber));
+
+ sprintf(currentbid, "Current Bid : %s%.2f",myauc->currency,
+@@ -1203,11 +1234,11 @@
+ }
+ char fileName[200];
+ if(issnipes) {
+- MakeFileName("/.bidwatcher/snipe", fileName, iscurrent);
++ MakeFileName(g_strdup_printf("/%s/snipe", bw_subdir), fileName, iscurrent);
+ gtk_window_set_title(GTK_WINDOW(window),iscurrent?"This month's snipes":
+ "Last month's snipes");
+ } else {
+- MakeFileName("/.bidwatcher/log", fileName, iscurrent);
++ MakeFileName(g_strdup_printf("/%s/log", bw_subdir), fileName, iscurrent);
+ gtk_window_set_title(GTK_WINDOW(window),iscurrent?
+ "This month's ended auctions":
+ "Last month's ended auctions");
+@@ -1380,8 +1411,18 @@
+ #endif
+ tooltips=gtk_tooltips_new();
+
+- authID[0] = 0; authPASS[0] = 0;
+- proxystring[0]='\0';
++ //strcpy(authID, "!");
++ //strcpy(authPASS, "!");
++ //strcpy(proxystring, "!");
++
++ //authID[0] = '\0';
++ //authPASS[0] = '\0';
++ //proxystring[0] = '\0';
++
++ memset(authID, 0, sizeof(authID));
++ memset(authPASS, 0, sizeof(authPASS));
++ memset(proxystring, 0, sizeof(proxystring));
++
+ strcpy(browserPATH, "netscape");
+ strcpy(emailPATH, "xterm -e pine");
+
+@@ -1592,8 +1633,8 @@
+
+ GtkWidget *scrolled_window=gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
+- GTK_POLICY_AUTOMATIC,
+- GTK_POLICY_AUTOMATIC);
++ GTK_POLICY_AUTOMATIC,
++ GTK_POLICY_AUTOMATIC);
+
+ aucList=gtk_clist_new_with_titles( 5,titles);
+ gtk_clist_column_titles_passive(GTK_CLIST(aucList));
+@@ -1605,6 +1646,7 @@
+ GTK_SELECTION_SINGLE);
+ gtk_clist_set_shadow_type(GTK_CLIST(aucList),
+ GTK_SHADOW_NONE);
++ gtk_clist_set_background(GTK_CLIST(aucList),0,&black);
+ // make right button select, too
+ gtk_clist_set_button_actions(GTK_CLIST(aucList),1,GTK_BUTTON_SELECTS);
+ gtk_clist_set_button_actions(GTK_CLIST(aucList),2,GTK_BUTTON_SELECTS);
+@@ -1622,14 +1664,15 @@
+ gtk_signal_connect(GTK_OBJECT(aucList), "drag_data_received",
+ GTK_SIGNAL_FUNC(drophandler),NULL);
+
++ scrolled_window = gtk_scrolled_window_new(NULL,NULL);
++ gtk_container_add(GTK_CONTAINER(scrolled_window),aucList);
+
+- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
+- aucList);
+ gtk_box_pack_start(GTK_BOX(vbox),scrolled_window,TRUE,TRUE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),errorbox,FALSE,FALSE,0);
+
+ gtk_widget_set_style(aucList,clean14style);
+ gtk_widget_show(aucList);
++
+ gtk_widget_show(scrolled_window);
+
+ gtk_container_add(GTK_CONTAINER (window),vbox);
+@@ -1637,7 +1680,8 @@
+ char fileName[200];
+ char * homeDir = getenv("HOME");
+ strcpy(fileName, homeDir);
+- strcat(fileName, "/.bidwatcher");
++ strcat(fileName, "/");
++ strcat(fileName, bw_subdir);
+ mkdir(fileName, 0700);
+
+ ReadAucFile();
+@@ -1671,7 +1715,9 @@
+ char fileName[200];
+ char * homeDir = getenv("HOME");
+ strcpy(fileName, homeDir);
+- strcat(fileName, "/.bidwatcher/bw.cfg");
++ strcat(fileName, "/");
++ strcat(fileName, bw_subdir);
++ strcat(fileName, "/bw.cfg");
+ outFile.open(fileName);
+ if ( outFile )
+ {
+@@ -1701,7 +1747,7 @@
+ {
+ FILE *file;
+ char fileName[200];
+- sprintf(fileName,"%s/.bidwatcher/bw2.cfg",getenv("HOME"));
++ sprintf(fileName,"%s/%s/bw2.cfg",getenv("HOME"),bw_subdir);
+ file=fopen(fileName,"w");
+ if(file==NULL) {
+ printf("Error opening configuration file %s!\n",fileName);
+@@ -1712,14 +1758,30 @@
fprintf(file,"option trackbids %s\n", trackBids?"yes":"no");
fprintf(file,"option updateonstartup %s\n", doStartup?"yes":"no");
fprintf(file,"option autodelete %s\n", autoDelete?"yes":"no");
- fprintf(file,"option snipedelay %.2f\n", snipeDelay);
-+ fprintf(file,"option snipedelay %.d\n", snipeDelay);
++ fprintf(file,"option snipedelay %i\n", snipeDelay);
if(clockIsSet) fprintf(file,"option timediff %d\n",timeDiff);
- fprintf(file, "user %s %s\n",authID,authPASS);
+- fprintf(file, "user %s %s\n",authID,authPASS);
- fprintf(file, "option browser %s\n",browserPATH);
- fprintf(file, "option proxy %s\n",proxystring);
++ // fprintf(file, "user %s %s\n",authID,authPASS);
++ // fprintf(file, "option browser %s\n",browserPATH);
++ // fprintf(file, "option emailclient %s\n",emailPATH);
++ // fprintf(file, "option proxy %s\n",proxystring);
++
++ if (authID[0]!='\0')
++ fprintf(file, "user %s ", authID);
++ if (authPASS[0]!='\0')
++ fprintf(file, "%s\n", authPASS);
++ else
++ fprintf(file, "nopass\n");
++
+ if (browserPATH[0]!='\0')
+ fprintf(file, "option browser %s\n",browserPATH);
+ if (emailPATH[0]!='\0')
-+ fprintf(file, "option email %s\n",emailPATH);
++ fprintf(file, "option emailclient %s\n",emailPATH);
+ if (proxystring[0]!='\0')
+ fprintf(file, "option proxy %s\n",proxystring);
++
for ( int i=0; i < aucIdx; i++ )
{
- fprintf(file,"auction %u\n",auction[i]->ItemNumber);
-@@ -2508,7 +2512,7 @@
+- fprintf(file,"auction %u\n",auction[i]->ItemNumber);
++ fprintf(file,"auction %lu\n",auction[i]->ItemNumber);
+ fprintf(file, " desc %s\n",auction[i]->Description);
+ fprintf(file, " ends %ld\n",auction[i]->EndsValue);
+ fprintf(file, " mybid %.2f %d\n",auction[i]->myBidAmount, auction[i]->myBidQuantity);
+@@ -1764,12 +1826,12 @@
+
+ else if ( (strstr(browserPATH, "scape") != NULL) && hit )
+ {
+- sprintf(commandLine, "exec %s -remote \"openURL(http://cgi.ebay.com/aw-cgi/eBayISAPI.dll?ViewItem&item=%d,new-window)\"",browserPATH,auction[choice]->ItemNumber);
++ sprintf(commandLine, "exec %s -remote \"openURL(http://cgi.ebay.com/aw-cgi/eBayISAPI.dll?ViewItem&item=%lu,new-window)\"",browserPATH,auction[choice]->ItemNumber);
+ system(commandLine);
+ }
+ else
+ {
+- sprintf(commandLine, "exec %s \"http://cgi.ebay.com/aw-cgi/eBayISAPI.dll?ViewItem&item=%d\" &",browserPATH,auction[choice]->ItemNumber);
++ sprintf(commandLine, "exec %s \"http://cgi.ebay.com/aw-cgi/eBayISAPI.dll?ViewItem&item=%lu\" &",browserPATH,auction[choice]->ItemNumber);
+ system(commandLine);
+ }
+ }
+@@ -2411,14 +2473,14 @@
+ char * scratch;
+ ifstream inFile;
+
+- sprintf(fileName,"%s/.bidwatcher/bw2.cfg",getenv("HOME"));
++ sprintf(fileName,"%s/%s/bw2.cfg",getenv("HOME"),bw_subdir);
+ FILE *file=fopen(fileName,"r");
+ if(file) {
+ fclose(file);
+ ReadAucFile2();
+ return;
+ }
+- sprintf(fileName,"%s/.bidwatcher/bw.cfg",getenv("HOME"));
++ sprintf(fileName,"%s/%s/bw.cfg",getenv("HOME"),bw_subdir);
+ inFile.open(fileName, ios::in);
+ if ( inFile )
+ {
+@@ -2508,7 +2570,7 @@
if(proxyurl!=NULL) delete(proxyurl);
if(strlen(proxystring)>2)
@@ -39,16 +454,25 @@ $NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
else proxyurl=NULL;
if(timesyncurl!=NULL) delete(timesyncurl);
-@@ -2564,7 +2568,7 @@
+@@ -2524,7 +2586,7 @@
+ {
+ FILE *file;
+ char fileName[200];
+- sprintf(fileName,"%s/.bidwatcher/bw2.cfg",getenv("HOME"));
++ sprintf(fileName,"%s/%s/bw2.cfg",getenv("HOME"),bw_subdir);
+ file=fopen(fileName,"r");
+ if(file==NULL) {
+ printf("Error opening configuration file %s!\n",fileName);
+@@ -2564,7 +2626,7 @@
}
if(!strcasecmp(which,"snipedelay")) {
- fscanf(file,"%.2f",&snipeDelay);
-+ fscanf(file,"%d",&snipeDelay);
++ fscanf(file,"%i",&snipeDelay);
recognized=1;
}
-@@ -2575,12 +2579,17 @@
+@@ -2575,12 +2637,17 @@
}
if(!strcasecmp(which,"browser")) {
@@ -57,8 +481,8 @@ $NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
+ recognized=1;
+ }
+
-+ if(!strcasecmp(which,"email")) {
-+ fscanf(file,"%199s[^\n]",emailPATH);
++ if(!strcasecmp(which,"emailclient")) {
++ fscanf(file," %199[^\n]",emailPATH);
recognized=1;
}
@@ -68,7 +492,16 @@ $NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
recognized=1;
if(strspn(proxystring," ")==strlen(proxystring)) proxystring[0]='\0';
}
-@@ -2618,7 +2627,7 @@
+@@ -2590,7 +2657,7 @@
+ char which[20];
+ char done=0;
+ auction[aucIdx]=new auctioninfo();
+- fscanf(file,"%d",&auction[aucIdx]->ItemNumber);
++ fscanf(file,"%lu",&auction[aucIdx]->ItemNumber);
+
+ while(!feof(file)) {
+ fscanf(file,"%19s",which);
+@@ -2618,7 +2685,7 @@
fclose(file);
if(proxyurl!=NULL) delete(proxyurl);
if(strlen(proxystring)>2)
@@ -77,3 +510,93 @@ $NetBSD: patch-aa,v 1.4 2001/10/07 22:44:21 tron Exp $
else proxyurl=NULL;
if(timesyncurl!=NULL) delete(timesyncurl);
+@@ -2673,7 +2740,7 @@
+ sprintf(mybid,"%s%.2f",auction[i]->currency,auction[i]->myBidAmount);
+ } else strcpy(mybid,"");
+
+- gchar *item[]={g_strdup_printf("%u",auction[i]->ItemNumber),price,chTemp,mybid,
++ gchar *item[]={g_strdup_printf("%lu",auction[i]->ItemNumber),price,chTemp,mybid,
+ auction[i]->Description};
+ int j;for(j=0;j<5;j++)
+ gtk_clist_set_text(GTK_CLIST(aucList),i,j,item[j]);
+@@ -2855,9 +2922,10 @@
+ unsigned int * ids;
+
+ if ( !trackBids ) return GUA_SUCCESS;
+-
+- if ( strlen(authID) < 2 ) return -1;
+- if ( strlen(authID) > 64 ) return -2;
++ /* XXX FIXME remove when we fix this subroutine */
++ return GUA_SUCCESS;
++ if ( strlen(authID) < 2 ) return GUA_BADUSER;
++ if ( strlen(authID) > 64 ) return GUA_BADUSER;
+
+ showStatus(" getting bids");
+ greenLED();
+@@ -3020,7 +3088,7 @@
+ sprintf(mybid,"%s%.2f",auction[i]->currency,auction[i]->myBidAmount);
+ } else strcpy(mybid,"");
+
+- gchar *item[]={g_strdup_printf("%u",auction[i]->ItemNumber),price,chTemp,mybid,
++ gchar *item[]={g_strdup_printf("%lu",auction[i]->ItemNumber),price,chTemp,mybid,
+ auction[i]->Description};
+ gtk_clist_insert(GTK_CLIST(aucList),i,item);
+ if(auction[i]->isSnipe) {
+@@ -3047,6 +3115,9 @@
+ }
+
+ gtk_clist_set_foreground(GTK_CLIST(aucList),i,theColor);
++
++ //gtk_clist_set_background(GTK_CLIST(aucList),i,&black);
++
+ /* bid column color:
+ * green - I have bid and am the high bidder
+ yellow - I will snipe and (afaik) will be the high bidder
+@@ -3112,14 +3183,14 @@
+ char *HtmlBuff;
+ if(infourl==NULL)
+ infourl=new URL(g_strdup_printf("http://cgi.ebay.com/aw-cgi/eBayISAPI.dll"
+- "?ViewItem&item=%u",ItemNumber),
++ "?ViewItem&item=%lu",ItemNumber),
+ proxyurl);
+ greenLED();
+ returnVal = fetchURL(infourl,&HtmlBuff,TIMEOUT);
+ // puts(HtmlBuff);
+ if(returnVal==NET_NETERROR || returnVal==NET_TIMEOUT) { // maybe proxy settings changed
+ infourl=new URL(g_strdup_printf("http://cgi.ebay.com/aw-cgi/eBayISAPI.dll"
+- "?ViewItem&item=%u",ItemNumber),
++ "?ViewItem&item=%lu",ItemNumber),
+ proxyurl);
+ returnVal = fetchURL(infourl,&HtmlBuff, TIMEOUT);
+ }
+@@ -3356,7 +3427,7 @@
+ MakeFileName("/.bidwatcher/log", fileName, TRUE);
+ reportOut.open(fileName, ios::app);
+ char truncDesc[300];
+- sprintf(truncDesc,"%u - %s\nHigh Bidder: %s\n High Bid: %.2f",
++ sprintf(truncDesc,"%lu - %s\nHigh Bidder: %s\n High Bid: %.2f",
+ auction[index]->ItemNumber,auction[index]->Description,
+ auction[index]->HighBidder,auction[index]->CurrentBid);
+ strcat( truncDesc, "\n-----------------------------------------------------\n");
+@@ -3385,7 +3456,7 @@
+ MakeFileName("/.bidwatcher/snipe", fileName, TRUE);
+ reportOut.open(fileName, ios::app);
+ char truncDesc[1024];
+- sprintf( truncDesc, "%u %s%.2f %s",
++ sprintf( truncDesc, "%lu %s%.2f %s",
+ auction[index]->ItemNumber,auction[index]->currency,
+ auction[index]->snipeAmount,
+ auction[index]->Description );
+@@ -3448,9 +3519,9 @@
+ }
+ #ifdef DEBUG_NETWORK
+ ofstream outFile;
+- sprintf( fileName, "%s/.bidwatcher/snipe_fail_%u",
+- getenv("HOME"), auction[index]->ItemNumber );
+-
++ sprintf( fileName, "%s/%s/snipe_fail_%u",
++ getenv("HOME"), bw_subdir, auction[index]->ItemNumber );
++
+ outFile.open(fileName);
+ outFile.close();
+ #endif
diff --git a/misc/bidwatcher/patches/patch-ab b/misc/bidwatcher/patches/patch-ab
new file mode 100644
index 00000000000..6b4574b0f8b
--- /dev/null
+++ b/misc/bidwatcher/patches/patch-ab
@@ -0,0 +1,29 @@
+$NetBSD: patch-ab,v 1.1 2001/11/21 22:42:03 tron Exp $
+
+--- bidwatcher.h.orig Tue Apr 3 09:22:38 2001
++++ bidwatcher.h Tue Nov 20 20:45:40 2001
+@@ -5,6 +5,7 @@
+ // Tom McNair (tmcnair@cyberhighway.net)
+ // Wayne Schlitt (wayne@midwestcs.com)
+ // Ben Byer (bushing@users.sourceforge.net)
++// Kevin Dwyer (kevin@pheared.net)
+ //
+ // use of this code is restricted to the terms
+ // of the GNU GPL, which should have been included in this
+@@ -80,7 +81,7 @@
+ // Stucture to store auction information
+ //
+ struct auctioninfo {
+- unsigned int ItemNumber; /* Item Number (User Entered) */
++ unsigned long int ItemNumber; /* Item Number (User Entered) */
+ char Description[129]; /* Description Of Item For sale */
+ char currency[10];
+ float CurrentBid; /* 1: Current Bid */
+@@ -346,3 +347,7 @@
+
+ void getAdultCookie(char *, char *);
+
++// We can make a bunch of these and make cases for all of em.
++#define TYPE_EBAY 0
++#define TYPE_EBAYMOTORSCAR 1 //Ebay motors auctions that are cars
++#define TYPE_EBAYMOTORS 0 //Auctions on motors that aren't cars are normal
diff --git a/misc/bidwatcher/patches/patch-ac b/misc/bidwatcher/patches/patch-ac
new file mode 100644
index 00000000000..583aeb27e58
--- /dev/null
+++ b/misc/bidwatcher/patches/patch-ac
@@ -0,0 +1,462 @@
+$NetBSD: patch-ac,v 1.1 2001/11/21 22:42:04 tron Exp $
+
+--- helpers.cpp.orig Thu Jul 5 01:54:48 2001
++++ helpers.cpp Wed Nov 21 23:34:17 2001
+@@ -5,6 +5,7 @@
+ // Tom McNair (tmcnair@cyberhighway.net)
+ // Wayne Schlitt (wayne@midwestcs.com)
+ // Ben Byer (bushing@users.sourceforge.net)
++// Kevin Dwyer (kevin@pheared.net)
+ //
+ // use of this code is restricted to the terms
+ // of the GNU GPL, which should have been included in this
+@@ -39,7 +40,7 @@
+
+ char *CheckPrice="0123456789.$,"; // Characters allowed in a price
+
+-char *SearchOps[]={ "Starts at", // 1: +1
++char *SearchOps[2][14]={{ "Starts at", // 1: +1
+ "Currently", // 2: +1
+ "First bid", // 3: +1
+ "Quantity", // 4: +1
+@@ -51,8 +52,21 @@
+ "Seller (Rating)", // 10: +1
+ "High bid", // 11: +1
+ "Bid increment", // 12: +1
+- "High bids", // 13: +1
+- "*"};
++ "see winning bidders", // 13: +1
++ "*"},
++ /* eBay Motors */
++ { "Currently",
++ "Time left ",
++ "Seller (rating) ",
++ "High bid ",
++ "# of bids ",
++ "Location ",
++ "Started ",
++ "ends ",
++ "Starts at",
++ "*"
++ }
++ };
+
+ float calculateBidIncrement(float currentBid, char *currency)
+ {
+@@ -279,7 +293,10 @@
+ break;
+ }
+ }
+- if ( !foundEndOfForm ) return ERROR;
++ if ( !foundEndOfForm ) {
++ printf("ProcessBid: Could not find end of form.");
++ return ERROR;
++ }
+ while ( streamBuff ) {
+ streamBuff.getline(lineBuff, 1024, '\n');
+ printf("%s\n",lineBuff);
+@@ -291,6 +308,8 @@
+ else if ( strstr(lineBuff, "Cannot proceed") != NULL ) return PB_AUCTIONOVER;
+ else if ( strstr(lineBuff, "or password invalid") != NULL ) return PB_BADUSER;
+ }
++ printf("Bid failed - unable to parse eBay's response. \n");
++ printf("%s",Buff);
+ return ERROR;
+ }
+ /*
+@@ -448,13 +467,15 @@
+ //////////////////////////////////////////////////////////////////////////////
+ // ReturnBidVarNum
+ //////////////////////////////////////////////////////////////////////////////
+-int ReturnBidVarNum(char *LineData)
++int ReturnBidVarNum(char *LineData, int auc_type)
+ {
+ int idx=0;
+
+- for(idx=0;SearchOps[idx][0]!='*';++idx)
+- if (strcmp(LineData,SearchOps[idx])==0) return (idx+1);
+-
++ for(idx=0;SearchOps[auc_type][idx][0]!='*';++idx)
++ if (strcmp(LineData,SearchOps[auc_type][idx])==0) {
++ return (idx+1);
++ }
++
+ return 0;
+
+ }
+@@ -664,6 +685,7 @@
+ {
+ int idx=0;
+ int cnt;
++ int auc_type=TYPE_EBAY;
+ char LineData[1025];
+ char * scratch;
+ char newName[76];
+@@ -681,6 +703,8 @@
+ memset( HighBidder, 0, sizeof( HighBidder ) );
+ reserveMet = 'x';
+
++ CurrentBid = 0; // Not resetting this breaks the logic of updating the bid
++
+ /*
+ * Parse the description out of the buffer first. This is
+ * most easily done at the buffer-level and not as we try
+@@ -711,11 +735,34 @@
+
+ while(strstr(LineData,"eBay")==NULL && streamBuff)
+ streamBuff.getline(LineData, 1024, '\n');
+- if ( strstr(LineData,"eBay item") == NULL )
+- return FALSE;
++
++ if ( strstr(LineData,"eBay item") == NULL )
++ if (strstr(LineData,"eBay Motors item") == NULL)
++ return FALSE;
++
++ if (strstr(LineData,"eBay Motors item") != NULL) auc_type = TYPE_EBAYMOTORSCAR;
++
+ while(strstr(LineData,") -")==NULL && streamBuff)
+ streamBuff.getline(LineData, 1024, '\n');
+
++
++ if (auc_type == TYPE_EBAYMOTORSCAR) {
++ scratch = strstr(Buff, "First bid");
++ if (scratch != NULL) {
++ // This is totally crazy and will break as soon as they muck with
++ // the html but it works for now to distinguish a Car auction from
++ // a part or accessory. Anyone want to offer a better suggestion?
++
++ //Should move us ahead to a $. This check is here to make sure
++ //we aren't looking at something the seller said in his desc etc.
++ scratch +=10;
++
++ if (scratch[0] == '$') auc_type = TYPE_EBAYMOTORS;
++ }
++ }
++
++ //printf("Auction Type=%i\n", auc_type);
++
+ while (streamBuff)
+ {
+ streamBuff.getline(LineData, 1024, '\n');
+@@ -724,107 +771,203 @@
+ // some reason some of the data is missing or out of
+ // order we can still salvage what we can..
+
++ // This new case style I came up with is a bit redundant, but
++ // it may allow for bidwatcher to grow into more types. Like
++ // Checking yahoo or something. See also SearchOps. -kdwyer
++
+ if (LineData[0]!=0)
+ {
+- switch (ReturnBidVarNum(LineData))
+- {
+- case 1:
+- case 2: // current price
+- if (CurrentBid==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- if ( strstr(LineData,"reserve not") != NULL )
+- reserveMet = 'n';
+- else if ( strstr(LineData,"reserve met") != NULL )
+- reserveMet = 'y';
++ //if (ReturnBidVarNum(LineData, auc_type) != 0)
++ //printf("DEBUG:%i\n", ReturnBidVarNum(LineData, auc_type));
++ switch (auc_type) {
++ case TYPE_EBAY:
++ switch (ReturnBidVarNum(LineData, auc_type))
++ {
++ case 1:
++ case 2: // current price
++ if (CurrentBid==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ if ( strstr(LineData,"reserve not") != NULL )
++ reserveMet = 'n';
++ else if ( strstr(LineData,"reserve met") != NULL )
++ reserveMet = 'y';
+
+- parseprice(LineData,this,FALSE);
+- /* CheckBadChars(LineData,CheckPrice);
+- strncpy(CurrentBid,LineData,14); */
+- }
+- break;
+- case 3: // first bid
+- if (FirstBid==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- parseprice(LineData,this,TRUE);
+- /* CheckBadChars(LineData,CheckPrice);
+- strncpy(FirstBid,LineData,14); */
+- }
+- break;
+- case 4: // quantity
+- if (Quantity==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- CheckBadChars(LineData,"0123456789");
+- // strncpy(Quantity,LineData,14);
+- Quantity=atoi(LineData);
+- }
+- break;
+- case 5: // bid count
+- if (BidCount==0) {
+- char bc[80];
+- streamBuff.getline(LineData, 1024, '\n');
+- for(cnt=0;(((LineData[cnt]!=' ') &&
+- (LineData[cnt]!=0)) && (cnt<14));++cnt)
+- bc[cnt]=LineData[cnt];
+- bc[cnt]=0;
+- BidCount=atoi(bc);
+- }
+- break;
+- case 6: // time left
+- if (TimeLeft[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(TimeLeft,LineData,50);
+- }
+- break;
+- case 7: // location
+- if (Location[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(Location,LineData,100);
+- }
+- break;
+- case 8: // time started
+- if (Started[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(Started,LineData,50);
+- translate_date( Started );
+- }
+- break;
+- case 9: // time ending
+- if (Ends[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(Ends,LineData,50);
+- translate_date( Ends );
+- }
+- break;
+- case 10: // seller id
+- if (Seller[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(Seller,LineData,75);
+- }
+- break;
+- case 11: // high bidder id
+- if (HighBidder[0]==0) {
+- streamBuff.getline(LineData, 1024, '\n');
+- strncpy(HighBidder,LineData,76);
+- HighBidder[75] = '\0';
+- }
+- break;
+-
+- //case 12: idx=GetLineOfData(idx,1024,LineData,Buff);
+- // CheckBadChars(LineData,CheckPrice);
+- // strncpy(BidInc,LineData,14);
+- // break;
+-
+- case 13: // dutch auction
+- streamBuff.getline(LineData, 1024, '\n');
+- CheckBadChars(LineData,CheckPrice);
+- strcpy(HighBidder, "Dutch Auction");
+- break;
++ parseprice(LineData,this,FALSE);
++ /* CheckBadChars(LineData,CheckPrice);
++ strncpy(CurrentBid,LineData,14); */
++ }
++ break;
++ case 3: // first bid
++ if (FirstBid==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ parseprice(LineData,this,TRUE);
++ /* CheckBadChars(LineData,CheckPrice);
++ strncpy(FirstBid,LineData,14); */
++ }
++ break;
++ case 4: // quantity
++ if (Quantity==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ CheckBadChars(LineData,"0123456789");
++ // strncpy(Quantity,LineData,14);
++ Quantity=atoi(LineData);
++ }
++ break;
++ case 5: // bid count
++ if (BidCount==0) {
++ char bc[80];
++ streamBuff.getline(LineData, 1024, '\n');
++ for(cnt=0;(((LineData[cnt]!=' ') &&
++ (LineData[cnt]!=0)) && (cnt<14));++cnt)
++ bc[cnt]=LineData[cnt];
++ bc[cnt]=0;
++ BidCount=atoi(bc);
++ }
++ break;
++ case 6: // time left
++ if (TimeLeft[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(TimeLeft,LineData,50);
++ }
++ break;
++ case 7: // location
++ if (Location[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Location,LineData,100);
++ }
++ break;
++ case 8: // time started
++ if (Started[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Started,LineData,50);
++ translate_date( Started );
++ }
++ break;
++ case 9: // time ending
++ if (Ends[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Ends,LineData,50);
++ translate_date( Ends );
++ }
++ break;
++ case 10: // seller id
++ if (Seller[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Seller,LineData,75);
++ }
++ break;
++ case 11: // high bidder id
++ if (HighBidder[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(HighBidder,LineData,76);
++ HighBidder[75] = '\0';
++ }
++ break;
+
+- default:;
+- }
+- }
+- }
++ //case 12: idx=GetLineOfData(idx,1024,LineData,Buff);
++ // CheckBadChars(LineData,CheckPrice);
++ // strncpy(BidInc,LineData,14);
++ // break;
++
++ case 13: // dutch auction
++ streamBuff.getline(LineData, 1024, '\n');
++ //CheckBadChars(LineData,CheckPrice); // no longer relevant
++ strcpy(HighBidder, "Dutch Auction");
++ break;
++
++ default:;
++ }
++ break;
++ /* End case 0 of auc_type */
+
++ case TYPE_EBAYMOTORSCAR:
++ //printf("LD:%s:%i\n", LineData, strlen(LineData));
++ switch(ReturnBidVarNum(LineData,auc_type)) {
++ case 1: // Current Bid
++ if (CurrentBid==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ if ( strstr(LineData,"reserve not") != NULL )
++ reserveMet = 'n';
++ else if ( strstr(LineData,"reserve met") != NULL )
++ reserveMet = 'y';
++
++ parseprice(LineData,this,FALSE);
++
++ }
++ break;
++
++ case 2: //Time left
++ if (TimeLeft[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(TimeLeft,LineData,50);
++ }
++ break;
++ case 3: //Seller
++ if (Seller[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Seller,LineData,75);
++ }
++ break;
++ case 4: //High bid
++ if (HighBidder[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(HighBidder,LineData,76);
++ HighBidder[75] = '\0';
++ }
++ break;
++ case 5: //Number of bids
++ if (BidCount==0) {
++ char bc[80];
++ streamBuff.getline(LineData, 1024, '\n');
++ for(cnt=0;(((LineData[cnt]!=' ') &&
++ (LineData[cnt]!=0)) && (cnt<14));++cnt)
++ bc[cnt]=LineData[cnt];
++ bc[cnt]=0;
++ BidCount=atoi(bc);
++ }
++ break;
++ case 6: //Location
++ if (Location[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Location,LineData,100);
++ }
++ break;
++ case 7: //Started
++ if (Started[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Started,LineData,50);
++ translate_date( Started );
++ }
++ break;
++ case 8: //Ends
++ if (Ends[0]==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ strncpy(Ends,LineData,50);
++ translate_date( Ends );
++ }
++ break;
++ case 9: //Starts at --same as current bid isn't it?
++ if (CurrentBid==0) {
++ streamBuff.getline(LineData, 1024, '\n');
++ if ( strstr(LineData,"reserve not") != NULL )
++ reserveMet = 'n';
++ else if ( strstr(LineData,"reserve met") != NULL )
++ reserveMet = 'y';
++
++ parseprice(LineData,this,FALSE);
++
++ }
++ break;
++
++ default:;
++ break;
++ /* End case 1 of auc_type */
++ }
++ default:;
++ /* End of switch(auc_type) */
++ }
++ }
++ }
+ // if ( CurrentBid == 0 ) strcpy(CurrentBid, "Error");
+
+ // now calculate the ending time in seconds and save it
+@@ -834,8 +977,11 @@
+ // and assign them to .SellerRate and .BidderRate
+
+ strcpy ( newName, Seller);
++
+ scratch = strtok(newName, " ");
++
+ if ( !scratch ) return FALSE;
++
+ strcpy( Seller, scratch);
+ scratch = strtok(0,")");
+ if ( scratch )
+@@ -853,7 +999,9 @@
+ {
+ strcpy( newName, HighBidder);
+ scratch = strtok(newName, " ");
++
+ if ( !scratch ) return FALSE;
++
+ strcpy(HighBidder, scratch);
+ scratch = strtok(0,")");
+ if ( scratch )
diff --git a/misc/bidwatcher/patches/patch-ad b/misc/bidwatcher/patches/patch-ad
new file mode 100644
index 00000000000..59997a5e813
--- /dev/null
+++ b/misc/bidwatcher/patches/patch-ad
@@ -0,0 +1,12 @@
+$NetBSD: patch-ad,v 1.1 2001/11/21 22:42:04 tron Exp $
+
+--- netstuff.cpp.orig Mon Apr 2 06:38:09 2001
++++ netstuff.cpp Wed Nov 21 23:34:18 2001
+@@ -5,6 +5,7 @@
+ // Tom McNair (tmcnair@cyberhighway.net)
+ // Wayne Schlitt (wayne@midwestcs.com)
+ // Ben Byer (bushing@users.sourceforge.net)
++// Kevin Dwyer (kevin@pheared.net)
+ //
+ // use of this code is restricted to the terms
+ // of the GNU GPL, which should have been included in this