MiniVend 4.00 minivend-4.00
Mike Heins [Sun, 27 Feb 2000 05:00:00 +0000 (00:00 -0500)]
599 files changed:
Copying [deleted file]
INSTALL [deleted file]
LICENSE [new file with mode: 0644]
MANIFEST
Makefile.PL
README
README-win.txt [deleted file]
README.OS [deleted file]
UPGRADE [deleted file]
WHATSNEW [new file with mode: 0644]
configure [changed mode: 0644->0755]
configure.bat [deleted file]
configure.htm [deleted file]
dist/README [deleted file]
dist/README-win.txt [deleted file]
dist/README.OS [deleted file]
dist/WHATSNEW [deleted file]
dist/admin/catalog.cfg [deleted file]
dist/admin/etc/profiles [deleted file]
dist/admin/mv_admin.cfg [deleted file]
dist/admin/pages/cancel.html [deleted file]
dist/admin/pages/failed.html [deleted file]
dist/admin/pages/flypage.html [deleted file]
dist/admin/pages/hintfile.html [deleted file]
dist/admin/pages/include/address_form [deleted file]
dist/admin/pages/include/base_dir_form [deleted file]
dist/admin/pages/include/cat_dir_form [deleted file]
dist/admin/pages/include/catname_form [deleted file]
dist/admin/pages/include/summary [deleted file]
dist/admin/pages/menu.html [deleted file]
dist/admin/pages/reconfig_results.html [deleted file]
dist/admin/pages/seefile.html [deleted file]
dist/admin/pages/special/noproduct.html [deleted file]
dist/admin/pages/special/notfound.html [deleted file]
dist/admin/pages/special/violation.html [deleted file]
dist/admin/products/locale.asc [deleted file]
dist/admin/products/products.asc [deleted file]
dist/admin/products/wizard.asc [deleted file]
dist/admin/subs.cfg [deleted file]
dist/basic/catalog.cfg [new file with mode: 0644]
dist/basic/config/.empty [new file with mode: 0644]
dist/basic/config/additional_fields [new file with mode: 0644]
dist/basic/config/additional_help [new file with mode: 0644]
dist/basic/etc/log_transaction [new file with mode: 0644]
dist/basic/etc/mail_receipt [new file with mode: 0644]
dist/basic/etc/profiles.login [new file with mode: 0644]
dist/basic/etc/profiles.order [new file with mode: 0644]
dist/basic/etc/receipt.html [new file with mode: 0644]
dist/basic/etc/report [new file with mode: 0644]
dist/basic/html/.empty [new file with mode: 0644]
dist/basic/html/index.html [new file with mode: 0644]
dist/basic/images/00-0011.jpg [new file with mode: 0644]
dist/basic/images/00-0011a.png [new file with mode: 0644]
dist/basic/images/00-341.jpg [new file with mode: 0644]
dist/basic/images/00-342.jpg [new file with mode: 0644]
dist/basic/images/00-343.jpg [new file with mode: 0644]
dist/basic/images/19-203.jpg [new file with mode: 0755]
dist/basic/images/19-204.jpg [new file with mode: 0755]
dist/basic/images/21-221.jpg [new file with mode: 0644]
dist/basic/images/34-101.png [new file with mode: 0644]
dist/basic/images/chair_car.jpg [new file with mode: 0644]
dist/basic/images/clear.gif [new file with mode: 0644]
dist/basic/images/golconde.jpg [new file with mode: 0644]
dist/basic/images/illumined_pleasures.jpg [new file with mode: 0644]
dist/basic/images/irises.jpg [new file with mode: 0644]
dist/basic/images/lastsupp.jpg [new file with mode: 0644]
dist/basic/images/logo.png [new file with mode: 0644]
dist/basic/images/loose_hair.jpg [new file with mode: 0644]
dist/basic/images/magnificat.jpg [new file with mode: 0644]
dist/basic/images/my_gems.jpg [new file with mode: 0644]
dist/basic/images/okeefe1.jpg [new file with mode: 0644]
dist/basic/images/okeeffe6.jpg [new file with mode: 0644]
dist/basic/images/paul_harlequin.jpg [new file with mode: 0644]
dist/basic/images/pol1.jpg [new file with mode: 0644]
dist/basic/images/pol2.jpg [new file with mode: 0644]
dist/basic/images/smallamex.png [new file with mode: 0644]
dist/basic/images/smalldisc.png [new file with mode: 0644]
dist/basic/images/smallmc.png [new file with mode: 0644]
dist/basic/images/smallvisa.png [new file with mode: 0644]
dist/basic/images/tshirt.jpg [new file with mode: 0755]
dist/basic/images/two_fridas.jpg [new file with mode: 0644]
dist/basic/images/womanfan.jpg [new file with mode: 0644]
dist/basic/images/young_man.jpg [new file with mode: 0644]
dist/basic/pages/account.html [new file with mode: 0644]
dist/basic/pages/basket.html [new file with mode: 0644]
dist/basic/pages/browse.html [new file with mode: 0644]
dist/basic/pages/canceled.html [new file with mode: 0644]
dist/basic/pages/checkout.html [new file with mode: 0644]
dist/basic/pages/flypage.html [new file with mode: 0644]
dist/basic/pages/index.html [new file with mode: 0644]
dist/basic/pages/login.html [new file with mode: 0644]
dist/basic/pages/logout.html [new file with mode: 0644]
dist/basic/pages/menubar [new file with mode: 0644]
dist/basic/pages/new_account.html [new file with mode: 0644]
dist/basic/pages/privacy.html [new file with mode: 0644]
dist/basic/pages/query/check_orders.html [new file with mode: 0644]
dist/basic/pages/query/order_detail.html [new file with mode: 0644]
dist/basic/pages/results.html [new file with mode: 0644]
dist/basic/pages/srchform.html [new file with mode: 0644]
dist/basic/products/2ndDayAir.csv [new file with mode: 0644]
dist/basic/products/2ndDayAirAM.csv [new file with mode: 0644]
dist/basic/products/3DaySelect.csv [new file with mode: 0644]
dist/basic/products/3DaySelectRes.csv [new file with mode: 0644]
dist/basic/products/450.csv [new file with mode: 0644]
dist/basic/products/Ground.csv [new file with mode: 0644]
dist/basic/products/GroundComm.csv [new file with mode: 0644]
dist/basic/products/GroundRes.csv [new file with mode: 0644]
dist/basic/products/NextDayAir.csv [new file with mode: 0644]
dist/basic/products/NextDayAirSaver.csv [new file with mode: 0644]
dist/basic/products/country.txt [moved from dist/flycat/products/country.asc with 100% similarity]
dist/basic/products/inventory.txt [new file with mode: 0644]
dist/basic/products/minimate.asc [new file with mode: 0644]
dist/basic/products/mv_metadata.asc [new file with mode: 0644]
dist/basic/products/orderline.txt [new file with mode: 0644]
dist/basic/products/products.txt [new file with mode: 0644]
dist/basic/products/salestax.asc [moved from dist/flycat/products/salestax.asc with 100% similarity]
dist/basic/products/shipping.asc [new file with mode: 0644]
dist/basic/products/shipping.txt [new file with mode: 0644]
dist/basic/products/transactions.txt [new file with mode: 0644]
dist/basic/products/ups_zone.asc [new file with mode: 0644]
dist/basic/products/userdb.txt [new file with mode: 0644]
dist/basic/session/.empty [new file with mode: 0644]
dist/basic/special_pages/badsearch.html [new file with mode: 0644]
dist/basic/special_pages/canceled.html [new file with mode: 0644]
dist/basic/special_pages/cc_not_valid.html [new file with mode: 0644]
dist/basic/special_pages/confirmation.html [new file with mode: 0644]
dist/basic/special_pages/failed.html [new file with mode: 0644]
dist/basic/special_pages/interact.html [new file with mode: 0644]
dist/basic/special_pages/missing.html [new file with mode: 0644]
dist/basic/special_pages/needfield.html [new file with mode: 0644]
dist/basic/special_pages/nomatch.html [new file with mode: 0644]
dist/basic/special_pages/noproduct.html [new file with mode: 0644]
dist/basic/special_pages/notfound.html [new file with mode: 0644]
dist/basic/special_pages/order_security.html [new file with mode: 0644]
dist/basic/special_pages/reconfig.html [new file with mode: 0644]
dist/basic/special_pages/sec_faq.html [copied from dist/simple/pages/special/sec_faq.html with 100% similarity]
dist/basic/special_pages/security.html [new file with mode: 0644]
dist/basic/special_pages/violation.html [new file with mode: 0644]
dist/basic/tmp/.empty [new file with mode: 0644]
dist/basic/upload/.empty [new file with mode: 0644]
dist/bin/buildtree [deleted file]
dist/bin/check [deleted file]
dist/bin/dump [deleted file]
dist/bin/expire [deleted file]
dist/bin/expireall [deleted file]
dist/bin/htpasswd.pl [deleted file]
dist/bin/localize [deleted file]
dist/bin/makecat [deleted file]
dist/bin/minivend [deleted file]
dist/bin/offline [deleted file]
dist/bin/reconfig [deleted file]
dist/bin/restart [deleted file]
dist/bin/restart_inet [deleted file]
dist/bin/restart_unix [deleted file]
dist/bin/start [deleted file]
dist/bin/start_inet [deleted file]
dist/bin/start_unix [deleted file]
dist/bin/stop [deleted file]
dist/bin/update [deleted file]
dist/compat/body [new file with mode: 0644]
dist/compat/buttonbar [new file with mode: 0644]
dist/compat/form_mail.cfg [new file with mode: 0644]
dist/compat/help [new file with mode: 0644]
dist/compat/random_rotate [new file with mode: 0644]
dist/configure [deleted file]
dist/configure.pl [deleted file]
dist/error.log
dist/etc/.empty [new file with mode: 0644]
dist/etc/mvconf.cmt [deleted file]
dist/etc/non_root_files [deleted file]
dist/flycat.cfg [deleted file]
dist/flycat/README.flycat [deleted file]
dist/flycat/catalog.cfg [deleted file]
dist/flycat/config/additional_fields [deleted file]
dist/flycat/etc/order.number [deleted file]
dist/flycat/etc/receipt.html [deleted file]
dist/flycat/etc/report [deleted file]
dist/flycat/etc/vendor.number [deleted file]
dist/flycat/html/index.html [deleted file]
dist/flycat/images/00-0011.jpg [deleted file]
dist/flycat/images/artsmall.gif [deleted file]
dist/flycat/images/artstore.gif [deleted file]
dist/flycat/images/bg.gif [deleted file]
dist/flycat/images/ordernow.gif [deleted file]
dist/flycat/images/redball.gif [deleted file]
dist/flycat/images/smallamex.gif [deleted file]
dist/flycat/images/smalldisc.gif [deleted file]
dist/flycat/images/smallmc.gif [deleted file]
dist/flycat/images/smallvisa.gif [deleted file]
dist/flycat/images/tshirt.jpg [deleted file]
dist/flycat/orders/test/order.number [deleted file]
dist/flycat/pages/canceled.html [deleted file]
dist/flycat/pages/cartcfg/buttonbar [deleted file]
dist/flycat/pages/cartcfg/editcart.html [deleted file]
dist/flycat/pages/cartcfg/enable_edit.html [deleted file]
dist/flycat/pages/cartcfg/export_userdb.html [deleted file]
dist/flycat/pages/cartcfg/export_vendor.html [deleted file]
dist/flycat/pages/cartcfg/master_edit.form [deleted file]
dist/flycat/pages/cartcfg/master_edit.html [deleted file]
dist/flycat/pages/cartcfg/newcart.html [deleted file]
dist/flycat/pages/export.html [deleted file]
dist/flycat/pages/help.html [deleted file]
dist/flycat/pages/new_account.html [deleted file]
dist/flycat/pages/oops.html [deleted file]
dist/flycat/pages/ord/basket.html [deleted file]
dist/flycat/pages/ord/checkout.html [deleted file]
dist/flycat/pages/query/check_orders.html [deleted file]
dist/flycat/pages/redirect.html [deleted file]
dist/flycat/pages/special/badsearch.html [deleted file]
dist/flycat/pages/special/canceled.html [deleted file]
dist/flycat/pages/special/enroll_failed.html [deleted file]
dist/flycat/pages/special/enroll_thankyou.html [deleted file]
dist/flycat/pages/special/failed.html [deleted file]
dist/flycat/pages/special/interact.html [deleted file]
dist/flycat/pages/special/missing.html [deleted file]
dist/flycat/pages/special/needfield.html [deleted file]
dist/flycat/pages/special/nomatch.html [deleted file]
dist/flycat/pages/special/noproduct.html [deleted file]
dist/flycat/pages/special/notfound.html [deleted file]
dist/flycat/pages/special/reconfig.html [deleted file]
dist/flycat/pages/special/sec_faq.html [deleted file]
dist/flycat/pages/special/security.html [deleted file]
dist/flycat/pages/special/violation.html [deleted file]
dist/flycat/products/locale.asc [deleted file]
dist/flycat/products/products.txt [deleted file]
dist/flycat/products/shipping.asc [deleted file]
dist/flycat/products/transactions.raw [deleted file]
dist/flycat/products/transactions.txt [deleted file]
dist/flycat/products/userdb.asc [deleted file]
dist/flycat/products/vendor.txt [deleted file]
dist/form_mail.cfg [deleted file]
dist/manifest [deleted file]
dist/minivend.cfg.dist
dist/simple/catalog.cfg
dist/simple/config/.empty
dist/simple/config/additional_fields
dist/simple/config/additional_help
dist/simple/config/blue1/copyright [moved from dist/admin/session/.empty with 100% similarity]
dist/simple/config/blue1/leftside [new file with mode: 0644]
dist/simple/config/blue1/logobar [new file with mode: 0644]
dist/simple/config/blue1/menubar [moved from dist/flycat/etc/session.lock with 100% similarity]
dist/simple/config/blue1/menubottom [new file with mode: 0644]
dist/simple/config/blue1/no_right [copied from dist/simple/pages/no_right with 100% similarity]
dist/simple/config/blue1/only_logo [new file with mode: 0644]
dist/simple/config/blue1/rightside [copied from dist/simple/pages/no_right with 100% similarity]
dist/simple/config/brown1/copyright [moved from dist/flycat/pages/cartcfg/.access with 100% similarity]
dist/simple/config/brown1/leftside [new file with mode: 0644]
dist/simple/config/brown1/logobar [new file with mode: 0644]
dist/simple/config/brown1/menubar [moved from dist/flycat/session/.empty with 100% similarity]
dist/simple/config/brown1/menubottom [new file with mode: 0644]
dist/simple/config/brown1/no_right [copied from dist/simple/pages/no_right with 100% similarity]
dist/simple/config/brown1/only_logo [new file with mode: 0644]
dist/simple/config/brown1/rightside [copied from dist/simple/pages/no_right with 100% similarity]
dist/simple/config/precopy_commands [new file with mode: 0644]
dist/simple/config/yellow1/copyright [moved from dist/flycat/tmp/.empty with 100% similarity]
dist/simple/config/yellow1/leftside [new file with mode: 0644]
dist/simple/config/yellow1/logobar [new file with mode: 0644]
dist/simple/config/yellow1/menubar [moved from dist/simple/pages/query/.access with 100% similarity]
dist/simple/config/yellow1/menubottom [new file with mode: 0644]
dist/simple/config/yellow1/no_right [copied from dist/simple/pages/no_right with 100% similarity]
dist/simple/config/yellow1/only_logo [new file with mode: 0644]
dist/simple/config/yellow1/rightside [moved from dist/simple/pages/no_right with 100% similarity]
dist/simple/etc/log_transaction [new file with mode: 0644]
dist/simple/etc/mail_receipt [new file with mode: 0644]
dist/simple/etc/order.profiles [deleted file]
dist/simple/etc/profiles.login [new file with mode: 0644]
dist/simple/etc/profiles.order [new file with mode: 0644]
dist/simple/etc/receipt.html
dist/simple/etc/report
dist/simple/etc/search.profiles [deleted file]
dist/simple/html/.empty [new file with mode: 0644]
dist/simple/html/index.html
dist/simple/images/00-0011.jpg [deleted file]
dist/simple/images/00-0011a.gif [deleted file]
dist/simple/images/00-341.jpg [deleted file]
dist/simple/images/00-342.jpg [deleted file]
dist/simple/images/00-343.jpg [deleted file]
dist/simple/images/19-203.jpg [deleted file]
dist/simple/images/19-204.jpg [deleted file]
dist/simple/images/21-221.jpg [deleted file]
dist/simple/images/34-101.gif [deleted file]
dist/simple/images/artsmall.gif [deleted file]
dist/simple/images/artstore.gif [deleted file]
dist/simple/images/bg.gif [deleted file]
dist/simple/images/blue1/cart.png [new file with mode: 0644]
dist/simple/images/blue1/go.png [new file with mode: 0644]
dist/simple/images/blue1/logo.png [new file with mode: 0644]
dist/simple/images/blue1/menu.png [new file with mode: 0644]
dist/simple/images/blue1/submit.png [new file with mode: 0644]
dist/simple/images/blue_pap.gif [deleted file]
dist/simple/images/brown1/cart.png [new file with mode: 0644]
dist/simple/images/brown1/go.png [new file with mode: 0644]
dist/simple/images/brown1/logo.png [new file with mode: 0644]
dist/simple/images/brown1/menu.png [new file with mode: 0644]
dist/simple/images/brown1/submit.png [new file with mode: 0644]
dist/simple/images/clear.gif [new file with mode: 0644]
dist/simple/images/coolad1.gif [deleted file]
dist/simple/images/coolbits.gif [deleted file]
dist/simple/images/download.gif [deleted file]
dist/simple/images/download.png [new file with mode: 0644]
dist/simple/images/items/00-0011.jpg [new file with mode: 0644]
dist/simple/images/items/00-0011a.png [new file with mode: 0644]
dist/simple/images/items/00-341.jpg [new file with mode: 0644]
dist/simple/images/items/00-342.jpg [new file with mode: 0644]
dist/simple/images/items/00-343.jpg [new file with mode: 0644]
dist/simple/images/items/19-203.jpg [new file with mode: 0755]
dist/simple/images/items/19-204.jpg [new file with mode: 0755]
dist/simple/images/items/21-221.jpg [new file with mode: 0644]
dist/simple/images/items/34-101.png [new file with mode: 0644]
dist/simple/images/items/chair_car.jpg [new file with mode: 0644]
dist/simple/images/items/golconde.jpg [new file with mode: 0644]
dist/simple/images/items/illumined_pleasures.jpg [new file with mode: 0644]
dist/simple/images/items/irises.jpg [new file with mode: 0644]
dist/simple/images/items/lastsupp.jpg [new file with mode: 0644]
dist/simple/images/items/loose_hair.jpg [new file with mode: 0644]
dist/simple/images/items/magnificat.jpg [new file with mode: 0644]
dist/simple/images/items/my_gems.jpg [new file with mode: 0644]
dist/simple/images/items/okeefe1.jpg [new file with mode: 0644]
dist/simple/images/items/okeeffe6.jpg [new file with mode: 0644]
dist/simple/images/items/paul_harlequin.jpg [new file with mode: 0644]
dist/simple/images/items/pol1.jpg [new file with mode: 0644]
dist/simple/images/items/pol2.jpg [new file with mode: 0644]
dist/simple/images/items/tshirt.jpg [new file with mode: 0755]
dist/simple/images/items/two_fridas.jpg [new file with mode: 0644]
dist/simple/images/items/womanfan.jpg [new file with mode: 0644]
dist/simple/images/items/young_man.jpg [new file with mode: 0644]
dist/simple/images/mini.gif [deleted file]
dist/simple/images/mvlogo.gif [deleted file]
dist/simple/images/mvlogo.png [new file with mode: 0644]
dist/simple/images/mvlogo_dark.gif [deleted file]
dist/simple/images/mvlogo_dark.png [new file with mode: 0644]
dist/simple/images/new.gif [deleted file]
dist/simple/images/new.png [new file with mode: 0644]
dist/simple/images/perl_id_313c.gif [deleted file]
dist/simple/images/perl_id_313c.png [new file with mode: 0644]
dist/simple/images/redball.gif [deleted file]
dist/simple/images/smallamex.gif [deleted file]
dist/simple/images/smallamex.png [new file with mode: 0644]
dist/simple/images/smalldisc.gif [deleted file]
dist/simple/images/smalldisc.png [new file with mode: 0644]
dist/simple/images/smallmc.gif [deleted file]
dist/simple/images/smallmc.png [new file with mode: 0644]
dist/simple/images/smallvisa.gif [deleted file]
dist/simple/images/smallvisa.png [new file with mode: 0644]
dist/simple/images/staircase.jpg [deleted file]
dist/simple/images/tshirt.jpg [deleted file]
dist/simple/images/web_srch.gif [deleted file]
dist/simple/images/yellow1/cart.png [new file with mode: 0644]
dist/simple/images/yellow1/go.png [new file with mode: 0644]
dist/simple/images/yellow1/logo.png [new file with mode: 0644]
dist/simple/images/yellow1/menu.png [new file with mode: 0644]
dist/simple/images/yellow1/submit.png [new file with mode: 0644]
dist/simple/mysql/area.mysql [new file with mode: 0644]
dist/simple/mysql/cat.mysql [new file with mode: 0644]
dist/simple/mysql/country.mysql [new file with mode: 0644]
dist/simple/mysql/inventory.mysql [new file with mode: 0644]
dist/simple/mysql/orderline.mysql [new file with mode: 0644]
dist/simple/mysql/pricing.mysql [new file with mode: 0644]
dist/simple/mysql/products.mysql [new file with mode: 0644]
dist/simple/mysql/shipping.mysql [new file with mode: 0644]
dist/simple/mysql/transactions.mysql [new file with mode: 0644]
dist/simple/mysql/userdb.mysql [new file with mode: 0644]
dist/simple/orders/.empty [new file with mode: 0644]
dist/simple/pages/about.html
dist/simple/pages/account.html [new file with mode: 0644]
dist/simple/pages/action/get_password.html [new file with mode: 0644]
dist/simple/pages/browse.html
dist/simple/pages/browse1.html
dist/simple/pages/canceled.html
dist/simple/pages/copyright [deleted file]
dist/simple/pages/deliver.html [new file with mode: 0644]
dist/simple/pages/examples/test_banner.html [new file with mode: 0644]
dist/simple/pages/feedback.html
dist/simple/pages/flypage.html
dist/simple/pages/frames.html [deleted file]
dist/simple/pages/frames/bottom.html [deleted file]
dist/simple/pages/frames/left.html [deleted file]
dist/simple/pages/frames/top.html [deleted file]
dist/simple/pages/help/sec_faq.html [deleted file]
dist/simple/pages/help/security.html [deleted file]
dist/simple/pages/index.html
dist/simple/pages/leftside [deleted file]
dist/simple/pages/login.html [new file with mode: 0644]
dist/simple/pages/logobar [deleted file]
dist/simple/pages/logout.html [new file with mode: 0644]
dist/simple/pages/menubar [deleted file]
dist/simple/pages/menubottom [deleted file]
dist/simple/pages/multi/b_address.html [new file with mode: 0644]
dist/simple/pages/multi/basket.html [new file with mode: 0644]
dist/simple/pages/multi/checkout.html [new file with mode: 0644]
dist/simple/pages/multi/final.html [new file with mode: 0644]
dist/simple/pages/multi/nobasket.html [new file with mode: 0644]
dist/simple/pages/multi/shipping.html [new file with mode: 0644]
dist/simple/pages/mvasp.html [deleted file]
dist/simple/pages/new_account.html
dist/simple/pages/news.html
dist/simple/pages/no_cookie.html [new file with mode: 0644]
dist/simple/pages/noframes.html [deleted file]
dist/simple/pages/ord/basket.html
dist/simple/pages/ord/checkout.html
dist/simple/pages/privacy.html
dist/simple/pages/quantity.html
dist/simple/pages/query/check_orders.html
dist/simple/pages/query/order_detail.html [new file with mode: 0644]
dist/simple/pages/rand1.html [deleted file]
dist/simple/pages/rand2.html [deleted file]
dist/simple/pages/rand3.html [deleted file]
dist/simple/pages/rand4.html [deleted file]
dist/simple/pages/rand5.html [deleted file]
dist/simple/pages/reconfig/.access_gate
dist/simple/pages/reconfig/do_upload.html
dist/simple/pages/reconfig/reconfig.html
dist/simple/pages/reconfig/upload.html
dist/simple/pages/results.html
dist/simple/pages/rightside [deleted file]
dist/simple/pages/rotate1.html [deleted file]
dist/simple/pages/rotate2.html [deleted file]
dist/simple/pages/rotate3.html [deleted file]
dist/simple/pages/rotate4.html [deleted file]
dist/simple/pages/special/badsearch.html [deleted file]
dist/simple/pages/special/canceled.html [deleted file]
dist/simple/pages/special/cc_not_valid.html [deleted file]
dist/simple/pages/special/confirmation.html [deleted file]
dist/simple/pages/special/failed.html [deleted file]
dist/simple/pages/special/feedback.html
dist/simple/pages/special/interact.html [deleted file]
dist/simple/pages/special/missing.html [deleted file]
dist/simple/pages/special/needfield.html
dist/simple/pages/special/nomatch.html [deleted file]
dist/simple/pages/special/noproduct.html [deleted file]
dist/simple/pages/special/notfound.html [deleted file]
dist/simple/pages/special/order_security.html [deleted file]
dist/simple/pages/special/reconfig.html [deleted file]
dist/simple/pages/special/security.html [deleted file]
dist/simple/pages/special/violation.html [deleted file]
dist/simple/pages/splash.html [new file with mode: 0644]
dist/simple/pages/srchform.html
dist/simple/pages/view_page.html
dist/simple/pgsql/area.pgsql [new file with mode: 0644]
dist/simple/pgsql/cat.pgsql [new file with mode: 0644]
dist/simple/pgsql/country.pgsql [new file with mode: 0644]
dist/simple/pgsql/inventory.pgsql [new file with mode: 0644]
dist/simple/pgsql/orderline.pgsql [new file with mode: 0644]
dist/simple/pgsql/pricing.pgsql [new file with mode: 0644]
dist/simple/pgsql/products.pgsql [new file with mode: 0644]
dist/simple/pgsql/shipping.pgsql [new file with mode: 0644]
dist/simple/pgsql/transactions.pgsql [new file with mode: 0644]
dist/simple/pgsql/userdb.pgsql [new file with mode: 0644]
dist/simple/products/2ndDayAir.csv
dist/simple/products/2ndDayAirAM.csv
dist/simple/products/3DaySelect.csv
dist/simple/products/3DaySelectRes.csv [new file with mode: 0644]
dist/simple/products/Ground.csv
dist/simple/products/GroundComm.csv
dist/simple/products/GroundRes.csv
dist/simple/products/NextDayAir.csv
dist/simple/products/NextDayAirSaver.csv
dist/simple/products/accessories.asc [deleted file]
dist/simple/products/area.txt [new file with mode: 0644]
dist/simple/products/banner.txt [new file with mode: 0644]
dist/simple/products/cat.txt [new file with mode: 0644]
dist/simple/products/country.txt [moved from dist/simple/products/country.asc with 100% similarity]
dist/simple/products/inventory.asc [deleted file]
dist/simple/products/inventory.txt [new file with mode: 0644]
dist/simple/products/locale.asc [deleted file]
dist/simple/products/locale.txt [new file with mode: 0644]
dist/simple/products/minimate.asc [new file with mode: 0644]
dist/simple/products/mv_metadata.asc [new file with mode: 0644]
dist/simple/products/orderline.txt [new file with mode: 0644]
dist/simple/products/pricing.asc [deleted file]
dist/simple/products/pricing.txt [new file with mode: 0644]
dist/simple/products/products.asc [deleted file]
dist/simple/products/products.txt [new file with mode: 0644]
dist/simple/products/shipping.asc
dist/simple/products/shipping.txt [new file with mode: 0644]
dist/simple/products/transactions.raw [deleted file]
dist/simple/products/transactions.txt
dist/simple/products/userdb.asc [deleted file]
dist/simple/products/userdb.txt [new file with mode: 0644]
dist/simple/reconfig [deleted file]
dist/simple/report_problem [deleted file]
dist/simple/session/.empty
dist/simple/special_pages/badsearch.html [new file with mode: 0644]
dist/simple/special_pages/canceled.html [new file with mode: 0644]
dist/simple/special_pages/cc_not_valid.html [new file with mode: 0644]
dist/simple/special_pages/confirmation.html [new file with mode: 0644]
dist/simple/special_pages/failed.html [new file with mode: 0644]
dist/simple/special_pages/interact.html [new file with mode: 0644]
dist/simple/special_pages/missing.html [new file with mode: 0644]
dist/simple/special_pages/needfield.html [new file with mode: 0644]
dist/simple/special_pages/nomatch.html [new file with mode: 0644]
dist/simple/special_pages/noproduct.html [new file with mode: 0644]
dist/simple/special_pages/notfound.html [new file with mode: 0644]
dist/simple/special_pages/order_security.html [new file with mode: 0644]
dist/simple/special_pages/reconfig.html [new file with mode: 0644]
dist/simple/special_pages/sec_faq.html [moved from dist/simple/pages/special/sec_faq.html with 100% similarity]
dist/simple/special_pages/security.html [new file with mode: 0644]
dist/simple/special_pages/violation.html [new file with mode: 0644]
dist/simple/tmp/.empty [new file with mode: 0644]
dist/simple/tmp/SearchCache/.empty [deleted file]
dist/simple/upload/.empty [new file with mode: 0644]
dist/src/compile.pl [changed mode: 0644->0755]
dist/src/config.h.in
dist/src/configure [changed mode: 0644->0755]
dist/src/configure.in [deleted file]
dist/src/mvctl.c
dist/src/testcgi [changed mode: 0644->0755]
dist/src/tlink.c
dist/src/tlink.pl [changed mode: 0644->0755]
dist/src/vlink.c
dist/src/vlink.pl [changed mode: 0644->0755]
dist/usertag/db_count [deleted file]
dist/usertag/db_date
dist/usertag/email
dist/usertag/email_raw [new file with mode: 0644]
dist/usertag/rand [new file with mode: 0644]
dist/usertag/reconfig [new file with mode: 0644]
dist/usertag/reconfig_time [new file with mode: 0644]
dist/usertag/reconfig_wait [new file with mode: 0644]
dist/usertag/summary
dist/usertag/title_bar [new file with mode: 0644]
doc/bullet.gif [deleted file]
doc/frtoc.html [deleted file]
doc/intro.html [deleted file]
doc/minivend.html [deleted file]
doc/nav.html [deleted file]
doc/toc.html [deleted file]
eg/check [new file with mode: 0755]
eg/checkstat.sh [moved from dist/bin/checkstat.sh with 100% similarity]
eg/compact [moved from dist/bin/compact with 100% similarity, mode: 0755]
eg/ifdef [moved from dist/bin/ifdef with 100% similarity, mode: 0755]
extra/Business/UPS.pm
extra/File/CounterFile.pm
extra/File/Spec/Unix.pm
extra/HTML/Entities.pm
extra/URI/URL.pm
lib/Vend/Cart.pm
lib/Vend/Config.pm
lib/Vend/Control.pm [new file with mode: 0644]
lib/Vend/Data.pm
lib/Vend/DbSearch.pm
lib/Vend/Document.pm [new file with mode: 0644]
lib/Vend/ECML.pm
lib/Vend/Error.pm [new file with mode: 0644]
lib/Vend/External.pm [new file with mode: 0644]
lib/Vend/FlyCat.pm [deleted file]
lib/Vend/Glimpse.pm
lib/Vend/Http.pm [deleted file]
lib/Vend/Imagemap.pm
lib/Vend/Interpolate.pm
lib/Vend/MakeCat.pm
lib/Vend/Misc/Static.pm [new file with mode: 0644]
lib/Vend/Order.pm
lib/Vend/Page.pm [new file with mode: 0644]
lib/Vend/PageBuild.pm [deleted file]
lib/Vend/Parse.pm
lib/Vend/Parser.pm
lib/Vend/Scan.pm
lib/Vend/Search.pm
lib/Vend/Server.pm
lib/Vend/Session.pm
lib/Vend/SessionDB.pm
lib/Vend/SessionFile.pm
lib/Vend/Table/Common.pm [new file with mode: 0644]
lib/Vend/Table/DBI.pm
lib/Vend/Table/DB_File.pm
lib/Vend/Table/DummyDB.pm [deleted file]
lib/Vend/Table/GDBM.pm
lib/Vend/Table/Import.pm [deleted file]
lib/Vend/Table/InMemory.pm
lib/Vend/Table/Quoted.pm [deleted file]
lib/Vend/Table/Update.pm [deleted file]
lib/Vend/Tagref.pm
lib/Vend/Tags.pm [new file with mode: 0644]
lib/Vend/TextSearch.pm
lib/Vend/UserDB.pm
lib/Vend/Util.pm
lib/Vend/ValidCC.pm [deleted file]
lib/perllocal.pod [new file with mode: 0644]
mvlogo.gif [deleted file]
pod/mvdocs.pod [new file with mode: 0644]
pod/mvfaq.pod [new file with mode: 0644]
scripts/compile_link.PL [new file with mode: 0644]
scripts/config_prog.PL [new file with mode: 0644]
scripts/configdump.PL [new file with mode: 0644]
scripts/dump.PL [new file with mode: 0644]
scripts/expire.PL [new file with mode: 0644]
scripts/expireall.PL [new file with mode: 0644]
scripts/localize.PL [new file with mode: 0644]
scripts/makecat.PL [new file with mode: 0644]
scripts/minivend.PL [new file with mode: 0644]
scripts/offline.PL [new file with mode: 0644]
scripts/restart.PL [new file with mode: 0644]
scripts/update.PL [new file with mode: 0644]
test.pl
win/POSIX.pm [deleted file]
win/minivend.pif [changed mode: 0644->0755]
win/setup.bat [moved from dist/simple/tmp/PageCache/.empty with 100% similarity]
win/tlink.exe [moved from dist/bin/tlink.exe with 100% similarity, mode: 0755]

diff --git a/Copying b/Copying
deleted file mode 100644 (file)
index d5e7ba5..0000000
--- a/Copying
+++ /dev/null
@@ -1,340 +0,0 @@
-
-            GNU GENERAL PUBLIC LICENSE
-               Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-            GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-             END OF TERMS AND CONDITIONS
-\f
-        How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644 (file)
index 9e60a31..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,188 +0,0 @@
--------------------------------------------------------------
-
-                      I N S T A L L A T I O N
-
-IMPORTANT NOTE: The installation procedure has changed, we hope for the
-                better. Please read this even if you have installed
-                MiniVend before.
-
-We IMPLORE you to read all of the verbiage below.  We know how most
-of us are, so we put the install procedure up here, but if you have
-problems please read all of this file, PLUS the MiniVend documentation
-in doc/minivend.html.  Also, please check out the official MiniVend
-FAQ at http://www.minivend.com/minivend/faq/ before you call for help.
-And send your system, Perl, and Minivend information, VERSIONS AND ALL!
-
-IMPORTANT NOTE: The installation procedure has changed, we hope for the
-                better. If you don't give evidence of having read and
-                heeded the above heartfelt plea, your email
-                may well be ignored.  Caveat Emptor.
-
-
-WINDOWS INSTALLATION
---------------------
-
-    Obtain the self-extracting executable minivend-3.15.exe
-    and double-click on it.
-
-    IMPORTANT NOTE: If you get the message "Bad command or file name"
-    when trying to install, then that means that Perl is not installed
-    on your machine or is not in your path.  Go to http://www.perl.com
-    and install the *standard* 5.004 version (AKA the Gurusamy Sarathy
-    port). MiniVend will not work with the ActiveState 5.003 port; it
-    appears to work well with the ActiveState 5.005 "Merge" port.
-    
-    If you already have the CYGWIN.DLL executable or plan on using the
-    Perl link CGI, you can download the file minivend-3.15-nodll.exe
-    and do the same.
-
-    The defaults are set for Microsoft Personal Web Server on Win95 --
-    if you use another HTTP server you will have to know where to
-    place CGI executables (the CGI-BIN) and HTML documents (DocumentRoot).
-
-    If the program does not find BLAT, you can just enter 'none' when
-    asked for SendMailProgram -- that will place all orders in the
-    CATALOG_DIR/etc/tracking.asc and CATALOG_DIR/error.log as the
-    demo is configured.
-
-    You should get PGP as soon as possible so that you might have
-    secure credit card number storage.
-
-    Some features are untested in the Windows version, and it 
-    can be considered a beta.
-
-    If you have installed the MIME::Base64 and URI::URL (from libwww)
-    modules, then there is a new interface that is available for
-    a GUI-like catalog configuration. It should run automatically
-       upon a new installation.
-
-UNIX INSTALLATION
-------------------
-Here is the short version:
-
-    gzip -dc minivend-3.15.tar.gz | tar xvf -
-    cd minivend-3.15
-    ./configure
-
-Long version with comments:
-
-    # Unzip and untar the file -- if you have GNU tar, you can substitute
-    # 'tar xzf minivend-3.15.tar.gz'
-    gzip -dc minivend-3.15.tar.gz | tar xvf -
-
-    # Change directory to the one that was created 
-    #
-    cd minivend-3.15
-
-    # If you have trouble with picking up the wrong Perl version,
-    # try  '/dir/where/perl/is/perl Makefile.PL
-    #
-    # If you aren't already the user ID of the user who will run the
-    # minivend server, you might want to 'su' to that user before
-    # running this step.
-    #
-    # This step will set the MiniVend directory and Perl location,
-    # and build the Makefile.
-    #
-    # If you are upgrading from a previous version, put the 
-    # former MiniVend root directory in when prompted for
-    # VendRoot.
-    #
-    perl Makefile.PL
-
-    # Make the library modules and docs
-    make
-
-    # Run a rudimentary test to ensure the server and sockets
-    # run on your system
-    make test
-
-    # Install the files and compile the link programs
-    #
-    make install
-
-    ####
-
-       At this point, you can follow the instructions that
-       the configure program generates.  If you installed
-       MiniVend in another directory besides the current one,
-       you will have to change directories to that directory
-       before continuing.
-
-    ####
-
-    # Become superuser if you are an ISP or other organization that
-    # will be running multiple catalogs. If you don't have root access,
-    # don't worry about it.
-    #
-
-    # Make the demo catalog. You will be prompted for some initial
-    # server-wide parameters, then the catalog-specific parameters.
-    #
-    bin/makecat simple
-
-    # Start the MiniVend server
-    #
-    bin/start
-
-The new catalog installer is at:
-
-    http://the.configured.host:7786/mv_admin
-
-NOTE:   The MiniVend server must be running to use the installer.
-        We attempt to make this automatic on Windows. 8-)
-
-That should be it.  If you have problems, please do what is asked above,
-and pretty please reference the web site. And
-
-    -- WHEN IN DOUBT, RE-START THE SERVER.  It won't take but a few
-       seconds, and changes in configurable options don't take effect
-       until it is done. You may even change a page and not see the
-       effect until the server is restarted.
-
-
-------------------------------------------------------------------
-
-                     S E T T I N G   U P
-                   Y O U R   C A T A L O G
-
-Setting up a MiniVend catalog can be quite complex, and that
-is why the documentation and demo were provided.  They should
-be sufficient to get you started. Many hours have been spent
-in documenting the features of MiniVend, and thoughtful users
-should almost always find their answers there.
-
-Key things that people sometimes don't understand:
-
-    -- The actual pages of the catalog are NOT in HTML document
-       space.  They are in the catalog directory of the catalog
-       that is in question.
-
-    -- When using the NEW page syntax, the default in this version,
-       tags are interpreted in the order they appear on the page.
-
-    -- It is strongly recommended that you move to the new syntax,
-       as MiniVend 4.0 will be removing many of the old tags. If you
-       have pages that will be too much trouble to move, use
-       [compat][/compat] for now, but even that will go away.
-
-    -- The first thing to do in setting up a custom MiniVend catalog
-       is to define the database.  Everything with MiniVend stems
-       from the products database -- many of the custom features
-       depend on the shipping, salestax, accessories, pricing,
-       and other databases.  Determine your data set first.
-
-    -- The demo pages are there to be played with.  With MiniVend
-       3.0, you can't stop the system simply by changing a page.
-
-    -- Many of the configurable features of MiniVend are determined
-       by the directives in catalog.cfg (or minivend.cfg in a standalone
-       catalog).
-
-    -- You don't need to do anything to pass variables from page to page.
-       If you set it, MiniVend will remember it in the user session.
-
-    -- WHEN IN DOUBT, RE-CONFIGURE THE CATALOG.  It won't take but a few
-       seconds, and changes to many of the configurable options don't
-       take effect until it is done.
-
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..60549be
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
index bd580c9..8c30c2c 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
-Copying
-INSTALL
+LICENSE
 MANIFEST
 Makefile.PL
 README
-README-win.txt
-README.OS
-UPGRADE
 WHATSNEW
 configure
-configure.bat
-configure.htm
-dist/README
-dist/README-win.txt
-dist/README.OS
-dist/WHATSNEW
-dist/admin/catalog.cfg
-dist/admin/etc/profiles
-dist/admin/mv_admin.cfg
-dist/admin/pages/cancel.html
-dist/admin/pages/failed.html
-dist/admin/pages/flypage.html
-dist/admin/pages/hintfile.html
-dist/admin/pages/include/address_form
-dist/admin/pages/include/base_dir_form
-dist/admin/pages/include/cat_dir_form
-dist/admin/pages/include/catname_form
-dist/admin/pages/include/summary
-dist/admin/pages/menu.html
-dist/admin/pages/reconfig_results.html
-dist/admin/pages/seefile.html
-dist/admin/pages/special/noproduct.html
-dist/admin/pages/special/notfound.html
-dist/admin/pages/special/violation.html
-dist/admin/products/locale.asc
-dist/admin/products/products.asc
-dist/admin/products/wizard.asc
-dist/admin/session/.empty
-dist/admin/subs.cfg
-dist/bin/buildtree
-dist/bin/check
-dist/bin/checkstat.sh
-dist/bin/compact
-dist/bin/dump
-dist/bin/expire
-dist/bin/expireall
-dist/bin/htpasswd.pl
-dist/bin/ifdef
-dist/bin/localize
-dist/bin/makecat
-dist/bin/minivend
-dist/bin/offline
-dist/bin/reconfig
-dist/bin/restart
-dist/bin/restart_inet
-dist/bin/restart_unix
-dist/bin/start
-dist/bin/start_inet
-dist/bin/start_unix
-dist/bin/stop
-dist/bin/tlink.exe
-dist/bin/update
-dist/configure
-dist/configure.pl
+dist/basic/catalog.cfg
+dist/basic/config/.empty
+dist/basic/config/additional_fields
+dist/basic/config/additional_help
+dist/basic/etc/log_transaction
+dist/basic/etc/mail_receipt
+dist/basic/etc/profiles.login
+dist/basic/etc/profiles.order
+dist/basic/etc/receipt.html
+dist/basic/etc/report
+dist/basic/html/.empty
+dist/basic/html/index.html
+dist/basic/images/00-0011.jpg
+dist/basic/images/00-0011a.png
+dist/basic/images/00-341.jpg
+dist/basic/images/00-342.jpg
+dist/basic/images/00-343.jpg
+dist/basic/images/19-203.jpg
+dist/basic/images/19-204.jpg
+dist/basic/images/21-221.jpg
+dist/basic/images/34-101.png
+dist/basic/images/chair_car.jpg
+dist/basic/images/clear.gif
+dist/basic/images/golconde.jpg
+dist/basic/images/illumined_pleasures.jpg
+dist/basic/images/irises.jpg
+dist/basic/images/lastsupp.jpg
+dist/basic/images/logo.png
+dist/basic/images/loose_hair.jpg
+dist/basic/images/magnificat.jpg
+dist/basic/images/my_gems.jpg
+dist/basic/images/okeefe1.jpg
+dist/basic/images/okeeffe6.jpg
+dist/basic/images/paul_harlequin.jpg
+dist/basic/images/pol1.jpg
+dist/basic/images/pol2.jpg
+dist/basic/images/smallamex.png
+dist/basic/images/smalldisc.png
+dist/basic/images/smallmc.png
+dist/basic/images/smallvisa.png
+dist/basic/images/tshirt.jpg
+dist/basic/images/two_fridas.jpg
+dist/basic/images/womanfan.jpg
+dist/basic/images/young_man.jpg
+dist/basic/pages/account.html
+dist/basic/pages/basket.html
+dist/basic/pages/browse.html
+dist/basic/pages/canceled.html
+dist/basic/pages/checkout.html
+dist/basic/pages/flypage.html
+dist/basic/pages/index.html
+dist/basic/pages/login.html
+dist/basic/pages/logout.html
+dist/basic/pages/menubar
+dist/basic/pages/new_account.html
+dist/basic/pages/privacy.html
+dist/basic/pages/query/check_orders.html
+dist/basic/pages/query/order_detail.html
+dist/basic/pages/results.html
+dist/basic/pages/srchform.html
+dist/basic/products/2ndDayAir.csv
+dist/basic/products/2ndDayAirAM.csv
+dist/basic/products/3DaySelect.csv
+dist/basic/products/3DaySelectRes.csv
+dist/basic/products/450.csv
+dist/basic/products/Ground.csv
+dist/basic/products/GroundComm.csv
+dist/basic/products/GroundRes.csv
+dist/basic/products/NextDayAir.csv
+dist/basic/products/NextDayAirSaver.csv
+dist/basic/products/country.txt
+dist/basic/products/inventory.txt
+dist/basic/products/minimate.asc
+dist/basic/products/mv_metadata.asc
+dist/basic/products/orderline.txt
+dist/basic/products/products.txt
+dist/basic/products/salestax.asc
+dist/basic/products/shipping.asc
+dist/basic/products/shipping.txt
+dist/basic/products/transactions.txt
+dist/basic/products/ups_zone.asc
+dist/basic/products/userdb.txt
+dist/basic/session/.empty
+dist/basic/special_pages/badsearch.html
+dist/basic/special_pages/canceled.html
+dist/basic/special_pages/cc_not_valid.html
+dist/basic/special_pages/confirmation.html
+dist/basic/special_pages/failed.html
+dist/basic/special_pages/interact.html
+dist/basic/special_pages/missing.html
+dist/basic/special_pages/needfield.html
+dist/basic/special_pages/nomatch.html
+dist/basic/special_pages/noproduct.html
+dist/basic/special_pages/notfound.html
+dist/basic/special_pages/order_security.html
+dist/basic/special_pages/reconfig.html
+dist/basic/special_pages/sec_faq.html
+dist/basic/special_pages/security.html
+dist/basic/special_pages/violation.html
+dist/basic/tmp/.empty
+dist/basic/upload/.empty
+dist/compat/body
+dist/compat/buttonbar
+dist/compat/form_mail.cfg
+dist/compat/help
+dist/compat/random_rotate
 dist/error.log
-dist/etc/mvconf.cmt
-dist/etc/non_root_files
-dist/flycat.cfg
-dist/flycat/README.flycat
-dist/flycat/catalog.cfg
-dist/flycat/config/additional_fields
-dist/flycat/etc/order.number
-dist/flycat/etc/receipt.html
-dist/flycat/etc/report
-dist/flycat/etc/report.html
-dist/flycat/etc/session.lock
-dist/flycat/etc/vendor.number
-dist/flycat/html/index.html
-dist/flycat/images/00-0011.jpg
-dist/flycat/images/artsmall.gif
-dist/flycat/images/artstore.gif
-dist/flycat/images/bg.gif
-dist/flycat/images/ordernow.gif
-dist/flycat/images/redball.gif
-dist/flycat/images/smallamex.gif
-dist/flycat/images/smalldisc.gif
-dist/flycat/images/smallmc.gif
-dist/flycat/images/smallvisa.gif
-dist/flycat/images/tshirt.jpg
-dist/flycat/orders/test/order.number
-dist/flycat/pages/canceled.html
-dist/flycat/pages/cartcfg/.access
-dist/flycat/pages/cartcfg/buttonbar
-dist/flycat/pages/cartcfg/editcart.html
-dist/flycat/pages/cartcfg/enable_edit.html
-dist/flycat/pages/cartcfg/export_userdb.html
-dist/flycat/pages/cartcfg/export_vendor.html
-dist/flycat/pages/cartcfg/master_edit.form
-dist/flycat/pages/cartcfg/master_edit.html
-dist/flycat/pages/cartcfg/newcart.html
-dist/flycat/pages/export.html
-dist/flycat/pages/help.html
-dist/flycat/pages/new_account.html
-dist/flycat/pages/oops.html
-dist/flycat/pages/ord/basket.html
-dist/flycat/pages/ord/checkout.html
-dist/flycat/pages/query/check_orders.html
-dist/flycat/pages/redirect.html
-dist/flycat/pages/special/badsearch.html
-dist/flycat/pages/special/canceled.html
-dist/flycat/pages/special/enroll_failed.html
-dist/flycat/pages/special/enroll_thankyou.html
-dist/flycat/pages/special/failed.html
-dist/flycat/pages/special/interact.html
-dist/flycat/pages/special/missing.html
-dist/flycat/pages/special/needfield.html
-dist/flycat/pages/special/nomatch.html
-dist/flycat/pages/special/noproduct.html
-dist/flycat/pages/special/notfound.html
-dist/flycat/pages/special/reconfig.html
-dist/flycat/pages/special/sec_faq.html
-dist/flycat/pages/special/security.html
-dist/flycat/pages/special/violation.html
-dist/flycat/products/country.asc
-dist/flycat/products/locale.asc
-dist/flycat/products/products.txt
-dist/flycat/products/salestax.asc
-dist/flycat/products/shipping.asc
-dist/flycat/products/transactions.raw
-dist/flycat/products/transactions.txt
-dist/flycat/products/userdb.asc
-dist/flycat/products/vendor.txt
-dist/flycat/session/.empty
-dist/flycat/tmp/.empty
-dist/form_mail.cfg
+dist/etc/.empty
 dist/locale.error
-dist/manifest
 dist/minivend.cfg.dist
 dist/simple/catalog.cfg
 dist/simple/config/.empty
 dist/simple/config/additional_fields
 dist/simple/config/additional_help
-dist/simple/etc/order.profiles
+dist/simple/config/blue1/copyright
+dist/simple/config/blue1/leftside
+dist/simple/config/blue1/logobar
+dist/simple/config/blue1/menubar
+dist/simple/config/blue1/menubottom
+dist/simple/config/blue1/no_right
+dist/simple/config/blue1/only_logo
+dist/simple/config/blue1/rightside
+dist/simple/config/brown1/copyright
+dist/simple/config/brown1/leftside
+dist/simple/config/brown1/logobar
+dist/simple/config/brown1/menubar
+dist/simple/config/brown1/menubottom
+dist/simple/config/brown1/no_right
+dist/simple/config/brown1/only_logo
+dist/simple/config/brown1/rightside
+dist/simple/config/precopy_commands
+dist/simple/config/yellow1/copyright
+dist/simple/config/yellow1/leftside
+dist/simple/config/yellow1/logobar
+dist/simple/config/yellow1/menubar
+dist/simple/config/yellow1/menubottom
+dist/simple/config/yellow1/no_right
+dist/simple/config/yellow1/only_logo
+dist/simple/config/yellow1/rightside
+dist/simple/etc/log_transaction
+dist/simple/etc/mail_receipt
+dist/simple/etc/profiles.login
+dist/simple/etc/profiles.order
 dist/simple/etc/receipt.html
 dist/simple/etc/report
-dist/simple/etc/search.profiles
+dist/simple/html/.empty
 dist/simple/html/index.html
-dist/simple/images/00-0011.jpg
-dist/simple/images/00-0011a.gif
-dist/simple/images/00-341.jpg
-dist/simple/images/00-342.jpg
-dist/simple/images/00-343.jpg
-dist/simple/images/19-203.jpg
-dist/simple/images/19-204.jpg
-dist/simple/images/21-221.jpg
-dist/simple/images/34-101.gif
-dist/simple/images/artsmall.gif
-dist/simple/images/artstore.gif
-dist/simple/images/bg.gif
-dist/simple/images/blue_pap.gif
-dist/simple/images/coolad1.gif
-dist/simple/images/coolbits.gif
-dist/simple/images/download.gif
-dist/simple/images/mini.gif
-dist/simple/images/mvlogo.gif
-dist/simple/images/mvlogo_dark.gif
-dist/simple/images/new.gif
-dist/simple/images/perl_id_313c.gif
-dist/simple/images/staircase.jpg
-dist/simple/images/redball.gif
-dist/simple/images/smallamex.gif
-dist/simple/images/smalldisc.gif
-dist/simple/images/smallmc.gif
-dist/simple/images/smallvisa.gif
-dist/simple/images/tshirt.jpg
-dist/simple/images/web_srch.gif
+dist/simple/images/blue1/cart.png
+dist/simple/images/blue1/go.png
+dist/simple/images/blue1/logo.png
+dist/simple/images/blue1/menu.png
+dist/simple/images/blue1/submit.png
+dist/simple/images/brown1/cart.png
+dist/simple/images/brown1/go.png
+dist/simple/images/brown1/logo.png
+dist/simple/images/brown1/menu.png
+dist/simple/images/brown1/submit.png
+dist/simple/images/clear.gif
+dist/simple/images/download.png
+dist/simple/images/items/00-0011.jpg
+dist/simple/images/items/00-0011a.png
+dist/simple/images/items/00-341.jpg
+dist/simple/images/items/00-342.jpg
+dist/simple/images/items/00-343.jpg
+dist/simple/images/items/19-203.jpg
+dist/simple/images/items/19-204.jpg
+dist/simple/images/items/21-221.jpg
+dist/simple/images/items/34-101.png
+dist/simple/images/items/chair_car.jpg
+dist/simple/images/items/golconde.jpg
+dist/simple/images/items/illumined_pleasures.jpg
+dist/simple/images/items/irises.jpg
+dist/simple/images/items/lastsupp.jpg
+dist/simple/images/items/loose_hair.jpg
+dist/simple/images/items/magnificat.jpg
+dist/simple/images/items/my_gems.jpg
+dist/simple/images/items/okeefe1.jpg
+dist/simple/images/items/okeeffe6.jpg
+dist/simple/images/items/paul_harlequin.jpg
+dist/simple/images/items/pol1.jpg
+dist/simple/images/items/pol2.jpg
+dist/simple/images/items/tshirt.jpg
+dist/simple/images/items/two_fridas.jpg
+dist/simple/images/items/womanfan.jpg
+dist/simple/images/items/young_man.jpg
+dist/simple/images/mvlogo.png
+dist/simple/images/mvlogo_dark.png
+dist/simple/images/new.png
+dist/simple/images/perl_id_313c.png
+dist/simple/images/smallamex.png
+dist/simple/images/smalldisc.png
+dist/simple/images/smallmc.png
+dist/simple/images/smallvisa.png
+dist/simple/images/yellow1/cart.png
+dist/simple/images/yellow1/go.png
+dist/simple/images/yellow1/logo.png
+dist/simple/images/yellow1/menu.png
+dist/simple/images/yellow1/submit.png
+dist/simple/mysql/area.mysql
+dist/simple/mysql/cat.mysql
+dist/simple/mysql/country.mysql
+dist/simple/mysql/inventory.mysql
+dist/simple/mysql/orderline.mysql
+dist/simple/mysql/pricing.mysql
+dist/simple/mysql/products.mysql
+dist/simple/mysql/shipping.mysql
+dist/simple/mysql/transactions.mysql
+dist/simple/mysql/userdb.mysql
+dist/simple/orders/.empty
 dist/simple/pages/about.html
+dist/simple/pages/account.html
+dist/simple/pages/action/get_password.html
 dist/simple/pages/browse.html
 dist/simple/pages/browse1.html
 dist/simple/pages/canceled.html
-dist/simple/pages/copyright
+dist/simple/pages/deliver.html
+dist/simple/pages/examples/test_banner.html
 dist/simple/pages/feedback.html
 dist/simple/pages/flypage.html
-dist/simple/pages/frames.html
-dist/simple/pages/frames/bottom.html
-dist/simple/pages/frames/left.html
-dist/simple/pages/frames/top.html
-dist/simple/pages/help/sec_faq.html
-dist/simple/pages/help/security.html
 dist/simple/pages/index.html
 dist/simple/pages/last_search.html
-dist/simple/pages/leftside
-dist/simple/pages/logobar
-dist/simple/pages/menubar
-dist/simple/pages/menubottom
-dist/simple/pages/mvasp.html
+dist/simple/pages/login.html
+dist/simple/pages/logout.html
+dist/simple/pages/multi/b_address.html
+dist/simple/pages/multi/basket.html
+dist/simple/pages/multi/checkout.html
+dist/simple/pages/multi/final.html
+dist/simple/pages/multi/nobasket.html
+dist/simple/pages/multi/shipping.html
 dist/simple/pages/new_account.html
 dist/simple/pages/news.html
-dist/simple/pages/no_right
-dist/simple/pages/noframes.html
+dist/simple/pages/no_cookie.html
 dist/simple/pages/ord/basket.html
 dist/simple/pages/ord/checkout.html
 dist/simple/pages/ord/nobasket.html
 dist/simple/pages/privacy.html
 dist/simple/pages/quantity.html
-dist/simple/pages/query/.access
 dist/simple/pages/query/check_orders.html
-dist/simple/pages/rand1.html
-dist/simple/pages/rand2.html
-dist/simple/pages/rand3.html
-dist/simple/pages/rand4.html
-dist/simple/pages/rand5.html
+dist/simple/pages/query/order_detail.html
 dist/simple/pages/reconfig/.access
 dist/simple/pages/reconfig/.access_gate
 dist/simple/pages/reconfig/do_download.html
@@ -217,60 +250,70 @@ dist/simple/pages/reconfig/do_upload.html
 dist/simple/pages/reconfig/reconfig.html
 dist/simple/pages/reconfig/upload.html
 dist/simple/pages/results.html
-dist/simple/pages/rightside
-dist/simple/pages/rotate1.html
-dist/simple/pages/rotate2.html
-dist/simple/pages/rotate3.html
-dist/simple/pages/rotate4.html
-dist/simple/pages/special/badsearch.html
-dist/simple/pages/special/canceled.html
-dist/simple/pages/special/cc_not_valid.html
-dist/simple/pages/special/confirmation.html
-dist/simple/pages/special/failed.html
 dist/simple/pages/special/feedback.html
-dist/simple/pages/special/interact.html
-dist/simple/pages/special/missing.html
 dist/simple/pages/special/needfield.html
-dist/simple/pages/special/nomatch.html
-dist/simple/pages/special/noproduct.html
-dist/simple/pages/special/notfound.html
-dist/simple/pages/special/order_security.html
-dist/simple/pages/special/reconfig.html
-dist/simple/pages/special/sec_faq.html
-dist/simple/pages/special/security.html
-dist/simple/pages/special/violation.html
+dist/simple/pages/splash.html
 dist/simple/pages/srchform.html
 dist/simple/pages/view_page.html
+dist/simple/pgsql/area.pgsql
+dist/simple/pgsql/cat.pgsql
+dist/simple/pgsql/country.pgsql
+dist/simple/pgsql/inventory.pgsql
+dist/simple/pgsql/orderline.pgsql
+dist/simple/pgsql/pricing.pgsql
+dist/simple/pgsql/products.pgsql
+dist/simple/pgsql/shipping.pgsql
+dist/simple/pgsql/transactions.pgsql
+dist/simple/pgsql/userdb.pgsql
 dist/simple/products/2ndDayAir.csv
 dist/simple/products/2ndDayAirAM.csv
 dist/simple/products/3DaySelect.csv
+dist/simple/products/3DaySelectRes.csv
 dist/simple/products/450.csv
 dist/simple/products/Ground.csv
 dist/simple/products/GroundComm.csv
 dist/simple/products/GroundRes.csv
 dist/simple/products/NextDayAir.csv
 dist/simple/products/NextDayAirSaver.csv
-dist/simple/products/accessories.asc
-dist/simple/products/country.asc
-dist/simple/products/inventory.asc
-dist/simple/products/locale.asc
-dist/simple/products/pricing.asc
-dist/simple/products/products.asc
+dist/simple/products/area.txt
+dist/simple/products/banner.txt
+dist/simple/products/cat.txt
+dist/simple/products/country.txt
+dist/simple/products/inventory.txt
+dist/simple/products/locale.txt
+dist/simple/products/minimate.asc
+dist/simple/products/mv_metadata.asc
+dist/simple/products/orderline.txt
+dist/simple/products/pricing.txt
+dist/simple/products/products.txt
 dist/simple/products/salestax.asc
 dist/simple/products/shipping.asc
-dist/simple/products/transactions.raw
+dist/simple/products/shipping.txt
 dist/simple/products/transactions.txt
 dist/simple/products/ups_zone.asc
-dist/simple/products/userdb.asc
-dist/simple/reconfig
-dist/simple/report_problem
+dist/simple/products/userdb.txt
 dist/simple/session/.empty
-dist/simple/tmp/PageCache/.empty
-dist/simple/tmp/SearchCache/.empty
+dist/simple/special_pages/badsearch.html
+dist/simple/special_pages/canceled.html
+dist/simple/special_pages/cc_not_valid.html
+dist/simple/special_pages/confirmation.html
+dist/simple/special_pages/failed.html
+dist/simple/special_pages/interact.html
+dist/simple/special_pages/missing.html
+dist/simple/special_pages/needfield.html
+dist/simple/special_pages/nomatch.html
+dist/simple/special_pages/noproduct.html
+dist/simple/special_pages/notfound.html
+dist/simple/special_pages/order_security.html
+dist/simple/special_pages/reconfig.html
+dist/simple/special_pages/sec_faq.html
+dist/simple/special_pages/security.html
+dist/simple/special_pages/violation.html
+dist/simple/tmp/.empty
+dist/simple/upload/.empty
 dist/src/compile.pl
 dist/src/config.h.in
 dist/src/configure
-dist/src/configure.in
 dist/src/mvctl.c
 dist/src/syscfg.in
 dist/src/testcgi
@@ -279,18 +322,21 @@ dist/src/tlink.pl
 dist/src/vlink.c
 dist/src/vlink.pl
 dist/usertag/bar_button
-dist/usertag/db_count
 dist/usertag/db_date
 dist/usertag/email
+dist/usertag/email_raw
 dist/usertag/loc
+dist/usertag/rand
+dist/usertag/reconfig
+dist/usertag/reconfig_time
+dist/usertag/reconfig_wait
 dist/usertag/summary
+dist/usertag/title_bar
 dist/usertag/var
-doc/bullet.gif
-doc/frtoc.html
-doc/intro.html
-doc/minivend.html
-doc/nav.html
-doc/toc.html
+eg/check
+eg/checkstat.sh
+eg/compact
+eg/ifdef
 extra/Business/UPS.pm
 extra/File/CounterFile.pm
 extra/File/Spec.pm
@@ -303,17 +349,20 @@ extra/IniConf.pm
 extra/URI/URL.pm
 lib/Vend/Cart.pm
 lib/Vend/Config.pm
+lib/Vend/Control.pm
 lib/Vend/Data.pm
 lib/Vend/DbSearch.pm
+lib/Vend/Document.pm
 lib/Vend/ECML.pm
-lib/Vend/FlyCat.pm
+lib/Vend/Error.pm
+lib/Vend/External.pm
 lib/Vend/Glimpse.pm
-lib/Vend/Http.pm
 lib/Vend/Imagemap.pm
 lib/Vend/Interpolate.pm
 lib/Vend/MakeCat.pm
+lib/Vend/Misc/Static.pm
 lib/Vend/Order.pm
-lib/Vend/PageBuild.pm
+lib/Vend/Page.pm
 lib/Vend/Parse.pm
 lib/Vend/Parser.pm
 lib/Vend/Scan.pm
@@ -322,20 +371,32 @@ lib/Vend/Server.pm
 lib/Vend/Session.pm
 lib/Vend/SessionDB.pm
 lib/Vend/SessionFile.pm
+lib/Vend/Table/Common.pm
 lib/Vend/Table/DBI.pm
 lib/Vend/Table/DB_File.pm
-lib/Vend/Table/DummyDB.pm
 lib/Vend/Table/GDBM.pm
-lib/Vend/Table/Import.pm
 lib/Vend/Table/InMemory.pm
-lib/Vend/Table/Quoted.pm
-lib/Vend/Table/Update.pm
 lib/Vend/Tagref.pm
+lib/Vend/Tags.pm
 lib/Vend/TextSearch.pm
 lib/Vend/UserDB.pm
 lib/Vend/Util.pm
-lib/Vend/ValidCC.pm
-mvlogo.gif
+lib/perllocal.pod
+pod/mvdocs.pod
+pod/mvfaq.pod
+scripts/compile_link.PL
+scripts/config_prog.PL
+scripts/configdump.PL
+scripts/dump.PL
+scripts/expire.PL
+scripts/expireall.PL
+scripts/localize.PL
+scripts/makecat.PL
+scripts/minivend.PL
+scripts/offline.PL
+scripts/restart.PL
+scripts/update.PL
 test.pl
-win/POSIX.pm
 win/minivend.pif
+win/setup.bat
+win/tlink.exe
index f234ad4..e834192 100644 (file)
@@ -13,8 +13,9 @@ use Config;
 use File::Copy;
 use File::Path;
 use File::Basename;
+use Data::Dumper;
 use Cwd;
-require 5.004;
+require 5.005;
 
 use strict;
 
@@ -24,15 +25,14 @@ my $TermRead;
 my $Prompt_sub;
 my @mods_to_get;
 my $Lock_troubles;
-my $Windows;
 
-$VERSION = '3.15';
+$VERSION = '4.00';
 
 # See if we have the CPAN module
 my $Cpan = 0;
 my $CpanInit;
 eval {         
-               die if $\ f =~ /win32/i;
+               die if $^O =~ /win32/i;
                unless( -f ".cpan.tried") {
                        open TMP, ">.cpan.tried" and close TMP;
                        require CPAN::Config;
@@ -45,9 +45,13 @@ unless($@) {
        $Cpan = 1;
 }
 
-my (@extra_lib_dirs);
-my (@extra_lib_files);
-
+my @extra_lib_dirs;
+my @extra_lib_files;
+my @chown_files = qw/
+                                               error.log
+                                               etc
+                                               minivend.cfg
+                                       /;
 
 # Now we can use the libraries
 use lib './lib';
@@ -80,87 +84,8 @@ if($TermRead) {
        };
 }
 
-my $ActiveState;
-
-if($Config{osname} eq 'solaris') {
-       eval { require 5.004 or require File::Lock };
-       if($@) {
-               push @mods_to_get, "File::Lock";
-               $Lock_troubles = 1;
-       }
-}
-elsif($Config{osname} =~ /win32/i) {
-       $Windows = 1;
-
-       eval { require 5.004; };
-       if($@) {
-                               print <<EOF;
-Sorry -- this version of MiniVend for Windows requires
-Perl 5.004 or higher -- the standard port of Perl.  The
-ActiveState 5.003 version will not run MiniVend, but
-ActiveState 5.005 should work fine.
-
-See http://www.perl.com/ for information on how to get
-the standard Perl distribution.
-EOF
-       }
-       $ActiveState = 1;
-       eval { require 5.005 };
-       if (! $@ and $Config{archname} =~ /object/) {
-               $ActiveState = 1;
-       }
-       if($ActiveState) {
-               eval {
-                       require DB_File;
-               };
-               push(@mods_to_get, 'DB_File') if $@;
-               eval {
-                       require MIME::Base64;
-               };
-               push(@mods_to_get, 'MIME-Base64') if $@;
-               eval {
-                       require URI::URL;
-               };
-               push(@mods_to_get, 'libwww') if $@;
-       }
-
-}
-elsif( $Config{osname} =~ /linux/i             and
-               $Config{d_gnulibc} eq 'define'  and
-               $Config{POSIX_cflags} !~ /STRUCT_TM_HASZONE/    and
-               ! defined $ENV{MINIVEND_BADPOSIX})
-{
-       if (! -f ".linux.warned") {
-               system "touch .linux.warned";
-               print <<EOF;
-
-This looks like a broken version of Perl for Linux, as often
-happens with improperly built GLIBC Perls. RedHat Linux 5.0 has
-this problem. If your Perl is built properly and does not dump
-core when calling POSIX::strftime, then set the environment
-variable MINIVEND_BADPOSIX to 0.
-
-If it is built improperly, you will soon find out, for this
-installation will stop. If it does, then you can re-run and
-we will limp along as best we can, though it is recommended 
-that you update your Perl.
-
-EOF
-                print "Trying strftime, if we stop re-run configure.\n";
-                require POSIX;
-                POSIX::strftime("%c", 0,0,0,1,1,97);
-                print "\nYour perl appears to be OK. Good.\n";
-        }
-        elsif( -f 'core') {
-               unlink 'core';
-               system "echo REMOVE_THIS_FILE_IF_YOU_UPDATE_PERL > dist/.linux.badposix";
-               print <<EOF;
-Compensating for badly-built GLIBC Perl. Please update Perl as soon as 
-possible. Once you do so, you can remove the file "linux.badposix".
-
-EOF
-               $ENV{MINIVEND_BADPOSIX} = 1;
-       }
+if($^O =~ /win32/i) {
+       die "Windows is only supported for a binary distribution.\n";
 }
 
 sub compare_file {
@@ -196,17 +121,14 @@ sub install_file {
                        or die "Couldn't make directory $mkdir: $!\n";
        }
 
-       if ($Windows) {
-               $perms = 0777;
-       }
-       elsif (! -f $srcfile) {
+       if (! -f $srcfile) {
                die "Source file $srcfile missing.\n";
        }
        else {
                $perms = (stat(_))[2] & 0777;
        }
 
-       if( ! $Windows and -f $targfile and ! compare_file($srcfile, $targfile) ) {
+       if( -f $targfile and ! compare_file($srcfile, $targfile) ) {
                open (GETVER, $targfile)
                        or die "Couldn't read $targfile for version update: $!\n";
                while(<GETVER>) {
@@ -235,7 +157,7 @@ sub copyright_prompt {
 
  MiniVend V$VERSION
  
- Copyright 1996-1999 by Michael J. Heins <mikeh\@minivend.com>
+ Copyright 1996-2000 by Michael J. Heins <mikeh\@minivend.com>
 
  MiniVend is free under the terms of the GNU General Public License.
 
@@ -243,6 +165,7 @@ EOF
 }
 
 sub my_prompt {
+    return $_[1] if $MV::Default{force};
     return &$Prompt_sub(@_)
         if defined $Prompt_sub;
     my($pr) = shift || '? ';
@@ -255,17 +178,9 @@ sub my_prompt {
     $ans ? $ans : $def;
 }
 
-sub active_get {
-       my (@mods) = @_;
-       for(@mods) {
-               system "start ppm.pl install $_";
-       }
-}
-
 sub cpan_get {
        my($module, $libdir, $prompt) = @_;
        
-       return active_get($module) if $ActiveState;
        print <<EOF unless defined $CpanInit;
 
 Since you have the CPAN module installed and initialized,
@@ -310,110 +225,156 @@ EOF
 }
 
 sub initialize {
-    my %X=();
-    $X{INSTALLARCHLIB} = "/home/minivend/lib";
-    $X{INSTALLPRIVLIB} = "/home/minivend/lib";
-    $X{INSTALLMAN1DIR} = "/home/minivend/doc";
-    $X{INSTALLMAN3DIR} = "/home/minivend/doc";
+    my %X;
     $X{INSTALLDIRS}     = "perl";
-
-       my $install = 0;
-       my $realdir;
-
-       for(@ARGV) {
-               return \%X  if /^nocopy$/;
-               ($install = 1, next) if /^install$/;
-               next unless $install;
-               $realdir = $_;
-               $realdir =~ s:/lib$::;
+       $X{EXE_FILES}  = [qw(
+                                                       scripts/compile_link
+                                                       scripts/config_prog
+                                                       scripts/configdump
+                                                       scripts/dump
+                                                       scripts/expire
+                                                       scripts/expireall
+                                                       scripts/localize
+                                                       scripts/makecat
+                                                       scripts/minivend
+                                                       scripts/offline
+                                                       scripts/restart
+                                                       scripts/update
+                                               )];
+       $X{PL_FILES}  = {qw(
+                                                       scripts/compile_link.PL scripts/compile_link
+                                                       scripts/config_prog.PL scripts/config_prog
+                                                       scripts/configdump.PL  scripts/configdump
+                                                       scripts/dump.PL        scripts/dump
+                                                       scripts/expire.PL      scripts/expire
+                                                       scripts/expireall.PL   scripts/expireall
+                                                       scripts/localize.PL    scripts/localize
+                                                       scripts/makecat.PL     scripts/makecat
+                                                       scripts/minivend.PL    scripts/minivend
+                                                       scripts/offline.PL     scripts/offline
+                                                       scripts/restart.PL     scripts/restart
+                                                       scripts/update.PL      scripts/update
+                                               )};
+
+       if(! $MV::Default{force} and ! $MV::Default{PREFIX}) {
+               if($> == 0) {
+                       $MV::Default{PREFIX} = '/usr/local/minivend';
+               }
+               else {
+                       $MV::Default{PREFIX} = "$ENV{HOME}/mvend";
+               }
+       }
+       my $uid;
+       if($> == 0 and ! $MV::Default{MINIVEND_USER}) {
+               $uid = my_prompt(
+                       qq{MiniVend cannot be run as root. Which user should run MiniVend? },
+                       'minivend',
+               );
+               open(UID, ">_uid")
+                       or die "Can't write uid file: $!\n";
+               print UID "$uid";
+               close UID;
+       }
+       else {
+               eval {
+                       $uid = scalar getpwuid($>);
+               };
+       }
+       return %X if $MV::Default{nocopy};
+       if($uid) {
+               open(UID, ">_uid")
+                       or die "Can't write uid file: $!\n";
+               print UID "$uid";
+               close UID;
+       }
+       for(@Config{
+                                 qw/
+                                         archlib
+                                         archlibexp
+                                         privlib
+                                         privlibexp
+                                         sitearch
+                                         sitearchexp
+                                         sitelib
+                                         sitelibexp
+                                 /
+               })
+       {
+               die "Can't install in Perl library!\n" if $MV::Default{PREFIX} eq $_;
        }
 
-       unless ($install) {
+       my $realdir;
 
-               #exec("perl install.pl") if $Windows;
+       if(! $MV::Default{final}) {
                &copyright_prompt();
 
-               my @mvdir = (
-                                               "$ENV{HOME}/mvend",
-                                               "/home/minivend",
-                                               "/usr/local/lib/minivend",
-                                               "$ENV{HOME}/minivend",
-                                       );
-               if(defined $Lock_troubles) {
-                               print <<EOF;
-Since you are on Solaris, you need to update to Perl 5.004.
-Sorry.
-EOF
-               }
-               my $mvdir;
-
-               for $mvdir (@mvdir) {
-                       if (-f "$mvdir/minivend.cfg") {
-                               $realdir = $mvdir if -w $mvdir;
-                               last;
-                       }
-               }
-               $realdir ||= $mvdir[0];
-               $realdir=my_prompt("Where is your MiniVend to be installed? ",$realdir);
+               $realdir = my_prompt(
+                                                               "Where is your MiniVend to be installed? ",
+                                                               $MV::Default{PREFIX},
+                                                               );
                print "\n";
                $realdir =~ s:[\\/]\s*$::;
-               $X{INSTALLARCHLIB}      = "$realdir/lib";
-               $X{INSTALLPRIVLIB}      = "$realdir/lib";
-               $X{INSTALLMAN1DIR}      = "$realdir/doc";
-               $X{INSTALLMAN3DIR}      = "$realdir/doc";
-               $X{INSTALLDIRS}     = "perl";
-
-               if($Windows) {
-                       ACTIVEGET: {
-                               last ACTIVEGET unless @mods_to_get;
-                               unless( -f "_active_tried" or ! $ActiveState) {
-                                       print <<EOF;
-You appear to be running the ActiveState Perl port and are missing the
-following modules:
-
-  @mods_to_get
-
-These modules are very nice to have and we would like to try and get
-them. (You can still get MiniVend going without them, but it isn't 
-quite as slick.)
-
-We can try and get them with the Perl Package Manager (ppm.pl). If
-you are connected to the Internet then this might well work. (Proxy servers
-probably will not unless you have used them before with the PPM.)
-
-You will see some DOS boxes flash up on the screen. This is normal
-and will not hurt anything. If one fails, and you wait awhile, then
-close the window manually.
-
-If we can't get the modules on the first try we will not try again
-as long as the file "_active_tried" exists.
+       }
+       else {
+               $realdir = $MV::Default{final};
+       }
 
-EOF
-                                       my $ans = my_prompt("Try and get modules? ", 'yes');
-                                       last ACTIVEGET unless $ans =~ /^\s*y/i;
-                                       open TMP, ">_active_tried" and close TMP;
-                                       active_get(@mods_to_get);
-                               }
+       $X{INSTALLSCRIPT}       = "$realdir/bin";
+       $X{INSTALLBIN}          = "$realdir/bin";
+       $X{INSTALLARCHLIB}      = "$realdir";
+       $X{INSTALLPRIVLIB}      = "$realdir/lib";
+       $X{INSTALLMAN1DIR}      = "$realdir/doc";
+       $X{INSTALLMAN3DIR}      = "$realdir/doc";
+
+       my @re_dir  = qw( simple/download );
+       my @re_copy = qw(       
+                                               ../pod/mvdocs.pod simple/download/mvdocs.pod
+                                               ../pod/mvfaq.pod simple/download/mvfaq.pod
+                                               );
+
+       if($MV::Default{final}) {
+               $\17 = 0;
+               for(glob "_*") {
+                       File::Copy::copy($_, $realdir);
+               }
+               open(MANI, "MANIFEST")
+                       or die "No MANIFEST?\n";
+               my (@files) = <MANI>;
+               close MANI;
+               @files = grep m:^dist/:, @files;
+               chomp(@files);
+               @files = map { s:^dist/::; $_} @files;
+
+               # New install_file routine
+               chdir 'dist';
+               for (@re_dir) {
+                       mkdir $_, 0777;
+               }
+               while ($_ = shift @re_copy ) {
+                       my $from = $_;
+                       my $to = shift @re_copy;
+                       push @files, $to;
+                       File::Copy::copy($from, $to);
+               }
+               for (@files) {
+                       install_file('.', $realdir, $_);
+               }
+               if(-f "$realdir/_uid" and $> == 0) {
+                       open(UID, "$realdir/_uid")
+                               or die "Can't open uid file: $!\n";
+                       my $uid = <UID>;
+                       close UID;
+                       $MV::Default{MINIVEND_UID} = getpwnam($uid);
+                       $MV::Default{MINIVEND_GID} = getgrnam($uid);
+                       for(@chown_files) {
+                               chown   $MV::Default{MINIVEND_UID},
+                                               $MV::Default{MINIVEND_GID},
+                                               "$realdir/$_";
                        }
-                       my $dosdir = $realdir;
-                       $dosdir =~ s:/:\\:g;
-                       open(WINBAT, ">configure2.bat")
-                               or die "create configure2.bat: $!\n";
-                       print WINBAT <<EOF;
-$Config{perlpath} Makefile.PL install $realdir\r
-start configure.htm
-cd $dosdir
-$Config{perlpath} bin/minivend -serve
-EOF
-                       close WINBAT;
-                       exit;
                }
-
-               return \%X;
+               exit;
        }
 
-       die "Shouldn't get here unless a 'make install'!?!\n"
-               unless $install;
 
        # Do the extra library checks
 
@@ -424,10 +385,11 @@ EOF
        eval {
                require IniConf;
        };
-       if ($Windows or $@) {
+       if ($@) {
                push @extra_lib_files, 'IniConf.pm';
        }
 
+
        eval {
                require HTML::Entities;
        };
@@ -436,7 +398,6 @@ EOF
                push @extra_lib_files, 'HTML/Entities.pm';
        }
 
-
        eval {
                require Business::UPS;
        };
@@ -449,7 +410,7 @@ EOF
                require Storable;
        };
        unless ($@) {
-                               my $def = 'n';
+                               my $def = 'y';
                        print <<EOF;
 
 You appear to have Raphael Manfredi's Storable module installed.
@@ -473,290 +434,73 @@ they will NEED TO BE REMADE for ALL CATALOGS using this
 MiniVend server instance.
 EOF
 
-               if($ENV{MINIVEND_STORABLE_DB} || -f "$realdir/_db_storable") {
+               if($ENV{MINIVEND_STORABLE_DB} || -f "$realdir/_db_storable" || -f "_db_storable") {
                        $def = 'y';
                }
-               elsif($ENV{MINIVEND_STORABLE} || -f "$realdir/_session_storable") {
+               elsif($ENV{MINIVEND_STORABLE} || -f "$realdir/_session_storable" || -f "_session_storable") {
                        $def = 's';
                }
                my $ask = my_prompt("Use Storable module? (y/n/s) ", $def);
                if ($ask =~ /^\s*(y|d)/i) {
-                       open(TSTORABLE, ">$realdir/_db_storable")
-                               or die "creat $realdir/_db_storable: $!\n";
+                       open(TSTORABLE, ">_db_storable")
+                               or die "creat _db_storable: $!\n";
                        print TSTORABLE "REMOVE THIS FILE TO STOP USING Storable\n";
                        close TSTORABLE;
                }
                if ($ask =~ /^\s*(y|s)/i) {
-                       open(TSTORABLE, ">$realdir/_session_storable")
-                               or die "creat $realdir/_session_storable: $!\n";
+                       open(TSTORABLE, ">_session_storable")
+                               or die "creat _session_storable: $!\n";
                        print TSTORABLE "REMOVE THIS FILE TO STOP USING Storable\n";
                        close TSTORABLE;
                }
        }
 
+       MODCHECK: {
 
-MODCHECK: {
-
-       last MODCHECK unless $Cpan;
-       last MODCHECK if $Windows;
-       eval {
-                       require MD5;
-               };
-       push(@mods_to_get, 'MD5') if $@ and $Cpan;
-       eval {
-                       require SQL::Statement;
-               };
-       push(@mods_to_get, 'SQL::Statement') if $@ and $Cpan;
-       eval {
-                       require MIME::Base64;
-               };
-       push(@mods_to_get, 'MIME::Base64') if $@ and $Cpan;
-       eval {
-                       require URI::URL;
-               };
-       push(@mods_to_get, 'URI::URL') if $@ and $Cpan;
-
-}
-
-
-my $Upgrade;
-UPGRADE: {
-       if(     -f "$realdir/minivend.cfg" and
-               (-f "$realdir/minivend.pl" or -f "$realdir/bin/minivend"))
-       {
-               my $msg;
-               print <<EOF unless defined $Upgrade;
-This looks like an upgrade.
-
-Your minivend.cfg file will be saved, but other files will
-be overwritten and MAY BE REMOVED WITHOUT WARNING.
-Any custom templates that are not in the 'simple'
-or 'sample' directories will be saved.
-
-These lines will be written to your minivend.cfg if 
-they are not already present:
-
-       #include admin/mv_admin.cfg
-       Variable   MV_NO_CRYPT   1
-       AdminUser  minivend:nevairbe
-
-If you wish to escape to the shell and save some files
-first, enter ! or 'sh' at the prompt. (Of course when
-you 'exit' from the shell, you will return to this
-configuration.)
-
-If you reply 'quit', or 'no' at the prompt, this
-installation will stop.
-
-EOF
-               $Upgrade = 1;
-               $msg = "Continue? ";
-               my $ask = my_prompt($msg);
-               exit 1 if $ask =~ /^\s*[qn]/i;
-               if($ask =~ /^\s*sh/ or $ask =~/^\s*!\s*$/) {
-                       system "$ENV{SHELL}";
-                       if($?) {
-                               die "\nShell escape failed.\n";
-                       }
-                       redo UPGRADE;
-               }
-               elsif($ask =~ s/^\s*!(.*)/$1/s) {
-                       system "$ask";
-                       redo UPGRADE;
-               }
-
-               print <<EOF;
-
-You may wish to inspect minivend.cfg.dist for new values; in
-particular if you want to use the newer demo you might need some
-UserTag entries defined there.
-
-Check the UPGRADE file for changes you might have to make if
-updating from an earlier version of MiniVend.
-EOF
+               last MODCHECK unless $Cpan;
+               eval {
+                               require MD5;
+                       };
+               push(@mods_to_get, 'MD5') if $@ and $Cpan;
+               eval {
+                               require SQL::Statement;
+                       };
+               push(@mods_to_get, 'SQL::Statement') if $@ and $Cpan;
+               eval {
+                               require MIME::Base64;
+                       };
+               push(@mods_to_get, 'MIME::Base64') if $@ and $Cpan;
+               eval {
+                               require URI::URL;
+                       };
+               push(@mods_to_get, 'URI::URL') if $@ and $Cpan;
 
        }
-}
 
        COPYEXTRA: {
-               my $cpdir = $Windows ? '.' : $realdir;
+               my $cpdir = '.';
                mkdir $cpdir, 0777 unless -d $cpdir;
                mkdir "$cpdir/lib", 0777 unless -d "$cpdir/lib";
                for(@extra_lib_dirs) {
                        next if -d "$cpdir/lib/$_";
                        mkdir "$cpdir/lib/$_", 0777 or die "mkdir $cpdir/lib/$_: $!\n";
                }
-
                for(@extra_lib_files) {
-                       File::Copy::copy ("extra/$_", "$cpdir/lib/$_")
+                       File::Copy::copy ("extra/$_", "lib/$_")
                                or die "Couldn't copy $_: $!\n";
                }
        }
 
-       my @files;
-       my @winfiles;
-       my @extra_doc_files;
-       
-       # Save on space
-       opendir(DOCDIR, 'doc') or die "opendir doc: $!\n";
-       @files = grep /\.(html?|gif|jpe?g)$/i, readdir DOCDIR;
-       closedir DOCDIR;
-       for(@files) {
-               File::Copy::copy("doc/$_", 'dist/simple/html');
-               push @extra_doc_files, "dist/simple/html/$_";
-       }
-
-       my $origdir = cwd();
-       
-       open(MANIFILE, 'MANIFEST')
-               or die "Couldn't open MANIFEST: $!\n";
-       @files = <MANIFILE>;
-       close MANIFILE;
-       chomp(@files);
-       for(@extra_lib_files) {
-               push @files, "lib/$_";
-       }
-       for(@extra_doc_files) {
-               push @files, $_;
-       }
-       $\17 = 0;
-       if($Windows) {
-               my $dll_source   = "win/cygwin.dll";
-               my $dll_dir;
-               for( $ENV{SYSTEMROOT}, qw! c:/windows d:/windows e:/windows f:/windows !) {
-                       -d $_ and $dll_dir = $_;
-               }
-               $dll_dir      .= '/system';
-               $dll_dir =~ s:\\:/:g;
-               my $dll_location = $dll_dir . "/cygwin.dll";
-       DLL: {
-               unless(-f $dll_location) {
-                       if (-f $dll_source and -d $dll_dir) {
-                               File::Copy::copy( $dll_source, $dll_location);
-                       }
-                       elsif (-f $dll_source) {
-                               print <<EOF;
-ERROR: The directory $dll_dir
-was not found. Enter the path to your Windows
-DLL directory, or enter nothing to skip the DLL
-installation.
-
-(MiniVend installation will continue,
-but you may need to consult the README.win32 file
-to find out how to install the CGI program.)
-EOF
-                               $dll_dir = my_prompt("DLL directory: ");
-                               redo DLL if $dll_dir;
-                       }
-                       else {
-                               print <<EOF;
-MiniVend requires the CYGWIN.dll module for the .EXE version of
-its CGI program to run. We did not find it in the normal c:/windows/system
-location, and it is not included in this version of the ZIP file.
-
-You will either need to get it, or you will need to use the tlink.pl program.
-(Many Windows web servers require some additional setup to run Perl CGI
-programs.)
-
-The CYGWIN.DLL file is available at:
-
-               ftp://ftp.minivend.com/pub/cygwin.dll
-
-Enter nothing at the following prompt to put off getting this file.
-
-EOF
-                               $dll_source = my_prompt("Enter another path to CYGWIN.DLL: ");
-                               redo DLL if $dll_source;
-                       }
-               
-               }
-       }
-               umask 0;
-               require Win32::Shortcut;
-               import Win32::Shortcut;
-               my $short = new Win32::Shortcut;
-               # Apparently Win32::Shortcut won't reliably work when starting
-               # from here
-               #$short->Load("win/minivend.pif");
-               open(WINBAT, ">minivend.bat") 
-                       or die "create minivend.bat: $!\n";
-               print WINBAT "set PGPPATH=$ENV{PGPPATH}\n" if $ENV{PGPPATH};
-               print WINBAT <<EOF;
-set MINIVEND_ROOT=$realdir
-$Config{perlpath} $realdir/bin/minivend -serve
-EOF
-               close(WINBAT);
-               $short->{Path}                          = "$realdir/minivend.bat";
-               $short->{WorkingDirectory}      = "$realdir";
-               $short->{Path}                          =~ s:/:\\:g;
-               $short->{WorkingDirectory}      =~ s:/:\\:g;
-               $short->{File}              = "Start MiniVend Server";
-               $short->Save();
-               undef $short;
-               open(WINBAT, ">makecat.bat") 
-                       or die "create makecat.bat: $!\n";
-               print WINBAT <<EOF;
-$Config{perlpath} $realdir/bin/makecat
-EOF
-               close(WINBAT);
-               $short = new Win32::Shortcut;
-               # Apparently Win32::Shortcut won't reliably work when starting
-               # from here
-               #$short->Load("win/minivend.pif");
-               $short->{Path}                          = "$realdir/makecat.bat";
-               $short->{WorkingDirectory}      = "$realdir";
-               $short->{Path}                          =~ s:/:\\:g;
-               $short->{WorkingDirectory}      =~ s:/:\\:g;
-               $short->{File}              = "Make MiniVend Catalog";
-               $short->Save();
-
-               File::Copy::copy('win/POSIX.pm', 'lib/POSIX.pm')
-                       or die "File::Copy::copy error 'win/POSIX.pm': $!\n";
-
-               @winfiles = grep m:^lib/:, @files;
-               eval {
-                       File::Copy::copy('Start MiniVend Server.pif', 'dist')
-                               or die "File::Copy::copy error 'Start MiniVend Server.pif': $!\n";
-                       File::Copy::copy('Make MiniVend Catalog.pif', 'dist')
-                               or die "File::Copy::copy error 'Make MiniVend Catalog.pif': $!\n";
-                       push @winfiles, 'Start MiniVend Server.pif';
-                       push @winfiles, 'Make MiniVend Catalog.pif';
-               };
-               if ($@) {
-                       my $windir = $realdir;
-                       $windir =~ s:/:\\:g;
-                       print <<EOF;
-The Shortcut files could not be made. Start the server with
-       
-       perl $realdir/bin/minivend -serve
-
-or
-
-       $windir\\minivend
-
-EOF
-               }
-               push @winfiles, 'makecat.bat', 'minivend.bat';
-               push @winfiles, 'lib/POSIX.pm';
-               for (@winfiles) {
-                       install_file('.', $realdir, $_);
-               }
-       }
-
-       @files = grep m:^dist/:, @files;
-       @files = map { s:^dist/::; $_} @files;
-
-       # New install_file routine
-       chdir 'dist';
-       for (@files) {
-               install_file('.', $realdir, $_);
-       }
-
        $\17 = 0;
 
        MODGET: {
                last MODGET unless $Cpan;
-               last MODGET if $Windows;
+               unless (-d 'build') {
+                       mkdir('build', 0777)
+                               or die "Couldn't make build directory for CPAN: $!\n";
+               }
+               chdir 'build'
+                       or die "Couldn't chdir to build directory for CPAN: $!\n";
                my $mod;
                foreach $mod (@mods_to_get) {
                        my $ok = eval { cpan_get($mod, $realdir)};
@@ -768,13 +512,17 @@ EOF
                                print "\a\n$mod get failed.\n\n";
                        }
                }
-               chdir $origdir;
+               chdir '..';
        }
 
-       my $perl = $Windows ? 'perl' : $Config{perlpath};
-       chdir $realdir;
-       system "$perl configure.pl -v $realdir $perl";
-    exit;
+       $Data::Dumper::Terse = 1;
+       open (INITP, ">scripts/initp.pl")
+               or die "Can't write initp.pl: $!\n";
+       print INITP '$MV::Self = ';
+       print INITP Dumper(\%X);
+       print INITP ";\n1;";
+       close INITP;
+    return \%X;
 }
 
 sub regularize {
@@ -790,10 +538,13 @@ sub MY::install {
 
        my $self = shift;
        local *install;
+       sub dont_warn {
+               \*install;
+       }
 
        my $new = <<'EOF';
 mv_install ::
-                       $(PERL) Makefile.PL install $(INSTALLARCHLIB)
+                       $(PERL) Makefile.PL force=1 final=$(INSTALLARCHLIB)
 
 install :: all pure_install doc_install mv_install
 
@@ -803,19 +554,56 @@ EOF
        $_;
 }
 
+       use Getopt::Long;
+       my @saveargs = @ARGV;
+       my %optctl = (
+               'junk'                  => sub { 1 },
+               '<>'                    => sub {
+                                                       my ($arg) = @_;
+#warn "checking option $arg\n";
+                                                       my ($opt, $val);
+                                                       if($arg !~ /=/) {
+                                                               $opt = $arg;
+                                                               $val = 1;
+                                                       }
+                                                       else {
+                                                               ($opt, $val) = split /=/, $arg, 2;
+                                                       }
+                                                       $MV::Default{$opt} = $val;
+                                                       return;
+                                                       },
+       );
+
+       my @options = ( qw/
+               junk
+               <>
+       / );
+
+       Getopt::Long::config(qw/permute/);
+       GetOptions(\%optctl, @options)
+               or die "Bad option get\n";
+#      use Data::Dumper;
+#      $Data::Dumper::Terse = $Data::Dumper::Indent = 2;
+#      print "ARGV: " . Dumper(\@ARGV);
+#      print "OPT: " . Dumper(\%MV::Default);
+#      @ARGV = @saveargs;
+
 WriteMakefile(
        NAME       => "MiniVend",
-       
-       "DISTNAME" => "minivend",
-       "MAN1PODS" => {},
-       "dist"     => {
+       MAN3PODS => { 'pod/mvdocs.pod' => 'blib/man3/mvdocs.8' },
+       DISTNAME => "minivend",
+       clean    => {
+                   FILES=> "lib/IniConf.pm _db_storable _session_storable lib/File/CounterFile.pm scripts/initp.pl scripts/compile_link scripts/config_prog scripts/configdump scripts/dump scripts/expire scripts/localize scripts/expireall scripts/makecat scripts/minivend scripts/offline scripts/restart scripts/update",
+                  },
+
+       dist     => {
                                        CI => "ci -l -t-Initial",
                                        SUFFIX   => ".gz",
                                        DIST_DEFAULT => 'all tardist',
                                        COMPRESS => "gzip -9f",
                                        ZIP_FLAGS => '-pr9',
                                },
-       VERSION_FROM => "dist/bin/minivend",
-       EXE_FILES => [],
+       VERSION_FROM => "scripts/minivend.PL",
+       EXE_FILES  => [],
        CONFIGURE  => \&initialize,
 );
diff --git a/README b/README
index c820005..22d49d4 100644 (file)
--- a/README
+++ b/README
@@ -1,8 +1,8 @@
-# MiniVend V3.15
+# Minivend V4.x
 # 
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
+# Copyright 1996-2000 by Michael J. Heins <mikeh@minivend.com>
 #
-# Based on Vend 0.2
+# Originally based on Vend 0.2
 # Copyright 1995 by Andrew M. Wilcox
 #
 # Portions from Vend 0.3
 #
 # You should have received a copy of the GNU General Public
 # License along with this program; if not, write to the Free
-# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
-# USA.
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA  02111-1307  USA.
 
-Welcome to MiniVend, originally based on Vend.  This program is
-completely unsupported, without warranty of any kind. The author is
-interested in problems, suggestions, or comments, but does not have time
-to offer free individual support in most cases. See the MiniVend website at
-http://www.minivend.com/minivend/ for more information.
+Welcome to Minivend! This program is completely unsupported, without
+warranty of any kind. The author is interested in problems, suggestions,
+or comments, but does not have time to offer free individual support
+in most cases. See the Minivend website at http://www.minivend.com/
+for more information.
 
-   IMPORTANT NOTE:  MiniVend 3.15 requires Perl 5.004 or higher. It will
-                    run on no earlier version, period. 5.005 is recommended.
+IMPORTANT NOTE:  Minivend 4.0 requires, repeat REQUIRES, Perl 5.005 or Perl 5.6.
 
 The information you need is in the following files:
 
     README     Copyright info, roadmap to installation
                and pointers to support system
     
-    Copying    Your MiniVend license -- please read.
-
-    INSTALL    Installation instructions
-
-    UPGRADE    What to watch out for if updating from an earlier version
-
-    README.OS  OS-specific information, if any
-
-    doc/       The MiniVend documentation.
+    Copying    Your Minivend license -- please read.
 
     WHATSNEW   Change information for all versions in this
                version family.
@@ -55,86 +46,95 @@ The information you need is in the following files:
     
 Major files/directories in the distribution:
 
-    configure
-    configure.bat
-    Makefile.PL The installation scripts. Try typing "./configure"
-                or "configure" to install.
+    Makefile.PL The installation scripts
 
-    dist/       The distribution files, exclusive of library
-                modules. Includes:
+    dist/       The distribution files, exclusive of executable
+                files and modules. Includes:
 
                 minivend.cfg.dist   Distribution minivend.cfg
-                flycat/             The flycat demo application.
-                simple/             The simple demo application.
-                bin/                Executables including scripts
+                checkout/           Checkout-only demo application.
+                simple/             The not so aptly named "simple" demo
+                                                   application.
                 src/                C and Perl code for CGI links
+                               compat/             Some Minivend-3 compatibility tags
+                               usertag/            Some fairly-standard usertags
 
-    doc/        The documentation.
+       extra/      Some not-always-needed Perl libraries.
 
-    lib/        The library modules needed to run MiniVend.
+    lib/        The library modules needed to run Minivend.
                  
+       scripts/    The executable files, relocated to bin in the run
+                   directory.
+
+       test.pl     The installation test script.
+
     win/        Windows-specific files
             
 --------------------------------------------------------------
 
                         M I N I V E N D
                                        
-   MiniVend is a full-featured electronic catalog system (commonly known
-   as a shopping cart) with online ordering capability. It is designed to
-   provide an interface complete with SSL security and full database
-   support.
+   Minivend is a full-featured electronic catalog system (commonly known
+   as a shopping cart) with online ordering capability. It is a high-end
+   database access and retrieval system with SQL support via the Perl DBI.
    
-   MiniVend is freely-redistributable under the GNU General Public
+   Minivend is freely-redistributable under the GNU General Public
    License -- you can download it via FTP.
 
-    MiniVend 3.0 Features
+    Minivend 4.0 Features
 
        * Users maintain a "shopping cart" for ordered items
        * Multiple independent or shared catalogs allow one server
          to run many storefronts or a "mall"
        * SSL support means secure and practical credit card ordering
-       * PGP support for secure off-site mailing of orders
+       * PGP and GPG support for secure off-site mailing of orders
+       * Complete addressable database support with virtually
+         unlimited rows and columns
+       * Complete SQL support via DBI
        * Catalogs can be of almost unlimited size with excellent
          performance
        * Multi-server mode for very high capacity on systems with
          sufficient memory
        * Cookie support allows browsers to leave catalog and come
          back without losing session state
-       * Complete addressable database support with virtually
-         unlimited rows and columns
-       * Complete SQL support including ODBC
+          * Minimate web administration interface (separate package)
+          * Complete user authentication and database with address
+            books and stored shopping carts
        * Many, many, other features
 
     Powerful search capability
 
        * One-click scan and search -- build a whole search in a single HREF
+          * Pageable results, configurable in many ways
        * Versatile built-in text search
-       * Complete Glimpse interface
+          * Complete Glimpse support
        * Fast binary search
+       * Independent field search selection and return
        * Range searching, numeric and alphanumeric
        * Search sorting with reverse, numeric and case-insensitive options
-       * Independent field search selection and return
        * Search any file, build results from any database
 
     Complete control of appearance
 
-       * Full frames support
-       * Catalog pages automatically selected -- either built
-         "on the fly" from the database or pre-made for popular items
-       * The on-the-fly page is selectable from the database
-       * Embedded Perl and conditional HTML allow complex and
-         flexible catalog pages to be completely built from
-         the database
+          * Over 90 predefined tag functions
+          * Powerful user-definable tags
+          * Catalog pages automatically selected -- either built
+            "on the fly" from the database or pre-made for popular items
+          * Embedded Perl and conditional HTML allow complex and
+            flexible catalog pages to be completely built from the database
+          * ASP-like syntax available
 
     Flexible Ordering Process
 
-        * Multi-level order screens with configurable field
+        * Single- or multi-level order screens with configurable field
           verification
         * Multiple shopping carts per catalog, allows both buy
           and sell operations
         * Shipping calculation, mixed modes, with UPS table lookup
         * Sales tax calculation, with fully independent non-taxable
           item and taxed shipping
+        * Route orders to multiple fulfillment houses with
+                 complete configurability
         * PGP encryption of credit card information or
           the entire emailed order
         * Fully-configurable discounts with coupons or
@@ -142,100 +142,79 @@ Major files/directories in the distribution:
         * Fully-configurable quantity pricing
         * Fully-configurable item price adjustments
         * Sophisticated back end order entry capability including CyberCash(R)
-        * Full client-side imagemap support, including frame targets and form
-          submits
         * Fully configurable order reports and receipts
 
-    Easy Administration
+    Miscellaneous
 
         * Automated installation and configuration
-        * Runs under Perl 5.004, Windows, and almost any UNIX
+        * Runs under Perl 5.005/5.6, Windows, and almost any UNIX
         * Designed to be secure
-        * Offline database builds
         * Static page build option for high performance
         * Works well with all browsers
 
-
--------------------------------------------------------------------
-
-                         D E M O
-
-There is a simple demo application included. 
-
-To install the demo, go to the MiniVend installation directory
-and run:
-
-    bin/makecat simple
-
-Follow the prompts and after restarting the MiniVend server you
-should be able to access the demo catalogs.
-
 -------------------------------------------------------------------
 
                       A V A I L A B I L I T Y
                               A N D
                      C O M P A T I B I L I T Y
 
-MiniVend has been well-tested on Solaris 2, SunOS, Linux, HP-UX,
-BSDI, FreeBSD, and OSF/Alpha. It also reportedly runs on SCO,
-AIX, and other Unix ports.  It should work on any UNIX or Win32
-OS with Perl 5.004 or higher.
+Minivend 4 has been tested on Solaris 2, Linux, FreeBSD, and Digital
+UNIX/Tru64. Its predecessor Minivend 3 also reportedly runs on SCO, AIX,
+and other Unix ports.  It should work on any UNIX or Win32 OS with Perl
+5.005 or higher.
 
-IMPORTANT NOTE FOR WINDOWS: MiniVend will NOT run with the early
-ActiveState ports, otherwise known as 5.003 build 1XX. It REQUIRES, repeat
-REQUIRES, the standard version Perl 5.004 or 5.005 ActiveState "merge"
-ports. See http://www.perl.com/ for information on how to obtain it.
+Windows does not support fork(), so the server runs in the foreground. There
+are other differences; the canonical installation is UNIX.
 
-Windows does not support fork(), so the server runs in the foreground. You
-need the DB_File module for best results, and that is not included in the
-standard distribution. You can get it at http://www.perl.com/CPAN-local
-(or any CPAN archive) in the ports/win32/Standard/x86/ directory.
+UNIX INSTALLATION
+------------------
+Here is the short version:
 
--------------------------------------------------------------
+    gzip -dc minivend-4.xxx.tar.gz | tar xvf -
+    cd minivend-4*
+    perl Makefile.PL
+       make test && make install
 
-                      I N S T A L L A T I O N
+-- WHEN IN DOUBT, RE-START THE SERVER.  It won't take but a few
+   seconds, and changes in configurable options don't take effect
+   until it is done. You may even change a page and not see the
+   effect until the server is restarted.
 
 WINDOWS INSTALLATION
 --------------------
 
-    Obtain the self-extracting executable minivend-3.15.exe
-    and double-click on it. You MUST already have Perl 5.004
-    INSTALLED and in your PATH.
+       Not yet. You can manually create a software directory and
+       get things going if you know your way around Perl. But I 
+       don't recommend trying unless you are prepared for some
+       serious work.
 
-    Alternatively, you can unzip the file yourself and run
-    "setup".
+-------------------------------------------------------------------
 
-UNIX INSTALLATION
-------------------
-Here is the short version:
+                         D E M O
 
-    gzip -dc minivend-3.15.tar.gz | tar xvf -
-    cd minivend-3.15
-    ./configure
+There are two demo applications included; one is not so aptly named "simple",
+the other is "basic". For the best instructional experience, start
+with "basic" and then try "simple".
 
-More information is in the file INSTALL.
+To install the demo, go to the directory where you installed 
+Minivend (default is "mvend" in your home directory or /usr/local/minivend
+for root installations) and run:
 
--- WHEN IN DOUBT, RE-START THE SERVER.  It won't take but a few
-   seconds, and changes in configurable options don't take effect
-   until it is done. You may even change a page and not see the
-   effect until the server is restarted.
+    bin/makecat basic
 
--------------------------------------------------------------
+        or 
 
-                     D O C U M E N T A T I O N
+       bin/makecat simple
 
-The documentation is in 3 files in the doc/ subdirectory of
-the main MiniVend directory:
+Follow the prompts and after restarting the Minivend server you
+should be able to access the demo catalog.
 
-       toc.html       Table of contents
-       frtoc.html     Frames table of contents
-       minivend.html  Main documentation file
+-------------------------------------------------------------
 
-These files will be copied to the same HTML directory as
-the simple demo gateway files -- they would normally
-be referenced as:
+                     D O C U M E N T A T I O N
 
-           http:/www.yourserver.com/simple/toc.html
+The documentation is in several man pages and HTML files in the doc/
+subdirectory of the main Minivend directory.
 
 There is an extended documentation package available
 at www.minivend.com.
@@ -244,58 +223,10 @@ at www.minivend.com.
 
                     K N O W N   P R O B L E M S
 
-RedHat Linux 5.0:
-        RedHat Linux 5.0 has a bad Perl distribution that causes
-        problems with POSIX. The real solution is to obtain the
-        latest.tar.gz file from CPAN and build a new Perl. Here
-        is the script to do that once you have obtained the 
-        latest.tar.gz file:
-
-            tar xzf latest.tar.gz
-            cd perl5.005*
-            perl -pi.dist -e \
-                "s:/ bsd / /:/ net / /' | sed -e 's/ bsd / c g /:; \
-                s/^#(POSIX_cflags)/POSIX_cflags/" \
-                hints/linux.sh
-            ./Configure -des && make test
-
-        That should get you a Perl which passes make test
-        one hundred percent and that works with MiniVend and
-        other programs which use the POSIX library. After
-        you have verified the "make test" passes fully
-        you should of course su to root and "make install".
-
-        This may soon be corrected by the Perl porters or by
-        RedHat, so bear in mind this is time-sensitive. The above
-        works well as of Jun. 3, 1998.
-
-IRIX, Solaris, Digital UNIX:
-       The server may not terminate immediately,
-       as the select() call blocks signals. It
-       will stop at the next request, or at the
-       end of the occasional houskeeping
-       cycle, set by the directive HouseKeeping in
-       minivend.cfg. Set to less than 10 to achieve
-       decent response.
-
 BSDI, FreeBSD:
-       The BSDI library code is not safely re-entrant
-       when used in combination with signals, so no
-       signals are sent during server usage.  This is
-       transparent to the user.
-
-       MiniVend may not as of this writing work with
-       BSDI 3.0 in UNIX mode, so you should use the INET
-       mode and the tlink program. This is the catalog
-       configurator default.
+       If installing as root, you should use this procedure:
 
-       If the kernel parameter CHILD_MAX is not configured
-       above the default of 40, expect problems. Same with
-       SO_MAXCONN and some other kernel parameters. 
-
-Solaris:
-       It is STRONGLY RECOMMENDED that you update to Perl 5.005
-       when running on Solaris.
+                  perl Makefile.PL PREFIX=/usr/local/minivend
 
 Windows:
        Just a few things don't work the same as UNIX. See the
@@ -304,7 +235,7 @@ Windows:
 ---------------------------------------------------------------------
 
 I, the author, am very interested in learning your problems with
-MiniVend, and am interested in clarifying the documentation for
+Minivend, and am interested in clarifying the documentation for
 future improvements.  I am not much interested in BEING your
 documentation, though, unless you pay well and promptly. Please
 send kudos, comments, questions, and complaints to:
@@ -316,5 +247,10 @@ answer them all. The more research you do on your own the more likely
 I am to respond. Helpful suggestions and real bug reports are almost
 always acknowledged.
 
-Good luck with MiniVend!
+There is an active user support mail list, minivend-users@minivend.com,
+which has traffic of about 600-900 messages per month. To subscribe,
+send "subscribe minivend-users" in the *body* of a message to
+majordomo@minivend.com, or visit the mail list page at www.minivend.com.
+
+Good luck with Minivend!
 
diff --git a/README-win.txt b/README-win.txt
deleted file mode 100644 (file)
index b3793f5..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-# MiniVend V3.15
-# 
-# Copyright 1996-1998 by Michael J. Heins <mikeh@iac.net>
-#
-# Largely based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--------------------------------------------------------------
-          M I N I V E N D   O N   W I N D O W S
-
-    System Requirements:
-
-        * Windows 95, 98 or Windows NT. Tested on Windows 95 OSR2.
-
-        * Perl 5.004 for Win32 or higher -- accept no substitutes. THIS
-          PROGRAM WILL RUN ON NO EARLIER VERSION OF PERL. PERIOD.  It
-          will not run on the ActiveState port build 3xx series; it
-          does appear to run very well with the "Merge" of the build
-          500 series. The version you probably want is also variously
-          known as the "CORE", "Standard", or "Gurusamy Sarathy" version.
-
-        * Web server. Almost any that has CGI capability
-          should work. Tested on Microsoft Personal Web Server,
-          NT IIS, and OmniHTTPD.
-
-        * Memory, memory, memory -- best guess is that things
-          will not run well on less than 32 MB of RAM, but your
-          mileage may vary. I don't trust the Windows system
-          performance indicator, as it indicates 86% free RAM on
-          my machine with 32M while MiniVend is running. I find
-          it hard to believe. That is the smallest RAM machine
-          I have, and MV ran fine on it -- it is a 486DX/100.
-
-    IMPORTANT NOTE:
-
-        If you use the Windows notepad or other editor which
-        willy-nilly adds carriage returns, and you edit
-        configuration files that may contain Perl code, or
-        that use EOF markers, or have data, you may have to
-        remove carriage returns before running MiniVend. If
-        you have problems, perform the following commands from the
-        DOS prompt:
-
-            perl -npi.bak -e "s:\r::g" <file-you-edited>
-
-        The error "illegal character \015" would be an indication
-        of this problem.
-
-        There are also reports that using DOS edit causes problems
-        with profiles.
-
-    Prior to Installation:
-
-       1. Make sure Perl 5.004 is fully installed. Perl 5.004
-          is mandatory -- you can get it at:
-
-             http://www.perl.com/CPAN/ports/win32/Standard/x86/
-
-          A list of CPAN sites is always available at:
-
-             http://www.perl.com/CPAN
-
-       2. From the same place you obtained Perl 5.004, get the
-          DB_File module, latest version of which is 1.54
-          at this writing. Install it according to the 
-          instructions in the README.NOW file.
-
-          If you have the ActiveState Perl 5.005, it should
-          work OK once you use the PPM (find it in your 
-          /perl/5.005XX/bin/ppm.pl) and get the following
-          modules:
-            
-                DB_File
-                MIME-Base64
-                libwww
-
-          The last two are to allow the new internal HTTP
-          server to work and provide a semi-GUI installation.
-
-          MiniVend might run without OK without DB_File, but
-          the user database will not be persistent and there
-          will be other anomalies.
-
-       3. Obtain and install BLAT if you wish to 
-          send emailed orders.
-
-            http://gepasi.dbs.aber.ac.uk/softw/Blat.html
-
-          Adjust the catalog.cfg parameter SendMailProgram
-          according to the path that you install it at -- MiniVend
-          should find it if it is in your path, and append the
-          right options. An example of a SendMailProgram:
-
-          SendMailProgram  blat - -t
-
-          (You must run 'blat -install' before it will work. Try
-          testing blat from the command line if your order is
-          not sent.)
-  
-    Installation:
-
-    1. Download the minivend-3.15.exe distribution file
-    and run it in the normal Windows fashion.
-    
-    ( If you don't want to execute the self-extracting ZIP file,
-      then you can obtain the standard minivend-3.15.tar.gz file and
-      install that instead. )
-      
-      You will have to obtain the CYGWIN.DLL file if you want to
-      use TLINK.EXE as your link CGI. The standard distribution .EXE
-      file has it included -- the minivend-3.15-nodll.exe file
-      eliminates it.
-
-    2. Select a directory to install MiniVend in -- it defaults
-    to /mvend on the default hard drive but you may put it anywhere.
-
-    3. You will need to know where your Web document root and
-    CGI directories are located.  The defaults are set for
-    Microsoft personal web server.
-
-    4. If your catalog is for testing purposes, you can
-    use the server name "127.0.0.1". If you want the catalog
-    to be accessible from the outside world, you will have
-    to enter a valid IP address or server name.
-
-    5. MiniVend will run as a service if you set it up with
-    srvany.exe or a similar program. Because the server
-    is single-tasked, it is recommended that you set up
-    a system agent to shut down the MV server, expire the
-    session database, and restart at least once per day.
-    (Expiration will always be needed to prevent the DBM files
-    or session directories from getting too big, and possible
-    memory leaks in Safe.pm make this a good idea anyway.)
-
-    6. Be careful of long-running searches -- because the server
-    will not handle multiple simultaneous requests as it does
-    on UNIX, searches will hold off user access. It is recommended
-    that you break your results pages into small (less than the
-    default 50-result) chunks by setting mv_matchlimit.
-
--------------------------------------------------------------
-
-            W I N D O W S   D I F F E R E N C E S
-
-      * ODBC works fine, but you will need to have the
-        DBI::ODBC module properly installed. DBI also works
-        with MS SQL Server according to user reports.
-
-      * No fork() on Windows means that only one server
-        can run at a time. This means multiple requests
-        will be queued. In any case, lack of file locking
-        would mean big problems for multiple servers. Perl's
-        threading is too experimental to do the work required
-        to make MV thread-safe.
-
-      * Since the server runs in the foreground, if you change
-        global variables in your embedded Perl you must be careful
-        to reset them. In particular, the FRAMES version of the 
-        3.15 demo will not work correctly.
-
-      * Some of the support scripts will not work, and some
-        might not behave as in the documentation. In particular,
-        the expire script must not be run while the server
-        is running, as no file locking is available.
-
-      * You will need to hit Ctrl-C twice to stop the server
-        with some ports of Perl. If you can't stop the server,
-        close the DOS box.
-
-      * Memory leaks in the Safe.pm module may mean that
-        you will need to restart the server due to running
-        out of memory. It is recommended that you shutdown
-        and restart at least once a day.
-
diff --git a/README.OS b/README.OS
deleted file mode 100644 (file)
index b183ac1..0000000
--- a/README.OS
+++ /dev/null
@@ -1,93 +0,0 @@
-# MiniVend V3.15
-# 
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
-#
-
-                   M I S C E L L A N E O U S
-                         O S   N O T E S
-
-
-Operating   Recommended
-System          DBM      Tested on     Notes
---------   -------------------------  -----------------------
-Linux         GDBM       2.0.x & up    This is what MiniVend is
-                                       developed on -- all features
-                                       should work normally provided
-                                                                          you have a good Perl. The
-                                                                          best thing to do is install
-                                                                          Perl 5.005 *without removing
-                                                                          any RPM packages*.
-                                                                         
-
-    IMPORTANT NOTE FOR REDHAT 5.0:
-    If MiniVend fails "make test" this usually means that the POSIX
-    library is broken on the distributed Perl. You should update
-    Perl.
-
-       And RedHat 5.1 and earlier have *gaping* security holes,
-       so you should update your operating system.
-
-Windows 9x    DB_File    ?????         MiniVend may not stand up
-                                       well for high-use
-                                       catalogs. Some features
-                                       cannot be used because
-                                       of foreground operation;
-                                       for instance modifying
-                                       $Safe{config}.
-
-
-Windows NT    DB_File    ?????         Some features of MiniVend
-                                       will not work, mostly in
-                                       support scripts. MiniVend
-                                       will run as a service.
-                                       Some features cannot be
-                                       used because of foreground
-                                       operation; for instance
-                                       modifying $Safe{config}.
-
-
-FreeBSD       DB_File     all          Many users run MiniVend on
-                                       this OS. You need Perl 5.004,
-                                       which not all BSD distributions
-                                       provide (some have Perl 4 as
-                                       the default Perl!).
-
-BSDI          DB_File     all          Many users run MiniVend on
-                                       this OS. You need Perl 5.004,
-                                       which not all BSD distributions
-                                       provide (some have Perl 4 as
-                                       the default Perl!).
-
-Solaris 2     GDBM       2.x           Many users run MiniVend on
-                                       this OS, no known problems.
-                                       Problems with installation
-                                       are usually due to poor or
-                                       missing development tools.
-
-SunOS 4.1.x   DB_File    4.1.x         Has been known to run on
-                                       this OS, no known problems.
-
-
-DEC/OSF, aka  GDBM       3.0           Some users run MiniVend on
-Digital UNIX                           this OS, no known problems.
-                                       
-
-IRIX          GDBM       5.3,6.2       Server may be difficult to
-                                       stop for re-configuration,
-                                       setting HouseKeeping value to
-                                       10 or less is recommended. 
-                                       Some reports of "zombie"
-                                       processes probably due to
-                                       signal handler problems.
-
-HP/UX          -         10.1          A few users, may be some
-                                       trouble with vlink/tlink
-                                       compilation.
-
-SCO            -         3.2           Should work fine as of MV3.05
-
-AIX            -         4.1           Reported to work with little
-                                       difficulty
-
-UNIXware       -         2.1           Should work fine as of MV3.05
-
diff --git a/UPGRADE b/UPGRADE
deleted file mode 100644 (file)
index 514cc89..0000000
--- a/UPGRADE
+++ /dev/null
@@ -1,138 +0,0 @@
-
-          U P G R A D I N G   F R O M  3 . 0 x
-
->>>>> MINIVEND 3.15 notes for compatibilty
-
-#############################################
-IMPORTANT NOTE
-
-If you use named parameters in [if ...] tags, of the 
-form:
-
-       [if type=!data term="something" op=!= compare=whatever]
-               something
-       [if]
-
-you MUST NOW QUOTE the ! character. This was always intended
-but is now enforced. You must do instead:
-
-       [if type="!data" term="something" op="!=" compare=whatever]
-               something
-       [if]
-
-Basically, it follows the HTML specification for quoting. If
-you have only the word characters [A-Za-z0-9_] you don't need
-to quote, but otherwise you should.
-
-On UNIX systems, you can find most non-conforming pages by changing
-to your catalog directory and running:
-
-       find . -type f | xargs grep -l '[A-Za-z][A-Za-z][A-Za-z]=\!'
-
-END IMPORTANT NOTE
-#############################################
-
-New to 3.15 that could cause problems for longtime users:
-
-    * If you have an old system that has been relying on the
-         "products" database being pre-defined, you must either
-         define it in catalog.cfg:
-
-                       Database products products.asc DEFAULT
-
-         or change the global directive "Legacy" to yes in directive
-         in minivend.cfg.
-
->>>>> General compatibility notes for earlier versions of MiniVend
-
-You should normally be able to simply install over the current software and
-then restart the server.  The only incompatible changes are bug fixes (which
-may fool any workarounds you have made), and these:
-
-    * The TcpHost directive was accidentally disabled at Version
-      3.08 and has been reenabled. If you use tlink, you may find
-      that MiniVend won't accept a connection from a machine besides
-      "localhost". The global error.log file should give you the 
-      information you need to set TcpHost to a value that will
-      allow connections.
-
-    * The UserDB add-on is now a full feature and is integrated into
-      MiniVend. While older calls with mv_subroutine will
-      still work if you keep your userdb.cfg file intact, you
-      are STRONGLY ENCOURAGED to use the new implementation. It
-      is much better anyway.
-
-    * A [loop search=...] now always returns a newline
-      as the last character. This may cause a problem with
-      some of the old demo checkout pages in the shipping
-      area. The solution is to set "lr=yes" in the
-      search specification.
-
-    * One gotcha has to do with the [page scan/se=whatever] tag
-      in NewTags mode. You should change it to the proper
-      [page scan se=whatever].
-
-    * DescriptionTrim is gone -- no biggie. 8-) If you did by
-      some very strange chance use this, you will have to set a
-      separate short description field.
-
-The "simple" demo runs mostly unchanged from MiniVend 3.01 to 3.15
-provided you don't try to mix versions of the demo pages. The usual source
-of any upgrade problems is illegal syntax in tags, which might work on
-earlier versions but is rejected in later, stricter versions. Especially
-check nested [if ...] tags -- some problems can be solved by putting a
-[then] [/then] around the true-executed condition.
-
-IMPORTANT NOTE:  It is highly recommended that you copy the current software to
-a backup directory or an archive in case there is a problem and you wish to
-return to the earlier version.
-
-IMPORTANT NOTE:  If you haven't changed over from [old] to NewTags, you
-should do so now or make this the last version of MiniVend you ever use.
-You certainly won't get any on-target support from the mail list. 8-)
-
-See the file WHATSNEW for more information.
-
-             U P G R A D I N G   F R O M  2 . 0 3
-
-There are a few "gotchas" for 2.0x upgrades:
-
-    * If you have not changed the PriceBreaks directive from
-      the demo (you should disable it unless you are actually
-      using quantity pricing) you will get a message in the
-      error log that "no pricing database is defined". If you
-      are using quantity pricing, you will have to set it up
-      as a database with at least the fields "sku" and "price"
-      by placing those words on the first line, separated by
-      a TAB -- and your pricing must be separated from the 
-      part number by a TAB as well.
-
-    * The CheckoutFrame, OrderFrame, SearchFrame, and any
-      other frame settings are now empty by default. If you
-      use frames, you must explicitly define those directives.
-
-    * Perl 5.002 will not work with MiniVend 3.0, and you
-      must update.
-
-    * The Cookies directive is now enabled by default.
-
-    * If you have produced a custom catalog template for use
-      by the makecat program, you cannot place two directives
-      directly after one another.  An example is the 
-      VendURL definition of '__MVC_SERVERNAME__MVC_CGIURL'.
-      That now must be '__MVC_SERVERNAME____MVC_CGIURL__' 
-      which places underscores around the entire name of the
-      substitution target.
-
-    * If you are still using the old-style report with $variable
-      substitution, you must define the NewReport directive to 'No'.
-
-    * If you use the 'f' formula shipping type in shipping.asc, you
-      must either replace the 'x' that was used for the substitution
-      of the total to @@TOTAL@@, or you must set the OldShipping 
-      to Yes.  The change to the shipping.asc file is recommended,
-      as without it you will not be able to use the new shipping
-      features of MiniVend.
-
--------------------------------------------------------------
-
diff --git a/WHATSNEW b/WHATSNEW
new file mode 100644 (file)
index 0000000..434ff22
--- /dev/null
+++ b/WHATSNEW
@@ -0,0 +1,468 @@
+
+
+                  W H A T ' S   N E W 
+
+Everything. Well, not completely -- many MiniVend 3.x catalogs can
+run with few changes, but there will be changes.
+
+MiniVend 4.0 is a major rewrite that restructures many things.
+
+Minivend-4.0alpha12: 
+
+               -- added [banner ...]  tag to replace random/rotate,
+                  includes complete documentation
+               -- Glimpse works again.
+
+Major new features are almost too many to mention, read the documentation
+for the most complete description. Some highlights:
+
+* All lists are the same. The basic code for all lists is common, meaning
+  that the days of [sql-param ...] and [item-param ...] being different
+  are over.
+
+* All lists can have any prefix. This means that you can do:
+
+       [loop prefix=item list="99-102 00-0011a"]
+       [item-code] [item-field price]
+       [/loop]
+
+               or 
+
+       [loop prefix=color list="[item-accessories options, color"]
+       [color-code] [color-data colors name]
+       [/loop]
+       
+* All databases can do basic SQL queries, even MiniVend ones. These
+  three will/should work much the same on any MiniVend database type:
+
+       [query sql="delete from inventory where code = '[item-code]'"]
+       [/query]
+
+       [query sql="insert into inventory ('[item-code]', '[value new_number]'"]
+       [/query]
+
+       [query sql="update inventory set qty = '[value new_number]'
+                               where code = '[item-code]']
+       [/query]
+
+       [query sql="select * from products"]
+       [/query]
+
+  All lists can have a [more-list], can be limited by mv_matchlimit, etc.
+
+* You can save queries to a variable space and then call them in code:
+
+       [query sql="select * from products" hashref=prod_table][/query]
+       [perl]
+               $products = $Query->{prod_table};
+               $mona_code = '00-0001';
+               foreach $ref (@$products) {
+                       $artist = $ref->{artist}, last
+                               if $ref->{code} eq $mona_code;
+               }
+               return "The Mona Lisa's artist is: " . $artist;
+       [/perl]
+
+* All databases and session-variable setting/reading parameters have a
+powerful cascading filter capability.
+
+       [data   table=products
+                       col=artist
+                       key=00-341] returns:      VAN GOGH, Vincent
+
+       [data   table=products
+                       col=artist
+                       key=00-341
+                       filter="name namecase"
+                       ] returns:      Vincent Van Gogh
+
+       [data   table=products
+               col=artist_formatted
+                       key=00-341
+                       filter="name namecase"
+                       value"VAN GOGH, Vincent"
+                       ] stores:      Vincent Van Gogh
+
+The same thing works for [value ...], [cgi ...], etc. As well as
+for certain SQL query situations.
+       
+* Many new configuration prodedure capabilities:
+       
+       - #ifdef and #ifndef on Variable values
+       - #include files now included at point of entry instead of at
+         end of process
+       - attach subroutines to configuration settings with Tie::Watch
+       - Set directives with code, also using Tie::Watch
+       - Require directive ensures that GlobalSub and global UserTag entries
+         are present when moving a catalog
+
+* A new ASP-style syntax is supported:
+
+        <HTML MV=mvasp><BODY>This is HTML</BODY>
+        <%
+            $Document->write('This is code');
+        %>
+        HTML again.
+        <%
+            $Document->write('Code again.');
+        %>
+
+* A new Perl object set is consistent in all areas.
+
+       [perl]
+               $Document->write("Your name is $Values->{name}");
+       [/perl]
+
+       and 
+
+       [calc]
+               $Document->write("Your name is $Values->{name}");
+       [/calc]
+
+
+  are the same, as is:
+
+  ActionMap  your_name <<EOR
+  sub {
+               $Document->write("Your name is $Values->{name}");
+               return;
+  }
+  EOR
+
+  Objects supported are:
+
+               $CGI->{key}              Hash reference to raw submitted values
+               $CGI_array->{key}        Hash reference to array submitted values
+               %Db                      Hash of available database tables
+               $DbSearch->method({})    Do searches in your code
+               $Document->write()       Writes to page
+               $Carts->{cartname}       Direct reference to shopping carts
+               $Config->{key}           Direct reference to $Vend::Cfg
+               $Scratch->{key}          Direct reference to scratch area
+               $Session->{key}          Direct reference to session area
+               %SQL                     Hash of available DBI database handles
+               $Tag->tagname(@args)     Call a tag as a routine (UserTag too!)
+               $Tag->tagname({ %args }) Call with hash-style naming too!
+               $TextSearch->method({})  Do searches in your code
+               $Values->{key}           Direct reference to user form values
+               &Log($msg)               Log to the error log
+               HTML $msg                Synonym for $Document->write($msg)
+
+* The search engine has been extensively reworked.
+
+       -- Word matching should be much more predictable
+       -- You can do grouping of search specifications
+
+  Glimpse is not yet integrated.
+
+* Tag parameters quoted with parameter=`code` are the equivalent of 
+  parameter="[calc]code[/calc]". They can be subroutine calls, too.
+
+* Tag parameters can be quoted with | to strip whitespace:
+
+       [page  href=|
+                               [value name="whatever"]
+                               |]
+
+       is equivalent to 
+
+       [page  href="[value name="whatever"]"]
+
+*  Filters can be created with Filter directive
+   and/or [input-filter name=var op="uc"][/input-filter]
+
+         uc          UPPER CASE 
+         lc          lower case 
+         digits      only digits
+         word        only A-Z a-z _ 0-9
+         urlencode   space becomes %20
+         entities    < becomes &lt;
+         strip       strip leading/trailing whitespace
+         no_white    strip all whitespace
+         gate        set to blank unless scratch variable
+                                  with same name is non-blank
+         n           (where n is an integer) length limit
+         remove      delete existing filter (if any)
+
+* Filter directive allows filtering of certain CGI variables
+  for input conditioning; this is not session dependent and
+  automatically operates on any iteration of the variable...
+
+       Filter  phone  digits 10
+
+  That removes all non-digit values from the variable "phone",
+  then limits length to 10. Any session-based filters are applied
+  after this one.
+
+* [input-filter name=foo] CODE [/input-filter]
+
+  Sets a routine passed to the equivalent of a "[calc]" tag.
+  The value to be filtered is placed in the variable "$mv_filter_value",
+  and the name is set to "$mv_filter_name". It is possible to
+  do something like:
+
+         [input-filter name=country tables=country]
+               my $val = $mv_filter_value;
+               my $prospect = &tag_data('country', 'name', $val);
+               return $prospect || $val;
+         [/input-filter]
+
+  That will return the name of a country if it is found as a key
+  in the database (assuming the simple demo country definitions).
+  The tables=country directive is necessary to prepare the database
+  for access this early in the process.
+
+* Major improvements in the parser, notably optimization when
+  [pragma no_html_parse] and/or positional parameters are used.
+
+* ECML is supported via the Vend::ECML module. To map the 
+  checkout form values from MiniVend UserDB names, with an [ecml ...]
+  tag:
+
+               [ecml state]
+
+  is equivalent to:
+
+               <INPUT TYPE=text
+                          VALUE="[value state]"
+                          NAME=Ecom_ShipTo_Postal_StateProv
+                          SIZE=2>
+
+* The [price] tag now supports pricing with attributes (size/color etc.).
+  If you do
+
+               [price code=99-102 size=XL color=RED]
+               [price code=99-102 size=L color=RED]
+               [price code=99-102 size=L color=BLUE]
+
+  in the demo, this will demonstrate it.
+
+* The idiom:
+       
+        #include directory/*
+
+  now is supported (and used in the demo minivend.cfg file). This
+  includes all files in that directory (but not subdirectories)
+  and allows you to include the whole directory. It should make
+  maintaining multiple servers a bit easier.
+
+* Items can now be ordered "on-the-fly" in the standard
+  distribution by adding mv_order_fly.
+
+* Added form-remap based on catalog script-name (too early for
+  other methods). In minivend.cfg:
+
+               FormRemap  /cgi-bin/simple  code mv_order_item
+               FormRemap  /cgi-bin/simple  item mv_order_fly 
+
+* Made some major changes in the demo. Notably, MySQL should install
+  out of the box.
+
+* Makecat now strips quotes from Apache parameters read from
+  httpd.conf file.
+
+* Added Tagref.pm module which can document the implementation
+  of even UserTags. Add this to minivend.cfg to print one
+  to a MiniVend page:
+
+       UserTag tag-reference Routine <<EOR
+       sub {
+               require Vend::Tagref;
+               open (TAGREF, ">mv_tagref.pod");
+               my $reference = Vend::Tagref::tag_reference();
+               print TAGREF $reference;
+               close TAGREF;
+               my $out =  `pod2html mv_tagref.pod`;
+               if(! $out) {
+                        $Vend::StatusLine = "Content-Type: text/plain\r\n";
+                       $out = $reference;
+               }
+               return $out;
+       }
+       EOR
+
+* Removed all dependencies on ProductsFiles containing 'products'.
+
+* Complete internationalization of error messages via Locale,
+  sample locale.error file included.
+
+* Added Legacy directive to minivend.cfg to support older
+  catalogs that don't define "products" database.
+
+* Catalog directive can now be specfied as:
+
+       Catalog simple
+       Catalog simple dir    /home/minivend/simple
+       Catalog simple script /cgi-bin/simple
+       Catalog simple alias  /secure-bin/simple
+       Catalog simple alias  /simple
+       
+  Most importantly, certain global directives can be 
+  set on a catalog basis:
+
+       Catalog simple directive ErrorFile /var/log/minivend/simple.log
+
+* The [more-list] tag now accepts a [decade-next][/decade-next] and
+  [decade-prev][/decade-prev] setting to break match lists into groups
+  of 10 pages. Alternatively, the search setting mv_more_decade can be
+  set true (two-letter equivalent is md=1) then you need not provide
+  the [decade-next] tag. Actually "decade" is a tad deceiving, for if 
+  mv_more_decade (or md=) is set to an integer greater than 1,
+  that is the number of pages that will be grouped.
+
+=head2 AutoModifier
+
+Sets an attribute in a shopping cart entry to the field of the same name
+in the ProductsFile pertaining to this item.
+
+This is useful when doing shipping calculations or other embedded Perl
+that is based on item attributes. To set whether an item is defined as
+"heavy" and requires truck shipment, you can do:
+
+       AutoModifier  heavy
+
+When an item is added to the shopping cart using MiniVend's routines, the
+C<heavy> attribute will be set to the value of the C<heavy> field in
+the products database. In the default demo that would be C<products>; any
+changes to C<ProductFiles> would affect that, of course.
+
+* Syslog error logging (global only) is supported via the
+  global SysLog directive.
+
+       Syslog  command  /usr/bin/logger
+       Syslog  tag      mv1
+       Syslog  alert    local3.warn
+       Syslog  warn     local3.info
+       Syslog  info     local3.info
+
+  This would cause global errors to be logged with the command:
+
+               /usr/bin/logger -t mv1 -p local3.alert
+
+  and cause system log entries something like:
+
+       Oct 26 17:30:11 bill mv1: Config 'co' at server startup 
+       Oct 26 17:30:11 bill mv1: Config 'homefn' at server startup 
+       Oct 26 17:30:11 bill mv1: Config 'simple' at server startup 
+       Oct 26 17:30:11 bill mv1: Config 'test' at server startup 
+       Oct 26 17:30:13 bill mv1: START server (2345) (INET and UNIX) 
+
+  This facility is alpha and is subject to change. Of course you can
+  wrap your own wrapper around it to get it to behave how you want.
+
+* Added Scratch variable mv_data_enable to gate the update_data 
+  function; prior to this it was possible to update a database
+  willy-nilly.
+
+* Many bug fixes, of course. Notably [and ...] and [or ..]
+  were broken in some cases.
+
+* "Message" directive allows you to display messages at startup, both
+  global and catalog.
+
+REMOVAL
+
+Many things were removed as redundant, deprecated, or just plain 
+crufty:
+
+* All frame features removed, frames are managed by the user in HTML.
+
+* Tags removed:
+
+buttonbar       Replace with Variable.
+random          Replace with [ad random=1] or custom code
+rotate          Replace with [ad ...]
+help            No replacement
+body            Replace with templates
+finish_order    No replacement
+last_page       No replacement
+item-link       No replacement, just use [page [item-code]]
+loop-link       No replacement, just use [page [loop-code]]
+sql-link        No replacement, just use [page [sql-code]]
+accessories     Replace with normal data functions
+
+* Compatibility routines for many popular tags like [random], [rotate], etc.
+are provided in the compat/ directory.  To use, include the files in minivend.cfg:
+
+       #include compat/*
+
+* Directives removed:
+
+       ActionMap
+       AdminDatabase
+       AdminPage
+       AsciiBackend
+       BackendOrder
+       ButtonBars
+       CheckoutFrame
+       CheckoutPage
+       CollectData
+       DataDir
+       Delimiter
+       DescriptionTrim
+       FieldDelimiter
+       FrameFlyPage
+       FrameLinkDir
+       FrameOrderPage
+       FrameSearchPage
+       ItemLinkDir
+       ItemLinkValue
+       MsqlDB
+       MsqlProducts
+       Mv_AlinkColor
+       Mv_Background
+       Mv_BgColor
+       Mv_LinkColor
+       Mv_TextColor
+       Mv_VlinkColor
+       NewReport
+       NewTags
+       OldShipping
+       OrderFrame
+       PageCache
+       PriceDatabase
+       Random
+       ReceiptPage
+       RecordDelimiter
+       ReportIgnore
+       Rotate
+       SearchFrame
+       SearchOverMsg
+       SecureOrderMsg
+       SpecialFile
+       SubArgs
+       Tracking
+
+* Minor operations removed:
+
+       - auto-substitution of mp= on [loop search=profile],
+         [search-region arg=profile]
+       - [tag scan]...
+       - [tag sql]...
+
+Many of these are related to one of:
+
+       * Removal of frames logic
+       * Removed tags
+       * Obsolete methods
+       * Old routines for 2.0x compatibility
+
+----------------------------
+UPGRADING from MiniVend 3
+
+Form Data updates:
+
+       * Added Scratch variable mv_data_enable to gate the update_data 
+         function; prior to this it was possible to update a database
+         willy-nilly. Do:
+
+                       [set update_database]
+                       [if type=data term="userdb::trusted::[data session username]"]
+                               [set mv_data_enable]1[/set]
+                       [else]
+                               [set mv_data_enable]0[/set]
+                       [/else]
+                       [/if]
+                       [/set]
+                       <INPUT TYPE=hidden NAME=mv_click VALUE=update_database>
+
old mode 100644 (file)
new mode 100755 (executable)
index 2ce133d..fe874ec
--- a/configure
+++ b/configure
@@ -2,11 +2,11 @@
 
 cat <<EOF
 
- MiniVend Version 3.0x Configuration
+ MiniVend Version 4.0x Configuration
 
- Copyright 1996-1998 Michael J. Heins, <mikeh@minivend.com>
+ Copyright 1996-2000 Michael J. Heins, <mikeh@minivend.com>
 
- MiniVend is largely based on Vend 0.2
+ MiniVend was originally based on Vend 0.2
  Copyright 1995 Andrew M. Wilcox <awilcox@maine.com>
  
  Portions from Vend 0.3
@@ -100,11 +100,6 @@ echo "should go away."
 echo
 fi
 
-if test -f dist/minivend.cfg.dist
-then
-       $PERL Makefile.PL
-       make
-       make test && make install
-else
-       $PERL ./configure.pl $DEBUG $INSTALL $PERL
-fi
+$PERL Makefile.PL
+make
+make test && make install
diff --git a/configure.bat b/configure.bat
deleted file mode 100644 (file)
index 237edb8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-@echo off
-perl Makefile.PL
-configure2
-echo If you got a bad command or filename message, this means you
-echo do not have Perl in your PATH (or maybe even installed on your
-echo machine).  See www.perl.com for information.
-echo ------------------------------------------------------------
-echo IF YOU DO HAVE PERL 5.004 installed,
-echo unzip the file to a directory and try:
-echo ------------------------------------------------------------
-echo    cd minivend-3.15
-echo    c:\perl\bin\perl Makefile.PL
diff --git a/configure.htm b/configure.htm
deleted file mode 100644 (file)
index c83c712..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<HTML><HEAD>
-<TITLE>MiniVend Administration</TITLE>
-</HEAD>
-<BODY BGCOLOR="#C0C0C0">
-
-<H1>MiniVend Startup</H1>
-
-<I>(Wait until the MiniVend server starts...could take several seconds.)</I><BR><BR><BR>
-<A HREF="http://localhost:7786/mv_admin/makecat_step1">Make a new catalog</A></B><BR><BR>
-
-</BODY>
-</HTML>
diff --git a/dist/README b/dist/README
deleted file mode 100644 (file)
index 5b9f6b6..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-# MiniVend V3.15
-# 
-# Copyright 1996-1998 by Michael J. Heins <mikeh@minivend.com>
-#
-# Based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later
-# version. 
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program; if not, write to the Free
-# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
-# USA.
-
-Welcome to MiniVend, originally based on Vend.  This program is
-completely unsupported, without warranty of any kind. The author is
-interested in problems, suggestions, or comments, but does not have time
-to offer free individual support in most cases. See the MiniVend website at
-http://www.minivend.com/minivend/ for more information.
-
-   IMPORTANT NOTE:  MiniVend 3.15 requires Perl 5.004 or higher.
-   (It will probably work with 5.003 on some UNIX systems and *may*
-   work with Perl 5.002 -- IF you comment out any lines which 
-   contain "use locale;". Neither are supported.)
-
-The information you need is in the following files:
-
-    README     Copyright info, roadmap to installation
-               and pointers to support system
-    
-    Copying    Your MiniVend license -- please read.
-
-    INSTALL    Installation instructions
-
-    README.OS  OS-specific information, if any
-
-    doc/       The MiniVend documentation.
-
-    WHATSNEW   Change information for all versions in this
-               version family.
-
-    MANIFEST   List of all core distribution files.
-    
-Major files/directories in the distribution:
-
-    configure
-    configure.bat
-    Makefile.PL The installation scripts. Try typing "./configure"
-                or "configure" to install.
-
-    dist/       The distribution files, exclusive of library
-                modules. Includes:
-
-                minivend.cfg.dist   Distribution minivend.cfg
-                simple/             The simple demo application.
-                bin/                Executables including scripts
-                src/                C and Perl code for CGI links
-
-    doc/        The documentation.
-
-    lib/        The library modules needed to run MiniVend.
-                 
-    win/        Windows-specific files
-            
---------------------------------------------------------------
-
-                        M I N I V E N D
-                                       
-   MiniVend is a full-featured electronic catalog system (commonly known
-   as a shopping cart) with online ordering capability. It is designed to
-   provide an interface complete with SSL security and full database
-   support.
-   
-   MiniVend is freely-redistributable under the GNU General Public
-   License -- you can download it via FTP.
-
-    MiniVend 3.0 Features
-
-       * Users maintain a "shopping cart" for ordered items
-       * Multiple independent or shared catalogs allow one server
-         to run many storefronts or a "mall"
-       * SSL support means secure and practical credit card ordering
-       * PGP support for secure off-site mailing of orders
-       * Catalogs can be of almost unlimited size with excellent
-         performance
-       * Multi-server mode for very high capacity on systems with
-         sufficient memory
-       * Cookie support allows browsers to leave catalog and come
-         back without losing session state
-       * Complete addressable database support with virtually
-         unlimited rows and columns
-       * Complete SQL support including ODBC
-       * Many, many, other features
-
-    Powerful search capability
-
-       * One-click scan and search -- build a whole search in a single HREF
-       * Versatile built-in text search
-       * Complete Glimpse interface
-       * Fast binary search
-       * Range searching, numeric and alphanumeric
-       * Search sorting with reverse, numeric and case-insensitive options
-       * Independent field search selection and return
-       * Search any file, build results from any database
-
-    Complete control of appearance
-
-       * Full frames support
-       * Catalog pages automatically selected -- either built
-         "on the fly" from the database or pre-made for popular items
-       * The on-the-fly page is selectable from the database
-       * Embedded Perl and conditional HTML allow complex and
-         flexible catalog pages to be completely built from
-         the database
-
-    Flexible Ordering Process
-
-        * Multi-level order screens with configurable field
-          verification
-        * Multiple shopping carts per catalog, allows both buy
-          and sell operations
-        * Shipping calculation, mixed modes, with UPS table lookup
-        * Sales tax calculation, with fully independent non-taxable
-          item and taxed shipping
-        * PGP encryption of credit card information or
-          the entire emailed order
-        * Fully-configurable discounts with coupons or
-          across-the-board discounts
-        * Fully-configurable quantity pricing
-        * Fully-configurable item price adjustments
-        * Sophisticated back end order entry capability including CyberCash(R)
-        * Full client-side imagemap support, including frame targets and form
-          submits
-        * Fully configurable order reports and receipts
-
-    Easy Administration
-
-        * Automated installation and configuration
-        * Runs under Perl 5.004, Windows, and almost any UNIX
-        * Designed to be secure
-        * Offline database builds
-        * Static page build option for high performance
-        * Works well with all browsers
-
-
--------------------------------------------------------------------
-
-                         D E M O
-
-There is a simple demo application included. 
-
-To install the demo, go to the MiniVend installation directory
-and run:
-
-    bin/makecat simple
-
-Follow the prompts and after restarting the MiniVend server you
-should be able to access the demo catalogs.
-
--------------------------------------------------------------------
-
-                      A V A I L A B I L I T Y
-                              A N D
-                     C O M P A T I B I L I T Y
-
-MiniVend has been well-tested on Solaris 2, SunOS, Linux, HP-UX,
-BSDI, FreeBSD, and OSF/Alpha. It also reportedly runs on SCO,
-AIX, and other Unix ports.  It should work on any UNIX or Win32
-OS with Perl 5.004 or higher. It may run with Perl 5.003 or
-Perl 5.002, but the author disavows all responsibility for
-the results.
-
-IMPORTANT NOTE FOR WINDOWS: MiniVend will NOT run with the
-ActiveState port, otherwise known as 5.003 build 1XX. It
-REQUIRES, repeat REQUIRES, the standard version Perl 5.004. See
-http://www.perl.com/ for information on how to obtain it.
-
-Windows does not support fork(), so the server runs in the
-foreground. You need the DB_File module for best results,
-and that is not included in the standard distribution. You can
-get it at http://www.perl.com/CPAN-local (or any CPAN archive)
-in the ports/win32/Standard/x86/ directory.
-
-BSDI and FreeBSD are known to have problems with Perl socket
-code, which MiniVend relies heavily upon. You will probably
-need to run in INET/TLINK mode instead of UNIX/VLINK mode.
-
--------------------------------------------------------------
-
-                      I N S T A L L A T I O N
-
-WINDOWS INSTALLATION
---------------------
-
-    Obtain the self-extracting executable minivend-3.15.exe
-    and double-click on it. You MUST already have Perl 5.004
-    INSTALLED and in your PATH.
-
-    Alternatively, you can unzip the file yourself and run
-    "setup".
-
-UNIX INSTALLATION
-------------------
-Here is the short version:
-
-    gzip -dc minivend-3.15.tar.gz | tar xvf -
-    cd minivend-3.15
-    ./configure
-
-More information is in the file INSTALL.
-
--- WHEN IN DOUBT, RE-START THE SERVER.  It won't take but a few
-   seconds, and changes in configurable options don't take effect
-   until it is done. You may even change a page and not see the
-   effect until the server is restarted.
-
--------------------------------------------------------------
-
-                     D O C U M E N T A T I O N
-
-The documentation is in 2 files in the doc/ subdirectory of
-the main MiniVend directory:
-
-       toc.html       Table of contents
-       minivend.html  Main documentation file
-
-These files will be copied to the same HTML directory as
-the simple demo gateway files -- they would normally
-be referenced as:
-
-           http:/www.yourserver.com/simple/toc.html
-
--------------------------------------------------------------
-
-                    K N O W N   P R O B L E M S
-
-RedHat Linux 5.0:
-        RedHat Linux 5.0 has a bad Perl distribution that causes
-        problems with POSIX. The real solution is to obtain the
-        latest.tar.gz file from CPAN and build a new Perl. Here
-        is the script to do that once you have obtained the 
-        latest.tar.gz file:
-
-            tar xzf latest.tar.gz
-            cd perl5.004*
-            perl -pi.dist -e \
-                "s:/ bsd / /:/ net / /' | sed -e 's/ bsd / c g /:; \
-                s/^#(POSIX_cflags)/POSIX_cflags/" \
-                hints/linux.sh
-            ./Configure -des && make test
-
-        That should get you a Perl which passes make test
-        one hundred percent and that works with MiniVend and
-        other programs which use the POSIX library. After
-        you have verified the "make test" passes fully
-        you should of course su to root and "make install".
-
-        This may soon be corrected by the Perl porters or by
-        RedHat, so bear in mind this is time-sensitive. The above
-        works well as of Jun. 3, 1998.
-
-IRIX, Solaris, Digital UNIX:
-       The server may not terminate immediately,
-       as the select() call blocks signals. It
-       will stop at the next request, or at the
-       end of the occasional houskeeping
-       cycle, set by the directive HouseKeeping in
-       minivend.cfg. Set to less than 10 to achieve
-       decent response.
-
-BSDI, FreeBSD:
-       The BSDI library code is not safely re-entrant
-       when used in combination with signals, so no
-       signals are sent during server usage.  This is
-       transparent to the user.
-
-       MiniVend may not as of this writing work with
-       BSDI 3.0 in UNIX mode, so you should use the INET
-       mode and the tlink program. This is the catalog
-       configurator default.
-
-       If the kernel parameter CHILD_MAX is not configured
-       above the default of 40, expect problems. Same with
-       SO_MAXCONN and some other kernel parameters. 
-
-Solaris:
-       If you are trying to run with Perl 5.003, which is
-       NOT recommended, you must use the File::Lock
-       module -- flock() emulation in Perl 5.003 does not
-       work properly, and fcntl() locking must be used.
-       This version of MiniVend includes File::Lock,
-       and attempts to install it.
-
-       Solaris 2.4 has problems with UNIX-domain sockets
-       and you can expect problems.  Bottom line is that
-       I will not support Solaris releases before 2.5, nor
-       Perl before 5.004.
-
-       You may not use OrderCounter when running Perl
-       5.003 and Solaris.
-
-       If you have Perl 5.004 you can disregard File::Lock.
-
-       It is STRONGLY RECOMMENDED that you update to Perl 5.004
-       when running on Solaris.
-
-Windows:
-       This is a new port, and just a few things don't work the
-       same as UNIX. See the README-win.txt file for more information.
-
----------------------------------------------------------------------
-
-I, the author, am very interested in learning your problems with
-MiniVend, and am interested in clarifying the documentation for
-future improvements.  I am not much interested in BEING your
-documentation, though, unless you pay well and promptly. Please
-send kudos, comments, questions, and complaints to:
-
-       mikeh@minivend.com
-
-Note that I receive thousands of emailed questions per year and cannot
-answer them all. The more research you do on your own the more likely
-I am to respond. Helpful suggestions and real bug reports are almost
-always acknowledged.
-
-Good luck with MiniVend!
-
diff --git a/dist/README-win.txt b/dist/README-win.txt
deleted file mode 100644 (file)
index f1a0e4b..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-# MiniVend V3.15
-# 
-# Copyright 1996-1998 by Michael J. Heins <mikeh@iac.net>
-#
-# Largely based on Vend 0.2
-# Copyright 1995 by Andrew M. Wilcox
-#
-# Portions from Vend 0.3
-# Copyright 1995,1996 by Andrew M. Wilcox
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--------------------------------------------------------------
-          M I N I V E N D   O N   W I N D O W S
-
-    System Requirements:
-
-        * Windows 95 or Windows NT. Tested on Windows 95
-          and NT 4.0 workstation.
-
-        * Perl 5.004 for Win32 -- accept no substitutes. THIS
-          PROGRAM WILL RUN ON NO EARLIER VERSION OF PERL. PERIOD.  It
-          will not run on the ActiveState port build 3xx series;
-          it does appear to run very well with the "Merge" version. The
-          version you need is also variously known as the "CORE",
-          "Standard", or "Gurusamy Sarathy" version.
-
-        * Web server. Almost any that has CGI capability
-          should work. Tested on Microsoft Personal Web Server,
-          NT IIS, and OmniHTTPD.
-
-        * Memory, memory, memory -- best guess is that things
-          will not run well on less than 32 MB of RAM, but your
-          mileage may vary. I don't trust the Windows system
-          performance indicator, as it indicates 86% free RAM on
-          my machine with 32M while MiniVend is running. I find
-          it hard to believe. That is the smallest RAM machine
-          I have, and MV ran fine on it -- it is a 486DX/100.
-
-    IMPORTANT NOTE:
-
-        If you use the Windows notepad or other editor which
-        willy-nilly adds carriage returns, and you edit
-        configuration files that may contain Perl code, or
-        that use EOF markers, or have data, you may have to
-        remove carriage returns before running MiniVend. If
-        you have problems, perform the following commands from the
-        DOS prompt:
-
-            perl -npi.bak -e "s:\r::g" <file-you-edited>
-
-        The error "illegal character \015" would be an indication
-        of this problem.
-
-        There are also reports that using DOS edit causes problems
-        with profiles.
-
-    Prior to Installation:
-
-       1. Make sure Perl 5.004 is fully installed. Perl 5.004
-          is mandatory -- you can get it at:
-
-             http://www.perl.com/CPAN/ports/win32/Standard/x86/
-
-          A list of CPAN sites is always available at:
-
-             http://www.perl.com/CPAN
-
-       2. From the same place you obtained Perl 5.004, get the
-          DB_File module, latest version of which is 1.54
-          at this writing. Install it according to the 
-          instructions in the README.NOW file.
-
-          MiniVend will run without OK without DB_File, but
-          the user database will not be persistent.
-
-       3. Obtain and install BLAT if you wish to 
-          send emailed orders.
-
-            http://gepasi.dbs.aber.ac.uk/softw/Blat.html
-
-          Adjust the catalog.cfg parameter SendMailProgram
-          according to the path that you install it at -- MiniVend
-          should find it if it is in your path, and append the
-          right options. An example of a SendMailProgram:
-
-          SendMailProgram  blat - -t
-
-          (You must run 'blat -install' before it will work. Try
-          testing blat from the command line if your order is
-          not sent.)
-  
-    Installation:
-
-    1. Download the minivend-3.15.exe distribution file
-    and run it in the normal Windows fashion.
-    
-    ( If you don't want to execute the self-extracting ZIP file,
-      then you can obtain the standard minivend-3.15.tar.gz file and
-      install that instead. )
-      
-      You will have to obtain the CYGWIN.DLL file if you want to
-      use TLINK.EXE as your link CGI. The standard distribution .EXE
-      file has it included -- the minivend-3.15-nodll.exe file
-      eliminates it.
-
-    2. Select a directory to install MiniVend in -- it defaults
-    to /mvend on the default hard drive but you may put it anywhere.
-
-    3. You will need to know where your Web document root and
-    CGI directories are located.  The defaults are set for
-    Microsoft personal web server.
-
-    4. If your catalog is for testing purposes, you can
-    use the server name "127.0.0.1". If you want the catalog
-    to be accessible from the outside world, you will have
-    to enter a valid IP address or server name.
-
-    5. MiniVend will run as a service if you set it up with
-    srvany.exe or a similar program. Because the server
-    is single-tasked, it is recommended that you set up
-    a system agent to shut down the MV server, expire the
-    session database, and restart at least once per day.
-    (Expiration will always be needed to prevent the DBM files
-    or session directories from getting too big, and possible
-    memory leaks in Safe.pm make this a good idea anyway.)
-
-    6. Be careful of long-running searches -- because the server
-    will not handle multiple simultaneous requests as it does
-    on UNIX, searches will hold off user access. It is recommended
-    that you break your results pages into small (less than the
-    default 50-result) chunks by setting mv_matchlimit.
-
--------------------------------------------------------------
-
-            W I N D O W S   D I F F E R E N C E S
-
-      * ODBC works fine, but you will need to have the
-        DBI::ODBC module properly installed. DBI also works
-        with MS SQL Server according to user reports.
-
-      * No fork() on Windows means that only one server
-        can run at a time. This means multiple requests
-        will be queued. In any case, lack of file locking
-        would mean big problems for multiple servers.
-
-      * The support scripts are mostly untested, and
-        some probably will not work. In particular, the
-        expire script must not be run while the server
-        is running, as no file locking is available.
-
-      * You will need to close the DOS window to stop
-        the server, at least on Win95. 
-
-        If you obtain the excellent Cygnus GNU toolset
-        for Windows 95/NT, you can run bash.exe, enabling
-        you to start the server with:
-
-           perl /minivend/mvend/bin/minivend -serve &
-
-        You can then use the kill.exe program to kill the
-        server.
-
-      * Memory leaks in the Safe.pm module may mean that
-        you will need to restart the server due to running
-        out of memory. It is recommended that you shutdown
-        and restart at least once a day.
-
diff --git a/dist/README.OS b/dist/README.OS
deleted file mode 100644 (file)
index 2827ebc..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# MiniVend V3.15
-# 
-# Copyright 1996-1999 by Michael J. Heins <mikeh@minivend.com>
-#
-
-                   M I S C E L L A N E O U S
-                         O S   N O T E S
-
-
-Operating   Recommended
-System          DBM      Tested on     Notes
---------   -------------------------  -----------------------
-Linux         GDBM       2.0.x & up    This is what MiniVend is
-                                       developed on -- all features
-                                       should work normally provided
-                                       you have a good Perl. The
-                                       best thing to do is install
-                                       Perl 5.005 *without removing
-                                       any RPM packages*.
-                                      
-
-    IMPORTANT NOTE FOR REDHAT 5.0:
-    If MiniVend fails "make test" this usually means that the POSIX
-    library is broken on the distributed Perl. You should update
-    Perl.
-
-    And RedHat 5.1 and earlier have *gaping* security holes,
-    so you should update your operating system.
-
-Windows 9x    DB_File    ?????         MiniVend may not stand up
-                                       well for high-use
-                                       catalogs. Some features
-                                       cannot be used because
-                                       of foreground operation;
-                                       for instance modifying
-                                       $Safe{config}.
-
-
-Windows NT    DB_File    ?????         Some features of MiniVend
-                                       will not work, mostly in
-                                       support scripts. MiniVend
-                                       will run as a service.
-                                       Some features cannot be
-                                       used because of foreground
-                                       operation; for instance
-                                       modifying $Safe{config}.
-
-
-FreeBSD       DB_File     all          Many users run MiniVend on
-                                       this OS. You need Perl 5.004,
-                                       which not all BSD distributions
-                                       provide (some have Perl 4 as
-                                       the default Perl!).
-
-BSDI          DB_File     all          Many users run MiniVend on
-                                       this OS. You need Perl 5.004,
-                                       which not all BSD distributions
-                                       provide (some have Perl 4 as
-                                       the default Perl!).
-
-Solaris 2     GDBM       2.x           Many users run MiniVend on
-                                       this OS, no known problems.
-                                       Problems with installation
-                                       are usually due to poor or
-                                       missing development tools.
-
-SunOS 4.1.x   DB_File    4.1.x         Has been known to run on
-                                       this OS, no known problems.
-
-
-DEC/OSF, aka  GDBM       3.0           Some users run MiniVend on
-Digital UNIX                           this OS, no known problems.
-                                       
-
-IRIX          GDBM       5.3,6.2       Server may be difficult to
-                                       stop for re-configuration,
-                                       setting HouseKeeping value to
-                                       10 or less is recommended. 
-                                       Some reports of "zombie"
-                                       processes probably due to
-                                       signal handler problems.
-
-HP/UX          -         10.1          A few users, may be some
-                                       trouble with vlink/tlink
-                                       compilation.
-
-SCO            -         3.2           Should work fine as of MV3.05
-
-AIX            -         4.1           Reported to work with little
-                                       difficulty
-
-UNIXware       -         2.1           Should work fine as of MV3.05
-
diff --git a/dist/WHATSNEW b/dist/WHATSNEW
deleted file mode 100644 (file)
index 47aeff9..0000000
+++ /dev/null
@@ -1,1429 +0,0 @@
-
-                  W H A T ' S   N E W 
-
-MiniVend 3.15 incorporates some new features -- I couldn't resist. 8-)
-
-    * A new ASP-style syntax is supported:
-
-        <HTML MV=mvasp><BODY>This is HTML</BODY>
-        <%
-            $Document->write('This is code');
-        %>
-        HTML again.
-        <%
-            $Document->write('Code again.');
-        %>
-
-    * A new Perl object set is there to support the ASP, but
-      it also is available via
-
-        [perl arg=new]
-            $Document->write("Your name is $Values->{name}");
-        [/perl]
-
-      Objects supported are:
-
-            $CGI->{key}              Hash reference to submitted values
-            $Document->write()       Writes to page
-            $Carts->{cartname}       Direct reference to shopping carts
-            $Config->{key}           Direct reference to $Vend::Cfg
-            $Items->[n]              Direct reference to current cart
-            $Scratch->{key}          Direct reference to scratch area
-            $Session->{key}          Direct reference to session area
-            $Tag->tagname(@args)     Call a tag as a routine (UserTag too!)
-            $Values->{key}           Direct reference to user form values
-            &Log($msg)               Log to the error log
-
-    * Tag parameters quoted with parameter=`code` are the equivalent of 
-      parameter="[calc]code[/calc]".
-
-    * Tag parameters can be quoted with | to strip whitespace:
-    
-        [page  href=|
-                    [value name="whatever"]
-                    |]
-
-        is equivalent to 
-
-        [page  href="[value name="whatever"]"]
-
-    * Tag parameters can be quoted with | to strip whitespace:
-    
-        [page  href=|
-                    [value name="whatever"]
-                    |]
-
-        is equivalent to 
-
-        [page  href="[value name="whatever"]"]
-
-    * Tag parameters can be quoted with @ to insert a scratch
-      value:
-    
-        [value name=foo set=@bar@]
-        [value name=foo set="[scratch bar]"]
-
-      This can be useful when setting large values into variables,
-      as it is much more efficient than the previous method.
-
-    * Input values filters can be set up by quoting with ! and
-      an operation:
-    
-        <INPUT TYPE=text NAME=phone VALUE="[value name=!phone:digits!]">
-
-      This guarantees that the value of "phone" will be digits only
-      when sent to MiniVend. Filters include:
-
-          uc          UPPER CASE 
-          lc          lower case 
-          digits      only digits
-          word        only A-Z a-z _ 0-9
-          urlencode   space becomes %20
-          entities    < becomes &lt;
-          strip       strip leading/trailing whitespace
-          no_white    strip all whitespace
-          gate        set to blank unless scratch variable
-                       with same name is non-blank
-          n           (where n is an integer) length limit
-          remove      delete existing filter (if any)
-
-       Filters can also be created with Filter directive
-       and/or [input-filter op="uc"][/input-filter]
-
-    * Filter directive allows filtering of certain CGI variables
-      for input conditioning; this is not session dependent and
-      automatically operates on any iteration of the variable...
-
-        Filter  phone  digits 10
-
-      That removes all non-digit values from the variable "phone",
-      then limits length to 10. Any session-based filters are applied
-      after this one.
-
-    * [input-filter name=foo] CODE [/input-filter]
-
-      Sets a routine passed to the equivalent of a "[calc]" tag.
-      The value to be filtered is placed in the variable "$mv_filter_value",
-      and the name is set to "$mv_filter_name". It is possible to
-      do something like:
-
-          [input-filter name=country]
-            my $touched = '[tag touch country][/tag]';
-            my $val = $mv_filter_value;
-            my $prospect = &tag_data('country', 'name', $val);
-            return $prospect || $val;
-          [/input-filter]
-
-      That will return the name of a country if it is found as a key
-      in the database (assuming the simple demo country definitions).
-
-    * Small improvements in the parser, notably optimization when
-      positional parameters are used.
-
-    * ECML is supported via the Vend::ECML module. To map the 
-      checkout form values from MiniVend UserDB names, with an [ecml ...]
-      tag:
-
-            [ecml state]
-
-      is equivalent to:
-
-            <INPUT TYPE=text
-                   VALUE="[value state]"
-                   NAME=Ecom_ShipTo_Postal_StateProv
-                   SIZE=2>
-
-    * The [price] tag now supports pricing with attributes (size/color etc.).
-      If you do
-
-            [price code=99-102 size=XL color=RED]
-            [price code=99-102 size=L color=RED]
-            [price code=99-102 size=L color=BLUE]
-
-      in the demo, this will demonstrate it.
-
-    * The idiom:
-        
-         #include directory/*
-
-      now is supported (and used in the demo minivend.cfg file). This
-      includes all files in that directory (but not subdirectories)
-      and allows you to include the whole directory. It should make
-      maintaining multiple servers a bit easier.
-
-    * Items can now be ordered "on-the-fly" in the standard
-      distribution by adding mv_order_fly.
-
-    * Added form-remap based on catalog script-name (too early for
-      other methods). In minivend.cfg:
-
-            FormRemap  /cgi-bin/simple  code mv_order_item
-            FormRemap  /cgi-bin/simple  item mv_order_fly 
-    
-    * Made some minor changes in the demo:
-
-        - updated flypage to show attribute-based price tag
-        - fixed query/check_orders using st=db
-        - removed some syntax errors
-        - added [email to=addr from=addr subject=subj] message [/email]
-          UserTag which is better then the form_mail GlobalSub. It will
-          allow $Tag->email() to be used, among other things.
-        - Static build should work out of the box if you
-          have DBM and define:
-           
-              StaticDBM static
-
-    * Makecat now strips quotes from Apache parameters read from
-      httpd.conf file.
-
-    * Added Tagref.pm module which can document the implementation
-      of even UserTags. Add this to minivend.cfg to print one
-      to a MiniVend page:
-
-        UserTag tag-reference Routine <<EOR
-        sub {
-            require Vend::Tagref;
-            open (TAGREF, ">mv_tagref.pod");
-            my $reference = Vend::Tagref::tag_reference();
-            print TAGREF $reference;
-            close TAGREF;
-            my $out =  `pod2html mv_tagref.pod`;
-            if(! $out) {
-                 $Vend::StatusLine = "Content-Type: text/plain\r\n";
-                $out = $reference;
-            }
-            return $out;
-        }
-        EOR
-
-    * Removed all dependencies on ProductsFiles containing 
-      'products'.
-
-    * Added Legacy directive to minivend.cfg to support older
-      catalogs that don't define "products" database.
-
-    * Many bug fixes, of course. Notably [and ...] and [or ..]
-      were broken in some cases.
-
-MiniVend 3.14 is a bug fix release with a couple of new features:
-
-    * You can now specify a database in minivend.cfg. It becomes
-      global and is available in all catalogs. It also remains connected
-      all of the time, so no connection overhead exists. Careful; 
-      it is writable by any catalog unless you use WRITE_CONTROL
-      defined below.
-
-    * Added write control to all databases including SQL. If you wish to
-      control writing of a global database, or to a certain catalog within
-      a series of subcatalogs, or make one read only, you can do so.
-
-      To enable write control:
-
-        Database   products  WRITE_CONTROL  1
-
-      Once that is done, you can make a database read only, which won't
-      allow writing even if [tag flag write]products[/tag] is specified:
-
-        Database   products  READ_ONLY  1
-
-      If you want to have control with [tag flag write]products[/tag]:
-
-        Database   products  WRITE_TAGGED  1
-
-      If you want to limit write to certain catalogs, you can set:
-
-        Database   products  WRITE_CATALOG  simple=0, sample=1
-
-      The "simple" catalog will not be able to write, while "sample"
-      will if [tag flag write]products[/tag] is enabled.
-
-      If you want a database to be always writable without having
-      to specify [tag flag write] ... [/tag], then you can
-      define:
-
-        Database   products  WRITE_ALWAYS  1
-
-      The default behavior of SQL datbases is equivalent to
-      WRITE_ALWAYS, while the default for GDBM_File, DB_File,
-      and Memory databases is equivalent to:
-
-        Database   products  WRITE_CONTROL 1
-        Database   products  WRITE_TAGGED  1
-
-      As a side effect, I also removed the server error if a write
-      fails on a DBM database. It simply doesn't write and logs
-      the problem.
-
-    * Added a DbSearch.pm module which adds a new search type called
-      "db". This searches a SQL database with MiniVend search types,
-      or searches a MiniVend database instead of the ASCII file.
-
-      If it is a SQL table being searched, you can specify a coordinated
-      search and any "==" or "eq" operators will be used to filter the
-      initial search return. Otherwise, all rows of the database are
-      scanned upon each search. This can get slow, so you won't want to
-      do this for large tables.
-
-      The major difference between this and the TextSearch type is that
-      you must set base_directory to the table name/identifier of the
-      default database being searched; it defaults to 'products', which
-      is probably not what you want. This sets the field specifications
-      for the SQL qualification, so you must be careful. You can search
-      multiple tables, which will work well if the column names and orders
-      are the same. It will not work well if they are different, so it will
-      be rare when you want to search multiple tables.
-
-    Bug fixes:
-
-    * Set default for NewReport to "yes", which prevents the occasional
-      problem with returning a bogus error report if mv_order_report is
-      not set.
-    
-    * Fixed some weirdness in parsing certain search parameters, notably
-      mv_sql_query and index search specifications.
-
-    * Changed sort variables to globals so that sorting should be
-      reliable. I hope.
-
-    * Fixed quantity problem for [price code].
-
-    * Made mv_order_subject work for order routing.
-
-    * Order tracking now can be done in order routing.
-
-MiniVend 3.12 is a major release with multiple new features,
-particularly in the area of user access control.
-
-New features: 
-
-    * Major rework of the "simple" demo. (The HTML in that demo
-      was circa 1995 when the first work on MiniVend was done.)
-      Made it into the cookie-cutter style favored today, and
-      combined frames/non-frames demo.
-
-    * Added a new demo, "flycat". Documentation is sparse, will
-      remain sparse, and is totally located in the README.flycat
-      page.
-
-    * Rolled the former demonstration add-on feature UserDB.pm
-      into the main distribution. Added a [userdb ....] tag which
-      performs operations like login, logout, password change, etc.
-
-    * UserDB is now completely documented. It has many new 
-      features.
-
-    * Added four types of access control based on User database
-      login. The preferred method uses a .access_gate file to specify
-      per-page access -- this is demonstrated in the demo with the
-      [page reconfig/reconfig] page and is completely documented.
-      Another simple method allows checking of page names before loading;
-      a db_acl allows checking for read/write permission on a database;
-      and a file_acl allows read/write checking on file names. The two
-      latter ones are only enforced by your own programs; the simple
-      integrated method can be automatic.
-
-    * CookieLogin directive allows you to set a cookie with the
-      username and password of a user for auto-login. 
-
-    * [set-cookie name value expire] and [read-cookie name] tags added.
-
-    * Added a feature I have been thinking about for a long time -- 
-      form-linked page refs. If you want to order an item with configurable
-      size/color by a link, you can now do:
-
-        [page form="
-                mv_order_item=99-102
-                mv_order_size=L
-                mv_order_quantity=1
-                mv_separate_items=1
-                mv_todo=refresh"] Order t-shirt in Large size </A>
-
-      It was so simple to add I don't know why I didn't before now.
-
-      You must have TolerateGet set (which is now the default) and
-      all normal MiniVend form caveats apply -- you must have an action,
-      you must supply a page if you don't want to go to the default,
-      etc.
-
-      You can theoretically submit any form with this; it is best
-      if none of the included values have newlines. You can also
-      use it for submitting foreign forms if you like; it will
-      not touch the href if it begins with http:, ftp:, or the
-      like.
-
-      The [area ...] tag works the same way, though the deprecated
-      [pagetarget ....] and [areatarget ...] were left out.
-
-    * Added user-definable fields and command scripts to the command-line
-      makecat procedure.
-
-    * Added rudimentary documentation on building your own catalog
-      template.
-
-    * Added [import table type] tag for importing database
-      records. Supports all types including NOTES, the best mode to
-      use for inline text. Also supports import directly from a file.
-
-    * Glimpse now fully supports coordinated searching, though
-      you must make sure you have at least one regular-expression
-      based match.
-
-    * Added support for file upload/download. A demonstration is
-      included in the simple demo.
-
-    * [sql-param ...] and [item-param ...] now both support named
-      fields.
-
-    * Totally removed support for the old Msql.pm module. If you
-      still use this, use an older version or update to DBI.
-
-    * You can set an UPPERCASE parameter in the Database directive:
-
-        Database   products   UPPERCASE  1
-
-      You want to apply this to SQL only.
-
-      This allows lowercase field references in [item-field column]
-      and [item-data table column] (and sql- and loop- too). This
-      should make it easier to get things working with Oracle
-      and other DBs which won't return a lowercase field name for
-      fetchrow_hashref. Note that this is not used in [item-param
-      field] where you should know what the name is.
-
-    * There is an [if-param name] and [if-sql-param name] tag
-      ala [if-field ...] and [if-data ...].
-
-    * Added a [value-extended ...] tag which allows access to 
-      the array values of a form variable.
-
-    * In my continuing quest to get people to use the UserTag
-      capability, provided a few new ones in the demos -- notably
-      a summary tag that is employed to total shipping weight in
-      the demo, and a [table-font] [/table-font] tag which removes
-      the onerous chore of setting a default font for every table
-      cell.
-
-    * Added multi-field searching for the coordinated search.
-      You may pass a field like ":0..9" and have it search
-      fields 0 through 9 for that search term only.
-
-    * Added [next-anchor], [prev-anchor], and [page-anchor] container
-      tags for complete configurability of [more-list][/more-list] 
-      area. This also closes complaints about no spacing between
-      Previous and first page; prior behavior kept for compatibility.
-
-    * Added a Storable interface selectable at software
-      configuration time. If Storable is installed, and the
-      file _db_storable is present in the MiniVend software root,
-      (or the environment variable MINIVEND_STORABLE_DB is true)
-      then Storable will be used not only for sessions but for
-      all GDBM and DB_File storage. THIS BREAKS EXISTING CATALOGS.
-      If you want to use Storable only for sessions, just set
-      the environment variable $ENV{MINIVEND_STORABLE} to 1 as usual.
-      You can also create a _session_storable file in the MiniVend root.
-
-    * Verified the DBI interface to work with DBD::XBase (subject
-      to the usual limitations like fieldname length), which
-      allows XBASE/DBF files to be used directly. This is probably
-      not useful for anything except an import interface; something
-      like:
-
-        [tag export products_dbf products.asc TAB][/tag]
-
-      This would allow a user to upload a DBF file and
-      then import that into a standard TAB-delimited.
-
-    * Added a perhaps more convenient Locale language facility,
-      which looks like:
-
-        [LC] This is the default text
-                [de_DE] Text for de_DE locale [/de_DE]
-                [en_US] Text for en_US locale [/en_US]
-                [fr_FR] Text for fr_FR locale [/fr_FR]
-        [/LC]
-
-Bugs fixed:
-
-    * [setlocale] currency and persist parameters were
-      swapped; fixed.
-
-    * Multiple selection checks that contained non-word characters
-      would not be re-selected upon building an item-accessories
-      box. Fixed.
-
-    * Memory databases were getting imported too often, fixed
-      bug in database initalization routines.
-
-    * Fixed ownership problems in the mv_admin catalog; the
-      installation should work flawlessly as root providing parent
-      directories have the proper permission.
-
-    * Due to persistent Perl problems with signal handling, the
-      default demo is now distributed with PIDcheck enabled.
-      New behavior when PIDcheck is in force is to reset the
-      number of active servers based on the presence of PID files,
-      while still rate-limiting to MaxServers iterations between
-      housekeeping checks. The SafeSignals directive is deleted
-      (it will generate a deprecated warning but allow startup
-      to continue).
-
-      This problem would occasionally cause busy servers to
-      "freeze" as they reached and failed to go below the MaxServers 
-      level.
-
-      If the PIDcheck directive is set, the number of servers will
-      be automatically adjusted every HouseKeeping seconds according
-      to the pid files.  The recommended value for PIDcheck is now
-      180-600 seconds; the demos will come set to 300.
-
-    * Fixed "bad search column" error when searching the first
-      column of the products file or key column of a file.
-
-    * Fixed security hole allowing user-specification of absolute
-      search file names.
-
-    * Fixed error with CyberCash number formatting when 
-      using a non-english number format (i.e. spaces and
-      commas in non-english places).
-
-    * mv_sort_field works even without mv_sort_command.
-
-    * Indexing works for Windows.
-
-MiniVend 3.11 is a major release enhancing many aspects of installation,
-product pricing, secure authorization, searching, and database updates.
-
-    * New experimental internal HTTP server means very fast
-      request handling direct from the browser, and built-in
-      internal security for admin tasks and protected catalog
-      pages. Will authorize users from the add-in userdb database
-      or any other MiniVend database. Supports crypt, minimal
-      access logging.
-
-      This internal HTTP server is not meant for production use.
-      It may have difficulty with MS Internet Explod^Her.
-
-    * New catalog configuration "wizard" and admin interface
-      built in. The installation should be a one-step
-      operation, completely automatic providing you have
-      the MIME::Base64 and URI::URL modules.
-
-    * New mv_admin catalog implements HTTP-based reconfiguration
-      from a central place. Tags provided for you to gate it
-      for individual users.
-
-    * CPAN module installation improved.
-
-    * The makecat script now can be completely run from the command
-      line, no interactive steps necessary. Values can be partially
-      filled in from the command line and you will be prompted
-      for the rest. A "guess" mode returns a reference as a
-      string guessing certain parameters from the ones you
-      supply. And you can do a --nocopy test run to check the
-      results before you actually copy the files.
-
-      Unfortunately the only documentation is the usage message.
-
-    * Makecat program adds catalogs to a running server.
-    
-    * German error messages added to error locale file (thanks to
-      Karsten Mueller).
-
-    * New CommonAdjust price setting scheme allows chained
-      conditional lookups in pricing, shipping, and taxing. Added
-      mv_price attribute for easy setting of prices in embedded
-      Perl. Added [discount-subtotal] tag which will reliably give
-      an item subtotal with discounts applied. New mv_discount
-      attribute allows individual line item discounts.
-
-    * TemplateDir (both local and global) allows missing
-      pages to "fall back" to other places. This allows
-      a catalog distribution that might only contain one
-      or two pages.
-
-    * Added LocaleDatabase, VariableDatabase, and DbDatabase;
-      these allow setting of the Locale, Variable, and Database
-      directives from a database table. This will allow maintenance
-      improvements (they still only change value on startup or
-      reconfigure.)
-
-      LocaleDatabase is implemented in the demo.
-
-    * Added support for CyberCash 3 (thanks to Gunnar Hellekson),
-      AUTHORIZE.NET, and PAYMENTNOW.COM.
-
-    * New [goto LABEL] and [label LABEL] allow chunks of a 
-      page to be skipped.
-
-    * DB_File databases can be automatically compacted with
-      the expire program; a standalone "compact" script is
-      also provided.
-
-    * Added PIDcheck global directive to allow monitoring of
-      "hung" processes. This should make MiniVend more reliable
-      especially in combination with Glimpse searching.
-
-    * Text search engine now will combine binary searching with
-      database-based searches. New mv_search_map allows reliable
-      coordinated searchspecs even with empty search specifications.
-
-    * Fixed multi-page sorting problems that were in MiniVend
-      since 3.00.
-
-    * Added new WideOpen directive so that catalogs can individually
-      be set to tolerate no IP address qualification. It is named
-      that because that is what you will be; you should not use this
-      if you ever store unencrypted credit cards (or other sensitive
-      info). It is also recommend that you shorten your expire time
-      to a small number of hours, maybe even 1 or 2.
-
-    * Added new FallbackIP directive to allow quasi-cookie capability
-      by IP address and browser id string. Use if you have lots of
-      users who don't take/give cookies. Suggest also that expire
-      times be made short, though two users would have to have the
-      same exact browser string and IP address. It will work with
-      cookies if they have them.
-
-    * Added va=var=value parameter to one-click search so you
-      can set a value with a link.
-
-    * Allow deletes with form database maintenance (mv_data_*).
-      Added mv_data_decode to gate HTML::Entities decoding of data;
-      this will allow easy and reliable display of multi-line fields
-      in a <TEXTAREA>.
-
-    * Added "expireall" script that expires all catalogs
-      in minivend.cfg by calling expire -c <name> [-r].
-
-    * Fixed longstanding "untie attempted" bug.
-
-    * Fixed mv_save_session so it actually will send the
-      user back to their saved session.
-
-MiniVend 3.10 is a bug-fix release with a few minor updates.
-
-    * New IpQuad global directive allows removal of any IP address
-      qualification from the session name, allowing transferred
-      sessions from server to server. Just set
-      
-        DomainTail No
-        IpHead     Yes
-        IpQuad     0
-
-      in minivend.cfg and transfer of sessions from AOL or WebTV
-      should now be possible. This makes it possible to use different
-      domains for the secure server and the non-secure server, even
-      when the browser will not set cookies outside the current
-      domain.
-
-      IMPORTANT NOTE: Remember that security is compromised
-      greatly by this; it should be used in combination with
-      PGP-encrypted credit card information with CreditCardAuto,
-      or with MiniVend's internal CyberCash routines. YOU SHOULD
-      NEVER STORE ANY UNENCRYPTED CREDIT CARD INFORMATION ANYWHERE
-      WHEN USING THIS WORKAROUND.
-
-    * New URLDECODE tag, specific to the new/HTML tag style, provides
-      unescape and URL translation services for <A HREF...> and
-      <IMG ....> tags. If you use FrontPage or other
-      HTML editors they will translate spaces to %20 within
-      an image SRC or anchor HREF. Now you can do:
-
-        <IMG MV=urldecode SRC="[value%20saved_image]"> 
-
-      Flypages and search lists are done automatically.
-
-    * HTML-style CHECKED and SELECTED now works properly.
-
-    * Fixed EXCEL import mode so it also strips paired double quotes.
-
-    * Lotus NOTES format can now be exported.
-
-    * Now can have separate language and currency locales,
-      using the mv_currency scratch variable just as with mv_locale;
-      and with [setlocale locale=fr_FR currency=en_US].
-
-    * New Global Locale tag gives global default for error
-      messages. Error messages are numbered by module, and can
-      be changed. A default file locale.error will define the
-      usable keys; it is not configured in by default.
-
-    * Error messages are numbered and the current locale can
-      be used to generate many of them. This is not yet complete,
-      but should be much improved. See the locale.error file for
-      a list of keys to define for translation.
-
-    * MiniVend should work with the Storable module version
-      0.6@3 or higher, greatly increasing speed of session
-      storage and recall. To use, install at least that version
-      and set the environment variable MINIVEND_STORABLE to 1.
-
-MiniVend 3.09 is a release that optimizes speed and adds features
-that allow operation with some HTML editors.
-
-    * SQL optimizations make dramatic differences in table
-      construction speed. MiniVend now uses internal structures to
-      maintain SQL column headings. This means that if you change
-      your SQL table structure, you must restart Minivend, but you
-      gain quite a bit of speed.
-
-      [if-data]/[item-data], [(if-)?loop-data], and [(if-)?sql-data]
-      tags are optimized across rows in the corresponding iterative
-      list. This means that two selects are done where dozens might
-      have been done before. Speed really increases.
-
-      This optimization works for [if-field]/[item-field] and friends
-      as well if there is only one products table (i.e. you didn't
-      set ProductFiles). If you have more than one, you should use
-      [item-data products ...] instead of [item-field ...] for best
-      speed when appropriate.
-
-    * To improve page response time, you can specify a SEND=1
-      attribute to any new-syntax MiniVend tag -- it sends the
-      output that has accumulated to that point. If you have named
-      your link program to begin with nph- (i.e. nph-simple instead
-      of simple) the program will start sending output immediately.
-      This can greatly improve apparent response time on large search
-      or loop lists.
-
-      The nph-executable can also be optionally used with an
-      alias:
-
-      Catalog simple /catalogs/simple /cgi-bin/simple /cgi-bin/nph-simple
-
-      If you reduce your vlink buffer size to 512 bytes, this will
-      improve likelihood of immediate response at some cost in CPU
-      utilization. (This change requires editing vlink.c and compiling --
-      don't worry about it if you don't know how to do that.)
-
-    * Search cache is *much* improved.  Paging and caching should now
-      be completely reliable. If the user hits reload, it will refresh the
-      page, as Pragma: no-cache is honored. Search paging is cached as well.
-      You can invalidate the cache for the next page only with 
-      [set mv_no_cache]1[/set].
-
-    * You can encase a set of links in:
-
-        [set mv_no_count]1[/set]
-        [page whatever]A page[/page]
-        [page whereever]Also a page[/page]
-        [set mv_no_count]0[/set]
-
-      The link count will be updated but not appended, making links
-      repeatable. This allows the browser to highlight visited links,
-      especially nice for paged searches.
-
-    * The last search can be reproduced with the [data session last_search]
-      via [page href="[data session last_search]"]. This includes
-      links to different pages of a multi-page search return.
-
-    * If you don't have the MD5 module for some reason (get it!)
-      MV does some better cache key generation with checksums,
-      reducing the likelihood of a collision.
-
-    * Fixed spurious "ClearCache" error at startup.
-
-    * MiniVend tags can now be contained within HTML tags, allowing MV
-      to work somewhat with most any HTML editor. The problem before was
-      that tags could not be placed between table rows with certain HTML
-      editors (like FrontPage and Netscape Composer). It is triggered by
-      including MV="tag arg arg.." as the *first* attribute of the HTML tag.
-      (Actually it can be later in the tag if no ] or > characters intervene.)
-      For example:
-
-        <TABLE>
-        <TR MV="loop" MV.search="ml=2000/se=Impressionists/sf=category">
-        <TD> [loop-field title] </TD>
-        <TD> [loop-code] </TD>
-        </TR>
-        </TABLE>
-
-      will display:
-
-        Sunflowers       00-341 
-        The Starry Night 00-342 
-
-      Arguments can be combined with tags if there is whitespace
-      in the first mv="tag arg.." call:
-
-        <TABLE>
-        <TR MV="loop 1 2 3">
-        <TD> [loop-code] </TD>
-        <TD> row </TD>
-        </TR>
-        </TABLE>
-
-      will display:
-
-        1 row
-        2 row
-        3 row
-
-      There are some differences in operations depending on the tag --
-      for instance, <A MV="page somepage" HREF="some_other_page.html">
-      will replace the instance of HREF with its own HREF. This allows
-      hrefs to work both for static HTML and MiniVend pages.
-
-      Also, <TR MV="if value whatever"> will pair with the matching
-      </TR>, but also "look ahead" for an [elsif ...] and [else] in
-      the next table rows (or tag set -- could be <LI MV="if ...">
-      </LI>, etc).
-
-      The <PRE MV="perl"> </PRE> combination will work for
-      cognitively-challenged HTML editors like Netscape Composer -- it
-      will retranslate the entities that it auto-translates. And you can
-      use <PARAM MV="if whatever"> </PARAM> <PARAM MV="else"> </PARAM> --
-      Netscape and Microsoft editors won't auto-delete those when they
-      read the file.  ( I really have learned to hate Netscape Composer
-      during the testing of this -- when loading a page, it deletes many
-      things it doesn't understand, without asking or even *telling* you.
-      Sheesh. Microsoft FrontPage, much to my surprise, is much better --
-      it allows you to add extended attributes keeps them in the tag. There
-      might be hope for it yet. In fact, look for me to add a "MiniVend"
-      menu for the FrontPage editor in the release.)
-
-      A special case comes with <SELECT ...> since the <OPTION> tag doesn't
-      support extended attributes (at least in FrontPage) there is now an
-      attribute MV.OPTION=varname for the loop tag. It has the effect of
-      SELECTED to the <OPTION> which is has the same value as the loop-code.
-      It will work limited circumstances like:
-
-        <SELECT MV=loop MV.ARG="__SHIPMODES__" MV.OPTION="mv_shipmode">
-            <OPTION VALUE="[loop-code]">
-                [shipping-desc [loop-code]] [shipping [loop-code]
-        </SELECT>
-
-      or
-      
-        <SELECT MV=loop NAME=country
-            MV.SEARCH="se=./ra=yes/fi=country.txt">
-            MV.OPTION="country" >
-                                    <OPTION> [loop-code]
-        </SELECT>
-
-      Bear in mind this is very preliminary editor support, there will
-      be lots of anomalies and deficiencies. More shall be revealed....
-
-    * Now can test for more than one condition via [and ...] and
-      [or ...]. This works like:
-
-        [if value whatever]
-        [or value whomever]
-        [and value however]
-            Do it. 2 out of 3 is enough.
-        [/if]
-
-      The last condition pertains, and there is no parentheses,
-      so you can't do [if ...][and ....][or ...]. But you could
-      still do:
-
-        [if value whomever]
-        [and value whatever]
-            Do it. 2 out of 3 is enough.
-        [elsif value whomever]
-        [and value however]
-            Do it. 2 out of 3 is enough.
-        [/elsif]
-        [/if]
-
-    * If conditions not containing an operator now have the 
-      comparison optimized away, removing a call to Safe. This
-      means much faster compares for things like [if value whatever]
-      and [if data table::column::row], where there is no equality
-      or regex pattern check.
-
-    * UPS-style lookup now can have up to 27 zones, can handle
-      alphanumeric postal codes (i.e. Canada), can use more than
-      three significant digits, can multiply weights by a factor
-      for pound/kg conversion, and is much better documented.
-
-    * [body ...] tag now accepts additional arguments to modify
-      a preset scheme. [body 1 TEXT=GREEN] will send the preset
-      scheme "1" with an additional parameter. Also can put in
-      an HTML body tag with <BODY MV="body 1 TEXT=GREEN"> to make
-      HTML editor processing easier.
-
-    * SQL search type can now be specified in a profile, a demi-bug
-      fixed.
-
-    * Greatly improved independent field matching that supports
-      the standard Perl operators plus "em" for exact match. Full
-      case sensitivity is included.
-
-    * When doing independent field matching a suitable qualifying
-      search is made when available. This greatly speeds searches
-      that depend on several conditions.
-
-    * [subtotal], [total-cost], [salestax], [shipping], and [price]
-      tags now all have a "noformat" option which just returns a raw
-      number.
-
-    * [price ...] tag fixed to fit documented behavior.
-
-    * Precision error in [salestax] fixed. Salestax and shipping
-      now use Locale->frac_digits places of precision (normally 2). Be
-      careful if you use frac_digits less than 2 -- if you want
-      even-dollar pricing you could instead use price_picture for
-      currency formatting and keep frac_digits at 2.
-
-    * [random], [rotate], [calc] and [currency] tags now auto-interpolate in
-       new mode.
-
-    * UPS-style lookup now can be used in up to 27 originating zones
-      in one catalog, non-numeric lookups are allowed, and lookups can
-      be more than three characters in length.
-
-    * Shipping can now be set to use the PriceDivide setting for
-      currency rate conversion, either global or individual.
-
-    * A new import format, Lotus Notes/structured text, is added.
-      Very useful for editing databases by hand.
-
-    * UseModifier can be set in scratch variables with a simple
-      [set mv_UseModifier]size color[/set], so you can have any number
-      of options for an item without having to set them all.
-
-    * Added order profile checks for "state", "province",
-      "province_or_state", "postcode", "ca_postcode", and "zip". Sorry,
-      only US/Canada supported, but you can add a check yourself
-      in a GlobalSub:
-
-GlobalSub <<EOF
-sub set_up_extra_check {
-    BEGIN {
-        package Vend::Order;
-        sub _pt_postcode {
-            # $ref is to Vend::Session->{'values'} hash
-            # $var is the passed name of the variable
-            # $val is current value of checked variable
-            my($ref, $var, $val) = @_;
-            
-            if ($ref->{country} =~ /^(PT|portugal)$/i) {
-                return $val =~ /^\d\d\d\d$/ ?  1 : 0;
-            }
-            else {
-                return 1;
-            }
-        }
-    }
-}
-EOF
-
-      Now you can specify in an order profile:
-
-          postcode=pt_postcode
-      
-      There must be an underscore preceding the routine name in this
-      case. Very elaborate checks are possible, of course. If some user
-      takes on the polyglot it would be appreciated if they contribute
-      the routines.
-
-      To you MiniVend hackers out there, this is a general technicque you can
-      use to override MV subroutines. For the most part, I try to keep the
-      same call interface, and this should make updates *much* easier.
-
-    * You can set a form variable value with the new "set" attribute
-      for the [value ...] and [default ...] tags. 
-         
-      Set the variable name to "Mike Heins" and do not return a value:
-
-         [value name=name set="Mike Heins"]
-
-      Set the country to "US", but only if not already defined, and return
-      the value:
-
-         [default name=country default=US set=1]
-      
-      New syntax only, for safety reasons.
-
-    * Added a -r option to the "expire" script. When using GDBM
-      sessions (and only GDBM) this will recover disk space and
-      shrink a large session file.
-
-
-MiniVend 3.08 is a maintenance release, but as usual adds a few
-features:
-
-    * Syntax of [search] tag much improved. Added auto
-      search for loop tag, allowing specification with
-      [loop search="se=searchstring/sf=searchfield"].
-      Use of search profiles is improved.
-
-    * Microsoft did not fix Excel in Office '97 as earlier
-      reported -- its TAB-delimited exports still surround
-      any field containing a comma with quotes. A new import
-      parameter has been added to deal with this.
-
-    * ProductFiles added to the list of directives updated
-      with a locale change.
-
-    * "display" option added to [item-accessories ...] tag,
-      to display only the *label* for the selected option.
-
-    * Radio and check box options added to [item-accessories ...]
-      tag. These display checkbox or radio groups for options. Can
-      also group boxes in tables, including columns if passed a
-      numerical parameter.
-
-    * Can now select options based on database field keyed
-      on something besides item code.
-
-    Fixes for:
-
-    * MiniVend used MakeMaker to install some distributed copies
-      of non-core Perl modules (and a modified Carp.pm). If you
-      installed with the parameter UNINST=1 then it would remove
-      the module.  That is bad news, and it is fixed. The module
-      Carp.pm was removed from the distribution, and other modules
-      are installed only by copying if appropriate versions are
-      not available, and are only installed in a private library
-      directory.
-
-    * Continuing "tar" problems with makecat. The system tar
-      program is now used for UNIX machines.
-
-    * Bad domain passing in a cookie. This should remove the
-      last problems with proxy servers losing sessions, providing
-      the secure server and regular HTTP server are in the same
-      domain for cookie purposes.
-
-    * Update of shopping cart caused loss of session only when
-      in master item/sub-item mode. Fixed.
-
-MiniVend 3.07 is a major release adding complete POSIX-style
-I18N features and many other tag language enhancements.
-
-    * Complete multiple currency sets based on locale. Uses
-      standard POSIX definitions.
-
-    * POSIX gettext/LC_MESSAGES style message display
-      for multiple language capabilities. A script called
-      localize is included which helps build Locale definitions.
-
-    * Price number display greatly enhanced.
-
-    * Sort lists now can specify a beginning entry
-      and a length, allowing pageable browse lists. Previous
-      versions needed to be done entirely in Perl. Demo
-      includes example.
-
-    * Simple demo now uses NewTags by default. Several
-      deficiencies cleaned up.  Locale example (French front
-      page and currency) example given. Several additional
-      examples given. Examples using deprecated features
-      changed to use current features.
-
-    * Added simple user login facility as an add-on module.
-      documented in UserDB.pm and shown in the demo. This is
-      also a useful example of how you can add your own extensions
-      to MiniVend.
-
-    * All iterative lists now have an [item-next] and [item-last]
-      (or [loop-next] and [loop-last]) capability for exiting and
-      skipping entries in loops.
-
-    * PriceAdjustment now handles embedded MiniVend
-      tags, allowing completely flexible product pricing.
-
-    * OrderProfile and SearchProfile now can be specified
-      in the page.
-
-    * Cookies now set for every path and domain in Mall
-      mode.
-
-    It also fixes some bugs/deficiencies:
-
-    * Static builds handle #name anchors when you use
-      [pagetarget page#name].
-
-    * Fixed simple demo so scratch directory 'tmp' gets
-      created on new install.
-
-    * Documentation corrections.
-
-    * Search [more-list] did not work under Windows -- fixed.
-
-MiniVend 3.06 fixes some bugs with 3.05 and adds some features.
-
-    * Catalog permissions configuration for multi-user,
-      multi-catalog servers greatly improved.
-
-    * Added [if ordered ...] back in, inadvertantly deleted
-      in 3.05.
-
-    * Added ! comparisons for [if ....][/if], [if-data ...],
-      [if-field ...] and the like.
-
-    * Made UserTag available globally in minivend.cfg.
-
-    * Only call CPAN if it was previously used by somebody.
-
-    * PriceAdjustment can now be absolute, where an 
-      adjustment value of =10.99 will set the price
-      directly to 10.99. Previously the adjustment was
-      only relative to the single price for the item.
-
-    * Added new CONTINUE modifier to allow more flexible
-      specification of long database fields during ASCII
-      import. DITTO format allows you to add additional text
-      on the next line, while UNIX accepts \ as a line
-      continuation. This allows you to maintain very
-      large description fields while still remaining within
-      the 255 character limit of many databases and
-      spreadsheets.
-
-    * Added passed default to [default variable]
-      tag, now can be [default variable passed-default].
-
-    * We can't always use POSIX::strftime anymore because of
-      bad RedHat 5.0 Perl release. 8-( A substitute routine is
-      provided and should be selected if POSIX::strftime doesn't
-      work. Instructions provided for making a good Perl, should
-      build OK.
-
-    * Added grouped items with mv_order_group. Using this,
-      Sub-items can be tied to a master item placed on a
-      form-based order.  The first mv_order_item defined
-      becomes the master, additional are sub-items. All
-      sub-items are deleted when a master item is deleted
-      from the cart.
-
-    * Fixed path problems with database/search path
-      resolution.
-
-    * Fixed VendURL mangling when going to a SecureURL
-      with a different SCRIPT_NAME.
-
-    * [compat] [/compat] tag pairs are stripped from [old]
-      pages.
-
-    * Static pages were shown to all browsers -- now only
-      shown to those which have given us back our cookie.
-
-    * [loop ...] lists are now reliably nested with 
-      [loop with="-a" arg="A B C"] or [loop-a 1 2 3].
-
-    * Tag end parsing fixed for [loop ...] and others that
-      auto-interpolate.
-
-    * Finally added a real debug facility, with multi-level
-      control and in-page display. Messages are still crude,
-      though, and user input is encouraged.
-
-    * Errors during catalog configuration are now
-      displayed to the console on startup.
-
-    * Slightly refined [more-list] to accept a different
-      border for selected and non-selected pages when using
-      images.
-
-    * Added error message in Windows install to prevent the
-      large number of questions from users who try to install
-      MiniVend without Perl 5.004 on the machine.
-
-    * CYGWIN.DLL now installed in SYSTEMROOT/system, not just
-      C:/windows/system.
-
-    * Tested on Windows NT 4.0 x386.
-
-MiniVend 3.05 is a major update that adds the following:
-
-    * Windows95/NT and UNIX versions unified, many changes
-      to handle line-ending differences
-
-    * SendMailProgram and EncryptProgram now accept 'none'
-      as parameters, avoid the need for external programs.
-
-    * Removed all autoloading options
-
-    * Added rotate "floor"
-
-    * Makecat program just a bit smarter about some things
-
-    * No UNIX command dependencies
-
-    * Removed sample demo from distribution, too outdated
-
-    * Catalogs can be added online
-
-    * Mode indicator file mode.{inet,unix} in MVROOT/etc
-
-    * Removed final vestiges of DES encryption
-
-    * Workaround for DBI <= 0.90 AutoCommit problem
-
-    * Went to multi-README files
-
-    Bug fixes include:
-
-    * Numerous fixes to sql_search (mv_searchtype=sql)
-
-    * Fixed tag_sort bug for multiple sorting of search lists
-
-    * Fixed [tag sql] query [/tag] to match docs
-
-    * Fixed missing Global variables
-
-    * Fixed close_database, no more SQL disconnect warnings
-
-    * Fixed bug in Windows file-based sessions
-
-MiniVend 3.04 is a minor release to fix bugs in 3.03:
-
-    * If file test was failing on a Safe trap. Fixed.
-
-    * PIPE databases did not work in 3.03 (only) -- they now
-      work well even for searching.
-
-    * Major bug in new parser fixed, now virtually every
-      tag should be parsed by MiniVend in 'NewTags Yes'
-      mode.  Switching to the new parser is recommended,
-      as new features will not be added to the old parser.
-
-    * New [elsif ...] addition to [if ...] was not
-      documented or announced.
-
-    * Perl 5.003 should run MiniVend without changes.
-
-    * Escape mechanism for values works properly.
-
-    * [include file] tag added.
-
-    * UserTag now accepts Interpolate option.
-
-    * Other minor bug fixes.
-
-MiniVend 3.03 has many bug fixes and feature set improvements.
-
-There is one incompatible change:
-
-    * If you are using Static builds, you must now define
-      'Static Yes' in the catalog.cfg file to get static
-      pages to build or run.  This was done to provide a
-      single "on/off" switch for static builds.
-
-As well as adding the following features/fixes:
-
-    * The new tag syntax is more reliable and trouble-free, 
-      and a UserTag directive allows user-defined tags. For example,
-      you can do:
-
-        UserTag  caps  Routine  sub { return "\U@_" }
-        UserTag  caps  HasEndTag
-
-      and have "[caps]uppercase[/caps]" become "UPPERCASE".
-
-      In addition, almost all old-style tags will be parsed
-      properly by the new tag parser.
-
-    * Sorting has been improved and regularized. All iterative
-      lists may be sorted with the same syntax, and all may be sorted
-      on any database field entry.
-
-        [search-list]
-        [sort products:category products:name:f]
-        ...
-        [/search-list]
-
-      The above will sort a search return on two fields in
-      the database -- and will work the same for shopping carts,
-      loop lists, and [tag each products].
-      There are unlimited levels of sort, and all sorts may individually
-      have options for numeric, case-insensitive, and reverse. See the
-      section SORTING in minivend.html.
-
-    * Added [on-change name] tag to allow conditional nested search
-      display.
-
-    * Salestax bug fixed, 'default' now works.
-
-    * AllowGlobal lets certain "trusted" catalogs define global
-      subroutines. AdminSub restricts certain subroutine names.
-
-    * ImageAlias does the same thing for MiniVend images that
-      Apache/NCSA does with Alias.
-
-    * A robot defense now allows you to limit the number of line
-      items in the shopping cart or cut off access to a host that
-      accesses a certain number of pages without at least one 30 
-      second pause. Implemented with OrderLineLimit and RobotLimit
-      directives on a per-catalog basis, and the LockoutCommand
-      directive as a global parameter.
-
-    * SQL numerical types are now handled properly if you set the
-      NUMERIC option in catalog.cfg, i.e.:
-        
-        Database  products  NUMERIC price
-        Database  inventory NUMERIC on_hand
-
-    * The server will now fall back to UNIX mode only if the
-      TcpPort (7786 by default) is occupied and it cannot bind().
-      This does not apply if MiniVend was started in INET mode only,
-      but there will now be a better log message indicating the
-      server is stopped.
-
-    * Started allowing a lower case POST method -- many browsers
-      seem to violate the HTTP spec in that regard. This mitigates
-      the common "interaction error" problem.
-
-    * Fixed bug in CyberCash processing that allowed only the
-      'mauthcapture' mode.
-
-    * Deleted SearchOverMsg directive -- you must now set 
-      mv_search_over_msg directly if you want to use it.
-
-MiniVend 3.02 adds full SQL support. In addition, several minor
-demo flaws have been polished, and some bugs in the new geographic
-shipping changes have been fixed.
-
-Changes include:
-
-    * Full SQL support, including for ODBC, using the powerful
-      DBI/DBD interface. It should operate on all DBI-compliant drivers -- it
-      has been tested with MySQL, mSQL, Solid, ODBC, and PostgreSQL.
-
-    * All database documentation greatly improved.
-
-    * Geographic qualification for shipping works.
-
-    * mv_credit_card_valid now returned as blank false value
-      instead of 0 false value.
-
-    * =true added to order profile checks, will pass on Yes|True|1
-      and fail on anything else.
-
-MiniVend 3.00 is greatly changed from MiniVend 2.03, though catalogs
-should be almost completely compatible. The exceptions are one or two
-pricing and shipping database changes.  In both cases, there is available
-backward compatibility. 
-
-Changes include:
-
-    * Installation has been changed to fit the Perl model
-      of 'perl Makefile.PL; make; make test; make install'.
-      You can also just type './configure' to perform this
-&nbs