subject: Re: what does this compile result mean on an FPGA program?

text:
Well, FPGA's are not that transparent... What I understand is this.

The FPGA uses slices. Each slice takes some time to execute. This time is
*not* a clock cycle. In one cycle, the FPGA can execute many slices, even if
they depend on each others output. For instance, you can put a few math
functions (add, subtract, etc.) behind each other, and still execute it in
one Single Cycled Timed Loop (SCTL).

When you increase the frequency, the base clock increases. But the execution
time of the slices doesn't. So the idea that increasing the clock time
simply speeds up the FPGA is wrong! This does work on "normal" processors,
but not on FPGA's.

So if you get your code in a SCTL running on 40 MHz, you might get failure
when you run it on 200 MHz. This is because the base clock is running faster
(so the SCTL is faster), but less slices can be executed in that time!

In your case, the executed slices will still fit if a base clock cycle is a
bit shorter. This is not possible, since the FPGA cannot create a 208 MHz
clock, so it is theoretical.

Hope it helps,

Wiebe.


author: yankaini

text:
In 7811R, FPGA has a 40MHz base clock, you can use multiple and divide to get higher frequency. You can set it by right click the 40MHz clock in Project.
After you set it, you can use it in timed loop and it can execute at this speed.


author: ShelliO

subject: Works in IE but not in Netscape

text:
Hi,

I've done some searching on the web but can't seem to find a good FAQ on
Javascript.  Hopefully someone here can point me to one that may contain the
answer to my question, or answer the question itself.

So, here's the question:

I have a web page with an applet on it. In order to interact with the
applet, I also have a number of HTML forms elements on the page (buttons,
list boxes etc.).  I'm invoking Javascript when I click an HTML form button
to call applet functions with parameters taken from some the list boxes.
This works great in IE5, but I get Javascript errors in Netscape4.  What do
I have to do so that the script works in both browsers?

Thanks for any help,
Shelli


author: Berny

subject: Re: Works in IE but not in Netscape

text:
Source please ;-)

ShelliO <[email]> schreef in berichtnieuws
[email]...
the
button
do


subject: Re: Works in IE but not in Netscape

text:
Here's the webpage.  Thanks for taking a look.

Shelli

<TITLE>Applet HTML Page</TITLE>

<OBJECT ID = "txapplet"
 CLASSID = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
     WIDTH = "1100" HEIGHT = "350"

codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Vers
ion=1,3,0,0">
        <PARAM NAME = CODE VALUE = "com/wmode/cbapps/TxApplet.class" >
        <PARAM NAME = ARCHIVE VALUE = "classes12.zip, TxDemo.jar" >
        <PARAM NAME = NAME VALUE = "txapplet" >
        <PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
        <PARAM NAME="scriptable" VALUE="true">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.3"
 CODE = "com/wmode/cbapps/TxApplet.class"
 ARCHIVE = "classes12.zip, TxDemo.jar"
 NAME = "txapplet"
 WIDTH = "1100" HEIGHT = "325"
 scriptable=false
 pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
<NOEMBED>
</COMMENT>
</NOEMBED>
</EMBED>
</OBJECT>

<FORM name = "appletForm">

 <input type="button" name="btnSuspend"
 value="Suspend" onclick="suspend()">

 <input type="button" name="btnAllView"
 value="All View" onclick="allView()">

 <input type="button" name="btnQueryView"
 value="Query View" onclick="queryView()">

 <SELECT name  = "carrierList" size = "1">
 <OPTION value = "WONoSelectionString"> All </OPTION>
 <OPTION value = "carrier1"> carrier1 </OPTION>
 <OPTION value = "mobile.telusmobility.com"> mobile.telusmobility.com
</OPTION>
 <OPTION value = "university"> university </OPTION>
 <OPTION value = "unknown-carrier"> unknown-carrier </OPTION>
 </SELECT>

 <SELECT name  = "deviceList" size = "1">
 <OPTION value = "WONoSelectionString"> All </OPTION>
 <OPTION value = "942266359-11164"> 942266359-11164 </OPTION>
 <OPTION value = "device1"> device1 </OPTION>
 <OPTION value = "dcooper_cooper"> dcooper_cooper </OPTION>
 <OPTION value = "192.168.1.105"> 192.168.1.105 </OPTION>
 </SELECT>

 <SELECT name  = "providerList" size = "1">
 <OPTION value = "WONoSelectionString"> All </OPTION>
 <OPTION value = "W-Slot Machine"> W-Slot Machine </OPTION>
 </SELECT>

 <input type="checkbox" name="date" value="date" checked> Date

 <input type="checkbox" name="device" value="device" checked> Device ID

 <input type="checkbox" name="carrier" value="carrier" checked> Carrier ID

 <input type="checkbox" name="provider" value="provider" checked> Content
Provider

 <input type="button" name="btnQuery"
 value="Query" onclick="executeQuery()">

</FORM>

======================================
"Berny" <[email]> wrote in message
news:[email]...
(buttons,


author: GalaSoft Laurent Bugnion

subject: Re: Works in IE but not in Netscape

text:
Hi,

ShelliO wrote:
<snipped>

Check what's possible and what is not possible in LiveConnect with the
plug-in here:
http://www.galasoft-lb.ch/myjavascript/consulting/LiveConnect130

Laurent


author: Michael Bulatovich

subject: Portable Toolbars

text:
I would like to make some custom toolbars portable so that they
can be easily installed on various computers. I've got a vague idea
that the way to do this has something to do with menus.

Can someone point me in the right direction, and steer me clear of any
pitfalls?


author: me

subject: Re: Portable Toolbars

text:
When you create a toolbar, you have to specify a menugroup to add it to.  In
a standard installation, your choices will include ACAD, possibly EXPRESS,
etc.  The associated .mns and/or .mnc files get updated.  I believe, though
I can't test it now, that the uncompiled .mns files gets appended with the
new toolbar definition.  It is advised that you create your own .mns file,
with your toolbar definitions. (See the help files under Custom Menu files -
it eplains the syntax for each line of the menu file.  Also, if you can
manage to find a copy of MAximizing AutoCAD R13 - the most recent editon of
this book - the procedure is explained in great detail.)

Basically, once your create and load the menu file, you can add all your
tools the way you have been, being sure to specify this menu group as the
'home' for the new toolbars.  When you have finished, exit autocad and edit
the mns file.  You should see the new tolbar definitions.  You will need to
edit the icon specs, because they frequently get inadequate path specs, that
results in them turning into smiley faces when AutoCAD cannot find the
bmp's.

Also, if you get the hang of hard-coding your toolbars directly in the mns
file, as with notepad or some such editor, be aware that you must _delete_
the similarly-named .mnc (compiled menu) file, in order for your changes to
take effect.  If the mnc is missing, AutoCAD reads the mns and recompiles
the mnc.

The help files, within the AutoCAD Customization Guide, are really helpful
for this effort.

HTH

Adam Wuellner

"Michael Bulatovich" <[email]> wrote in message
news:EHG_8.40189$[email]...


author: Dark

subject: Re: Portable Toolbars

text:
Michael,
If you use ACAD2000 or later & you use only original icons
 (no customized icons),
you may consider about exporting your configuration to a file.
(Right click on bottom "command" area -> "options" command ->
"Profile" ->export)
Then copy the file to other PC & import it into ACAD.
I think it's a good way, too.
It even save some time to do the configuration.
Hope this do help.

"Michael Bulatovich" <[email]> ï¿½ï¿½ï¿½gï¿½ï¿½lï¿½ï¿½
news:EHG_8.40189$[email]...


author: M.C. Loebach

subject: Re: Portable Toolbars

text:
Dear Michael,
What you want to do is to create a custom menu (mnu) file. In this you can
create, drop-down menus, pop-up menus, toolbars, etc.. Then you would use
"menuload" to load your file on to any machine running the same version of
AutoCAD.
I hope you find this helpful.
Michael
[email]
www.loebach.com/services/cadservices.htm

Michael Bulatovich wrote:


subject: Re: Portable Toolbars

text:
"me" <[email]> wrote in message
news:bjH_8.10934$[email]...

I'm going through them tonight, thanks


subject: Re: Portable Toolbars

text:
Thanks Michael, I've got it just about working with my first couple of bars.
I did it by studying a couple of mnu's and mns's, a bit of cutting and
pasting, and creating an MNS file with a similar MNU file

"M.C. Loebach" <[email]> wrote in message
news:[email]...


subject: Re: Portable Toolbars

text:
WoooHooo! Four hours later I got it.
I started with cutting and pasting from a bunch of files, then read the help
(which is pretty good).

One thing though. I noticed that when comparing an original MNU file with
it's MNS. When the toolbar's
'tbarname' has a space in it, a line seems to be added to the MNS under the
**<TOOLBARNAME >
alias declaration which goes
** <TBARNAME_WITH_ALL_THE_SPACES_REPLACED_BY_UNDERSCORES>.

Acad then seems to refer to the toolbar by this alias rather than the alias
you declare.

One other thing still puzzles. At the end of a flyout definition you can
specify an alias, with the
menugroup.toolbarname form. However, I have no idea how to get anything
other than 'Acad'
to work as the menugroup. Anyone know why?


subject: Re: Portable Toolbars

text:
Great! I am glad you found it helpful.
Michael

Michael Bulatovich wrote:


author: Rolf Blumenschein

subject: Re: Portable Toolbars

text:
"Michael Bulatovich" <[email]> wrote in message
news:1SS_8.40327$[email]...

Puzzling.
Did you try loading the flyout's menugroup before loading the main
menugroup?  I.e., so that the flyout definition was valid before loading the
flyout definition?
Long shot, but what the hay?


author: Dave C.

subject: Re: Portable Toolbars

text:
Is there an easy way to get the icon path set correctly?  That's been
frustrating since R12, maybe even before..... Seems like a lot of work to
save each icon separately in the shared folder....

"M.C. Loebach" <[email]> wrote in message
news:[email]...
bars.
can
use
version of
any


author: Tweak

subject: Re: Test...

text:
news:[email],
I was enjoying a cool glass of lemonade when Tina Fisher
<[email]> stumpled in completely drunk and shouted:

Coffee machines have Usenet access now?!


author: hank

subject: Re: Test...

text:
check out oct or nov. issue of maximum PC. the rig of the month was a coffee
machine/ PC


author: Ykalon Dragon

subject: Re: Test...

text:
On Fri, 20 Dec 2002 10:02:20 GMT, "Tweak" <[email]>
wrote:

Of course!

http://www.pimprig.com/modules.php?op=modload&name=mediaGallery&file=index&do=showpic&pid=411&orderby=dateD


author: "ItsAllJunk"

subject: Re: Test...

text:
"Tweak" <[email]> wrote in message
news:MUBM9.403799$[email]...

Sure, What did you think Eep was ? A human ?


author: Gandalf Parker

subject: Re: Test...

text:
"Tweak" <[email]> wrote in news:MUBM9.403799$%m4.126389
@rwcrnsc52.ops.asp.att.net:

All machines have usenet access. The machines just arent telling anyone.

Gandalf  Parker
"Computers don't make errors. What they do, they do on purpose."
 - Dale Gribble


author: Richard Hutnik

subject: Halo RTS?

text:
Considering the number of factions in Halo 2, it would seem a natural
that Microsoft would consider doing an RTS based on Halo.  Anyone
heard anything about this being considered?

- Richard Hutnik


author: Kevin C.

subject: Re: Halo RTS?

text:
"Richard Hutnik" <[email]> wrote in message
news:[email]...

I'm still waiting for the Battletech RTS.


author: "Matthew Shaw"

subject: Re: Halo RTS?

text:
There's not *that* many factions...
Flood
UNSC (Earth's side)
Sentinals
Convenant
...in fact it's the same as before

Although I do agree that an RTS would be very cool. Perhaps they will do
one?

"Richard Hutnik" <[email]> wrote in message
news:[email]...


author: Green Shampoo

subject: Re: Halo RTS?

text:
"Richard Hutnik" <[email]> wrote in message
news:[email]...

That would be sweet. RTS are the only games I enjoy on PC.


subject: Re: Halo RTS?

text:
"Matthew Shaw" <matted@[REMOVETHIS]bigpond.net.au> wrote in message news:<qNjnd.41819$[email]>...

Considering the Covanent is now fractured, there are now 5 factions to
the game.

Bungie did Myth, so perhaps they could do a Halo RTS game.  Hey,
anyone want to port Myth to Halo's world? :-)

- Richard Hutnik


author: Xbot

subject: Re: Halo RTS?

text:
"Richard Hutnik" <[email]> wrote in message
news:[email]...

Add in the novels and you have one or two more human factions as well.

I'm surprised no one's mentioned this, but Halo actually began life as an
RTS before it was transformed into an FPS series.


author: Roderick Pommier

subject: Re: Halo RTS?

text:
Add in the novels and you have one or two more human factions as well.

Does Myth work on Win XP? I remember wishing it had skirmish.

Rod


author: Raymond Martineau

subject: Re: Halo RTS?

text:
On Sat, 20 Nov 2004 15:30:59 GMT, "Roderick Pommier" <[email]>
wrote:

I don't know about Myth, but Myth II: Soulblighter works.

The only problem with Myth II is that Direct 3D doesn't work as well as it
should - the cursor keeps flickering making it hard to manage your units.
Software rendering works fine (and suprisingly well).


author: Phil Bass

subject: Invoking the mknod system call in init_module() - bad idea?

text:
I'm just starting to explore kernel modules, so this is probably a silly
question, but...

I've been reading a document on our company network called "Linux Kernel
Module Programming Guide" (not sure where it originated). The chapter on
Character Device Drivers covers dynamic allocation of the major device
number and mentions three ways of creating the appropriate device file:
1) have the driver "print" the number and run mknod by hand; 2) write a
script to read /proc/devices and run mknod; 3) "have our driver make the
device file using the mknod system call after a successful registration
and rm during the call to cleanup_module".

The last option seemed the best, so I read the chapter on system calls.
The Guide has some sample code that includes the following:

/* The system call table (a table of functions). We
  * just define this as external, and the kernel will
  * fill it up for us when we are insmod'ed
  */
extern void *sys_call_table[];

The sample code looks up the addresses of the open and getuid system
calls in sys_call_table.

All of this I thought I understood until I found that my module fails to
install because there's no sys_call_table symbol exported from my kernel
(2.4.20-20.9).

So, what's going on? Is the document I've been reading wrong? Out of
date? (It's a bit vague on the kernel versions it documents, but seems
to cover 2.4.x.) Or is there a more fundamental reason why init_module()
shouldn't try to use mknod?


author: Kasper Dupont

subject: Re: Invoking the mknod system call in init_module() - bad idea?

text:
Phil Bass wrote:

Most drivers have static device number, which means you can just
create the inodes once with the right number.

Instead of option 3, which doesn't sound like the best solution
you could use devfs or sysfs to create the inodes from the module.
That is a lot cleaner than having the module do it through an
mknod call.

For one reason sys_call_table is no longer exported see:
http://www.daimi.au.dk/~kasperd/comp.os.linux.development.faq.html#syscall

Besides calling system calls from a module is bad design.

For a better way to do file access from within the kernel see:
http://www.daimi.au.dk/~kasperd/comp.os.linux.development.faq.html#filp_open

Notice that in your case file access from within the kernel is
not a good idea. Using devfs would be a better solution. Besides
there might be additional obstacles to calling mknod from a
module.


author: Pete Zaitcev

text:
On Mon, 24 Nov 2003 16:08:44 +0000, Phil Bass wrote:

The author needs molestation with a chainsaw.

Why are you trying to allocate majors dynamically anyway?
Is there a rational reason?

-- Pete


text:
Kasper Dupont wrote:

First, thanks for taking the time to answer what has indeed turned out
to be a silly question. :-)

I shall now demonstrate the extent of my ignorance, because I've never
heard of 'devfs' or 'sysfs'. FWIW, apropos devfs on my Red Hat 9
installation produces "devfs: nothing appropriate" and man sysfs
produces a page whose words I understand, but which completely fails to
convey any underlying purpose to me! :-(

However, I think we may not be quite on the same wavelength in this
thread. Here's some background to my fumblings...

I work for a company that makes (specialist, one-off) control systems.
Our current products include embedded devices in which we run the
VxWorks real-time operating system, and standard PCs running Linux for
the user interface. We don't really need the real-time features of
VxWorks and we have become increasingly frustrated with the primitive
state of the C++ development tools available for that OS. So we are
planning to switch to Linux for our embedded devices. (Possibly a
real-time Linux if we find we need it.)

If this is to work we are going to have to learn how to write Linux
device drivers for our custom hardware. I'm just beginning to explore
what that means in practice.

Thanks for the link. I kind of guessed that was the answer (hence the
title of the original post), but I didn't know why. Mulling over it
again, though, I think my mistake was to think I was perfoming a single
operation (create a device) rather than two quite distinct operations
(install a new device driver + create one or more devices).

Actually, I didn't want to access the file system as such, I just needed
an inode for my device driver.


author: [redacted]

text:
Pete Zaitcev <[email]> wrote:

Sorry for a ping-pong question, but is there a big drawback with
using dynamical major device numbers? Best reason I could think
of in favor would be that it reduces the chances of accidentally
clashing with another device, especially when the module is going
to be used by people not aware of this problem and in cases were
it's rather unlikely that the module will sometime get included
into the kernel. I usually write a short init script that loads
the module,checks /proc/devices and then creates the required
device file (and, of course, deletes it on shutdown). Has been
working quite well until now in the few cases where I used it.

                                   Regards, Jens


text:
Pete Zaitcev wrote:

:-) I'll be careful not to rely on this document too much, then.

Well, I'm intending (eventually) to write device drivers for our custom
hardware. Linux installations won't know about those devices and there's
no prospect of our device drivers being useful outside our organisation.
  Dynamic allocation just felt right.


author: P.T. Breuer

text:
Phil Bass <[email]> wrote:

You will have to code for devfs anyway (2.4 kernel). It's part of the
architecture and you must expect it to be possibly present. It's the
way to go. But anyway, taking a random device major is silly. Take a
fixed device major and let people change it (major=...) with a module
parameter if necessary.

I guess your major is already catered for to some extent in the
devices.txt listing. That is, you are providing a driver that is an
alternative to a standard driver, and you want people to use yours
instead of the standard.

If not, then pick one of the reserved for ad hoc use majors.

Do you really need a major? If you want a serial interface, for
example, you should hook into the standard serial driver, which
has hooks for minors.

In 2.6 kernels you can reserve subregions of major/minor space (AIR).

Peter


text:
On Mon, 24 Nov 2003 21:17:24 +0000, Jens.Toerrin wrote:

Simplistic dynamic majors support is doable with a correctly
written script, as long as you can ignore corner issues,
such as coexistence with static assignments, chroot, permissions
and permission changes, missing /proc, etc. For example, what
happens if your script encounters one of the namespace entries
occupied by something else? It may happen if the system crashes
and dynamic devices are brought up in a different order.

The difficulty is to create something that works in all cases.
It may even be impossible. The devfs floundered over such overreach
and also over putting the policy into kernel. Its compatiblity
was not very gracious as well.

It may be a good idea to ride scripts like you do, in limited
circumstances. Red Hat actually ships some of that, at least
for mainframes. However, Phil obviously did not know what he
was doing, hence my question.

-- Pete


author: Jitesh K Patil, Systems Engineer, Wipro Technologies.

text:
Phil Bass <[email]> wrote in message news:<DUFwb.12788$[email]>...

Hey Guys,
I have been reading these posts. And I want to share a very simple
method that I use. Instead of the driver deciding the module num, I
let the system assign it any number. Then I use a script to get the
system allocated module number and create a mode with the same major
number.

Here is a simple script that will do the job...
//////////////////////////////////////////////////////////////////////
insmod -s drvmodule
if [ $? -ne 0 ]
then
	echo Driver installation: ERROR - 'insmod' command failed
	return $ERR_INSMOD
fi

majorDevNumber=`cat /proc/devices | grep drvmodule | cut -d " " -f1`
if [ ! "$majorDevNumber" = "" ]
then
	rm -f /dev/$1
	mknod /dev/$1 c $majorDevNumber 0
	if [ $? -ne 0 ]
	then
	   echo Driver installation: ERROR - Unable to make device node
	   return $ERR_MKNOD
	fi
else
        echo Driver installation: ERROR - Unable to determine the
major num
	return $ERR_MAJNUM
fi
//////////////////////////////////////////////////////////////////////


author: Alon Zilkha

subject: File Input Problem, please help, specific to XP SP2

text:
Hi All,

I just noticed a problem with Internet Explorer on Service Pack 2 of Windows
XP and it is driving me insane!! I would greatly appreciate it if someone
could help me out...

I have a basic asp file (test.asp) with the following code:

----------------------------------------
<%
Response.Write(Request.Form("testalon"))
%>

<form name=yo method="post" action="test.asp">
<input type=file name=testalon>
<input type=button value=submit onclick="javascript:yo.submit();">
</form>
----------------------------------------

When I click on the submit button, I get the following Script Error:
"Access is Denied"

However, if I change the input to a text input rather than a file input,
everything works fine...

This does not happen with all previous versions of IE!!! (before Windows XP
Service pack 2). Does anyone know how to get around this (perhaps a setting
in IE) ? It will be difficult for me to switch all my code to text inputs
rather than file inputs since they are used so frequently...

Thanks,
Alon


author: Steve van Dongen

subject: Re: File Input Problem, please help, specific to XP SP2

text:
[email] (Alon Zilkha) wrote:

Try using a real submit button
<input type=submit value=submit>

Regards,
Steve


text:
So no one has any ideas???

"Alon Zilkha" <[email]> wrote in message
news:[email]...


author: Randy Webb

text:
Alon Zilkha wrote:

Please don't top-post. Read the FAQ with regards to such.

<--snip-->

<input type="submit" value="submit">

Why are you using JS to duplicate something the browser will already do
on its own?


author: Allan R Hise

subject: Harpoon

text:
I've played Harpoon on a number of occasions, and I have decided that I really
need it for my own...  So I flipped through the latest MacUser and noticed
the Harpoon Challenger Pack.  What is this?  Is it  a color version?  Is there
a color version?  Would a color version slow down a Mac IIsi w/ 5 meg RAM and
FPU too much?

Thanks.
Allan R. Hise
[email]

(Now if I can only figure out where to order Hellcats from... hint, hint...)


author: J. Taggart Gorman

subject: Re: Harpoon

text:
In article <[email]> [email] (Allan R Hise) writes:

  The Challenger Pak is the main game, the Harpoon Scenario Editor, and some
additional scenarios that are not available elsewhere.  The game is B&W.  The
editor works full screen, in color, but the game is for 9" B&W's.
  To get Color Harpoon, you need to buy it from 360, and it is only available
from 360, and it is like $80, and you have to buy color Battlesets from 360,
too, and these are $30 a piece.  I don't think color Harpoon will slow down
your IIsi, but it will slow down your wallet.  (On a side note, B&W Harpoon
works just fine on my 5/105 IIsi, with FPU.)

|--------------------------------| "I like it.  It's got that 'It's a cruel
|      J. Taggart Gorman Jr.     |  world - Let's throw ourselves in the
| [email] |  abyss.' type ambiance."
|--------------------------------|     - Christian Slater, in _Heathers_


author: Robert K Shull

subject: Re: Harpoon

text:
[email] (J. Taggart Gorman) writes:

Umm, not quite. The upgrade from B&W Harpoon to color Harpoon is more on the
order of $20. The upgrade from B&W Battlesets to color Battlesets is $10.
Battleset #4 (Indian Ocean/Persian Gulf) includes the color disk. I don't
know whether they are now packaging the color disks in other Battlesets.
It looked like a last minute change (a sticker stuck over the "color disk $10"
note, saying "color disk included").

	Robert


author: B.S. Davidson

subject: Re: Harpoon

text:
In article <[email]> [email] (J. Taggart Gorman) writes:
	Maybe they aren't offering this anymore, but when I bought my ChallengerPack from MacConnection, there was an offer inside to get Color Harpoon for
$15.  You have to Mail them your original Harpoon diskettes though...

My two cents,
Brian Davidson
[email]


author: John Kelly

subject: trailing dot on enhdnsbl query result, please apply this patch - "enhdnsbl.patch" 1.7 kBytes yEnc

text:
My enhdnsbl lookups which tested specific return addresses were not
working. After some debugging, I realized the dns map spec

                   ^^^
was appending a trailing dot to the result address, and the result did
not match, because I list the addresses without a trailing dot

The bat book shows examples like mine above, with no trailing dot.  So
I may not be the only one caught by this trap.

Attached is a patch to enhdnsbl.m4 to make the lookup work with or
without trailing dots.  It also cleans up the .m4 output spacing.

Here it is inline too, in case the attachment does not arrive intact.

=ybegin line=128 size=1832 name=enhdnsbl.patch
WWWJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Xï¿½^3\ZZ\WZ_W[cJ[ad\ad\cXZZZZZZZZZJWZ^ZZ74UUUJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Xï¿½^3\ZZ]WZ^W\[J\[d^ad]^XZZZZZZZZZJWZ^ZZ74jjJWcVbJUcVbJjj74JM74J
M74J74Wï¿½ï¿½ï¿½ï¿½ï¿½ï¿½RZS74Wï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½|ï¿½QVï¿½ï¿½ï¿½ï¿½QVï¿½ï¿½ï¿½ï¿½74Uï¿½ï¿½ï¿½ï¿½ï¿½ï¿½RZSï¿½ï¿½ï¿½74Uï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½|ï¿½QVï¿½ï¿½ï¿½ï¿½QVï¿½74Jï¿½o|}syxsnRï¿½Nsï¿½dJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Xï¿½^Vï¿½J[Xc
J\ZZ\YZ_Y[cJ\[d\ad\cJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Joï¿½ï¿½JNQS74Jvymkvï¿½myxpsq74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½|ï¿½QVï¿½QSï¿½ï¿½ï¿½74jjJW\[VaJU\[VaJjj74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½}|ï¿½ï¿½QVJï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|qï¿½SVï¿½[QVï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Xï¿½ï¿½ï¿½ï¿½Wï¿½ï¿½ï¿½ï¿½ï¿½Xï¿½ï¿½ï¿½QVï¿½k|qï¿½SQSï¿½ï¿½ï¿½74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½w}qï¿½QVJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|q\ï¿½SVï¿½[QVï¿½L__ZJ|ï¿½ï¿½ï¿½ï¿½ï¿½
ï¿½ï¿½dJLJNï¿½QPï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½JLJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½JQï¿½onx}lvï¿½}|ï¿½ï¿½ï¿½LQVï¿½ï¿½k|q\ï¿½QSQSï¿½ï¿½ï¿½74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½w}qï¿½~wzï¿½QVJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½k|q]ï¿½Vï¿½ï¿½QVï¿½L^_[J~ï¿½ï¿½ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½JLJNï¿½QPï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½JLJï¿½ï¿½JQï¿½onx}lvï¿½}|ï¿½ï¿½ï¿½LQVï¿½ï¿½k|q]ï¿½QSQSï¿½ï¿½ï¿½74Wï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½wk~mrï¿½QVJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|q^ï¿½S
Vï¿½[QVï¿½Nï¿½QUQVï¿½k|q^ï¿½SQSï¿½ï¿½ï¿½74Uï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½onx}lvï¿½wk~mrï¿½QVJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|q^ï¿½SVï¿½[QVï¿½Nï¿½QUQ33Vï¿½k|q^ï¿½JnyvRTSSQSï¿½ï¿½ï¿½74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½RbS74JMJnx}J
ï¿½ï¿½ï¿½ï¿½ï¿½JszJï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½ï¿½ï¿½Jï¿½onx}lvï¿½}|ï¿½ï¿½74J|NT333NdJNPï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½74jjJW]\V[]JU]\V[]Jjj74Jï¿½|fihNUf~wzh33NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ^XaX[JNdJï¿½onx
}lvï¿½w}qï¿½~wzï¿½QS74J|fihï¿½onx}lvï¿½wk~mrï¿½3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|q_ï¿½SVï¿½[QVï¿½ï¿½ï¿½ï¿½QV74Wï¿½|fihï¿½k|q_ï¿½3NMï¿½ï¿½ï¿½ï¿½ï¿½JNj
J_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Uï¿½|fihï¿½k|q_ï¿½JNT3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|q`ï¿½SVï¿½[QVï¿½ï¿½ï¿½ï¿½QV74Wï¿½|fihï¿½k|q`ï¿½3NM
ï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Uï¿½|fihï¿½k|q`ï¿½JNT3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|qaï¿½SVï¿½[QVï¿½ï¿½ï¿½ï¿½QV74Wï¿½|fihï¿½
k|qaï¿½3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Uï¿½|fihï¿½k|qaï¿½JNT3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|qbï¿½SVï¿½[QVï¿½ï¿½ï¿½ï¿½QV7
4Wï¿½|fihï¿½k|qbï¿½3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Uï¿½|fihï¿½k|qbï¿½JNT3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Rï¿½ï¿½ï¿½Rï¿½ï¿½Qï¿½k|qcï¿½SVï¿½[Q
Vï¿½ï¿½ï¿½ï¿½QV74Wï¿½|fihï¿½k|qcï¿½3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Wï¿½ï¿½ï¿½ï¿½ï¿½ï¿½RW[S74Uï¿½|fihï¿½k|qcï¿½JNT3NMï¿½ï¿½ï¿½ï¿½ï¿½JNjJ_XaX[JNdJï¿½onx}lvï¿½w}qï¿½QS74Uï¿½ï¿½ï¿½ï¿½
ï¿½ï¿½RW[Sï¿½ï¿½ï¿½74ï¿½Jxï¿½Jï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Jï¿½ï¿½Jï¿½ï¿½ï¿½Jï¿½ï¿½Jï¿½ï¿½ï¿½ï¿½74
=yend size=1832 crc32=b1e7556d


author: Claus Aßmann (-no-copies-please

subject: Re: trailing dot on enhdnsbl query result, please apply this patch - "enhdnsbl.patch" 1.7 kBytes yEnc

text:
John Kelly  wrote:

cf/README:

FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2.')

See the trailing dot...


text:
On Tue, 22 Apr 2003 03:13:08 +0000 (UTC), Claus Aï¿½mann
<ca+sendmail(-no-copies-please)@mine.informatik.uni-kiel.de> wrote:

Thanks, now I see it.

Nevertheless, it's error prone to require a trailing dot on each
address to be listed.  Some of us without sharp vision may not even
see it!

Since my patch will make it work with or without the trailing dot,
applying the patch seems desirable.  But if you prefer to answer this
type of post repeatedly, that is up to you.

BTW, your sig/tag line is excellent:

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet?


author: Zenomorph

subject: Re: Building  new system using the BX6. What files, drivers, bios updates I will need?

text:
[email] (Herbavor) wrote:

Nah, the previous guy was either joking or delusional.


author: Tai Morris

subject: Re: Why the Wintel apologists post so much drivel

text:
In article <555oks$[email]>, [email] (David
Field) wrote:

< ...
< Funny, I never seem to get any of this slow performance. I watched the
< guy across the office from me do work in Photoshop 3.0.4 on his
< 7600/100 with 48 MB of RAM, and it seemed pitiful compared to my P 120
< with 16 MB.
<
< And I've never installed software that had trouble with my video card,
< drivers, or SB card. I'm up to about 2.8 GB of miscellaneous software
< and still don't have these problems.
<
< >You can have it WE don't want it, its too much trouble and pain
< >for us!
<
< Fine, George. I'll get faster performance for less cost.

I don't believe one can say that about PC (being faster and
cheaper than Macs) anymore, judging by the all the 603e-based
Macs and Mac clones released now. There goes that PC advantage.

Tai


author: DC

subject: Help: I need to join maps together and other stuff in PSv6.0.

text:
Hi ,
      I have a street directory that is not set up the way I want it.
      It has about 600 pages but I need only 10 pages of info
      so that I can find a street quickly.

      I want to have each suburb on one page not on 2,3 or 4 as is
      often the case and everything I need on one page to find any street
      location for each suburb.

      I can scan all the maps I need and create an image of each map.
      I have used the crop and lasso to get the bits of a map for each
      suburb and save them to a file. Is scaning to a bmp file the best
     choice of image file?

      How do you move the bits around and create a suburb map? I had
      a look in the help index and think I might need to make layers of
them.
      Then move them around so they all fit together. How is that done?

      The second job is to avoid the standard 100 page index in my street
directory
       and create an alphabetical list of all the streets in
      each suburb and display them around the image of  the
      suburb map. Would this be done with a layer again?

      The third job I would like to do with Photoshop is draw thin colored
lines
      from the street name in the map margin index to where the street is
displayed
      on the map. Any lookup can then be done visually no grid refs and so
on.

      The final job would be to merge all the bits into one file for each
suburb.

     Any help or pointers in the right direction would be very much
appreciated.

Thanks,
Dev


author: Jim Hall

subject: Re: Help: I need to join maps together and other stuff in PSv6.0.

text:
DC wrote:

Mostly what you need is to learn the basics of Photoshop. Reading a good
book on the basics would be really helpful for you. Try "Photoshop for
Dummies", or start looking through the manual. What you want to do is not
hard, but if you had a friend who could sit down with you and show you how
to do it, that would be best. It's too much stuff for a Usenet post.

Jim

Jim


author: Tom Nelson

text:
In article <9v6en6$s0j$[email]>, DC <[email]>
wrote:

In article <[email]>,
Jim Hall <[email]> wrote:

Well...it's not exactly rocket science, Jim.
DC, change the BMPs to Greyscale. Make a new blank image that's bigger
than the finished size you need (if you're scanning 3 pages wide, make
the new file 3x the size of each page).

Drag each page over with the Move tool. Each becomes a new layer.
Temporarily change the opacity of the top layer to 50% so you can line
it up with the map segment under it. Then change the opacity back to
100% and Merge Down.

When you're done, flatten the image and size it to whatever you need.
Change it back to Bitmap mode if you like in order to keep the file
size low. You're done!

Tom Nelson
Tom Nelson Photography


author: Michael

subject: problem with strtok()

text:
Hi,

I have a proble I don't understand when using strtok(). It seems that if I
make a call to strtok(), then make a call to another function that also
makes use of strtok(), the original call is somehow confused or upset.

I have the following code, which I am using to tokenise some input which is
in th form x:y:1.2:

int    tokenize_input(Sale *sale, char *string){

    char    *temp;
    int     temp_int;
    int     result = TRUE;

    if((temp = strtok(string, ":")) == NULL){
        result = FALSE;
    } else {
        sale -> sale_id = atoi(temp);
    }

    if((temp = strtok('\0',":")) == NULL){
        result = FALSE;
    } else {
        if(get_date(temp)
line, my problem started*/
            strncpy(sale -> date, temp, DATE_LENGTH);
        } else
{
/*These were added at the same time*/
            result = FALSE;
/**/
        }
/**/
    }

    if((temp = strtok('\0',".")) ==
NULL){                                    /*this now returns NULL*/
        result = FALSE;
    } else {
        temp_int = atoi(temp)*100;
    }

    if((temp = strtok('\0',":")) == NULL){
        result = FALSE;
    } else {
        temp_int = temp_int + atoi(temp);
        sale -> price = temp_int;
    }

return result;
}

get_date() is also using strtok(). It all worked fine until I added the
marked lines in order to do some validation of input, at which point the
later strtok() began returning NULL.

Can anyone explain why this would occur and how  can get around it?

Thanks for your help

Michael


author: Stan Milam

subject: Re: problem with strtok()

text:
Michael wrote:

The strtok() function uses a static char * to maintain the address of
the string it is parsing.  If a new initializing call to strtok() is
made you will lose the address of the first string.  Over the years I've
written several replacement functions for strtok() (which I believe
should be deprecated).  My favorite is something I wrote a few years ago
in another language and ported recently to C.  Here it is, so enjoy.

/**********************************************************************/
/* File Name:                   gettoken.c.                           */
/* Author:                      Stan Milam.                           */
/* Date Written:                15-Jan-2000.                          */
/* Description:                                                       */
/*     Extract and remove a token from a string.  Handles empty       */
/*     tokens.                                                        */
/*                 (c) Copyright 2006 by Stan Milam.                  */
/*                        All rights reserved.                        */
/*                                                                    */
/**********************************************************************/

#include <errno.h>
#include <string.h>

#define strzcpy(d,s,l) (strncpy((d), (s), (l))[(l)] = '\0', (d))

/**********************************************************************/
/* Name:                                                              */
/*     gettoken().                                                    */
/*                                                                    */
/* Synopsis:                                                          */
/*     #include "strtools.h"                                          */
/*     char *gettoken( char *dest, char *source, char *delimters );   */
/*                                                                    */
/* Description:                                                       */
/*     The gettoken() function will extract tokens seperated by a     */
/*     specified set of delimiters from a string and store the token  */
/*     value in the dest argument.  Furthermore, the token is removed */
/*     from the source string along with the delimiter.  Empty token  */
/*     fields cause the destination vaue to be an empty string.       */
/*                                                                    */
/* Arguments:                                                         */
/*     char *dest       - Address of a buffer where the token will be */
/*                        stored.                                     */
/*     char *source     - The address of the string containing one or */
/*                        more tokens.                                */
/*     char *delimiters - The address of a string of characters used  */
/*                        as token delimiters.                        */
/*                                                                    */
/* Return Value:                                                      */
/*     The gettoken() function will return the address of the         */
/*     destination argument upon successful completion, and will      */
/*     return NULL when there no tokens left to extract or any one of */
/*     the arguments are a NULL value.  Should one of the arguments   */
/*     be a NULL pointer the global errno variable will be set to     */
/*     EINVAL.                                                        */
/*                                                                    */
/**********************************************************************/

char *
gettoken( char *dest, char *source, const char *delimiters )
{
     char *rv = NULL;

     if ( dest == NULL || source == NULL || delimiters == NULL )
         errno = EINVAL;
     else {
         *dest = '\0';
         if ( *source ) {
             char *ptr = strpbrk( source, delimiters );

             /**********************************************************/
             /* At this point we know we have something, perhaps an    */
             /* empty token. Default the return value to the           */
             /* destination address. If the result of strpbrk() is not */
             /* NULL and not the same as the source, copy the token    */
             /* into the destination string.                           */
             /**********************************************************/

             rv = dest;
             if ( ptr != NULL ) {
                 char *tmp = ptr++;
                 if ( source != tmp )
                     rv = strzcpy( dest, source, (size_t)(tmp-source) );
             }

/**************************************************************/
/* If there are no delimters the source is the token.         */
   /**************************************************************/

             else {
                 rv = strcpy( dest, source );
                 ptr = (char *) source + strlen( source );
             }

             /**********************************************************/
             /* Copy the source string down past the token we just     */
             /* found.                                                 */
             /**********************************************************/

             memmove( (char *)source, ptr, strlen( ptr ) + 1 );
         }
     }
     return rv;
}

#ifdef TEST

#include <stdio.h>
#include <assert.h>

int
main( void )
{
     char dest[100];
     char delim[]="|;!";
     char a[] = "|B.B. Shagnasty|!Shagnasty, William B.|Billy Bob
Shagnasty|;!";

     errno = 0;
     assert( gettoken( NULL, a, delim ) == NULL);
     assert( errno == EINVAL ); errno = 0;

     assert( gettoken( dest, NULL, delim ) == NULL);
     assert( errno == EINVAL ); errno = 0;

     assert( gettoken( dest, a, NULL ) == NULL );
     assert( errno == EINVAL ); errno = 0;

     while( gettoken( dest, a, delim ) )
         puts( dest );

     return 0;
}
#endif


author: Ben Pfaff

subject: Re: problem with strtok()

text:
"Michael" <[email]> writes:

strtok() has at least these problems:

	* It merges adjacent delimiters.  If you use a comma as your
          delimiter, then "a,,b,c" will be divided into three tokens,
          not four.  This is often the wrong thing to do.  In fact, it
          is only the right thing to do, in my experience, when the
          delimiter set contains white space (for dividing a string
          into "words") or it is known in advance that there will be
          no adjacent delimiters.

	* The identity of the delimiter is lost, because it is
          changed to a null terminator.

	* It modifies the string that it tokenizes.  This is bad
          because it forces you to make a copy of the string if
          you want to use it later.  It also means that you can't
          tokenize a string literal with it; this is not
          necessarily something you'd want to do all the time but
          it is surprising.

	* It can only be used once at a time.  If a sequence of
          strtok() calls is ongoing and another one is started,
          the state of the first one is lost.  This isn't a
          problem for small programs but it is easy to lose track
          of such things in hierarchies of nested functions in
          large programs.  In other words, strtok() breaks
          encapsulation.


author: Keith Thompson

subject: Re: problem with strtok()

text:
"Michael" <[email]> writes:

Yup.  strtok() is not reentrant.  It uses internal static data that
makes it impossible to use more than once concurrently.

[...]

Either serialize your calls to strtok(), so each use finishes before
you start another one, or use something other than strtok().

Some systems provide a strtok_r() function.  This is non-standard, and
any code that uses it will be portable only to systems that provide
it, but it might suit your purposes anyway.  (strtok_r() is likely to
be present on any non-ancient Unix-like system.)


author: pete

subject: Re: problem with strtok()

text:
Keith Thompson wrote:

/* BEGIN new.c */

#include <stdio.h>
#include <string.h>

#define STRING  "\n\n\n\tThere's\n a\r beat in \r\tmy head.\n\n\n"
#define WHITE   "\n\r\t"

char *str_tok_r(char *s1, const char *s2, char **s3);
char *str_sep(char **s1, const char *s2);
/*
** K&R2 Exercise 2-4
** alternate squeeze functions
*/
char *str_squeeze(char *s1, const char *s2);
char *str_squeeze_r(char *s1, const char *s2);
char *str_squeeze_s(char *s1, const char *s2);

int main(void)
{
    char s1[sizeof STRING];

    puts(strcpy(s1, STRING));
    puts(str_squeeze(s1, WHITE));

    puts(strcpy(s1, STRING));
    puts(str_squeeze_r(s1, WHITE));

    puts(strcpy(s1, STRING));
    puts(str_squeeze_s(s1, WHITE));

    return 0;
}

char *str_tok_r(char *s1, const char *s2, char **s3)
{
    if (s1 != NULL) {
        *s3 = s1;
    }
    s1 = *s3 + strspn(*s3, s2);
    if (*s1 == '\0') {
        return NULL;
    }
    *s3 = s1 + strcspn(s1, s2);
    if (**s3 != '\0') {
        *(*s3)++ = '\0';
    }
    return s1;
}

char *str_sep(char **s1, const char *s2)
{
    char *const p1 = *s1;

    if (p1 != NULL) {
        *s1 = strpbrk(p1, s2);
        if (*s1 != NULL) {
            *(*s1)++ = '\0';
        }
    }
    return p1;
}

char *str_squeeze(char *s1, const char *s2)
{
          char *const p1 = s1;
    const char *const p2 = s2;

    s2 = strtok(p1, p2);
    while (s2 != NULL) {
        do {
            *s1++ = *s2++;
        } while (*s2 != '\0');
        s2 = strtok(NULL, p2);
    }
    *s1 = '\0';
    return p1;
}

char *str_squeeze_r(char *s1, const char *s2)
{
          char *const p1 = s1;
    const char *const p2 = s2;
    char *p3;

    s2 = str_tok_r(p1, p2, &p3);
    while (s2 != NULL) {
        do {
            *s1++ = *s2++;
        } while (*s2 != '\0');
        s2 = str_tok_r(NULL, p2, &p3);
    }
    *s1 = '\0';
    return p1;
}

char *str_squeeze_s(char *s1, const char *s2)
{
          char *const p1 = s1;
    const char *const p2 = s2;
    char *p3 = s1;

    do {
        s2 = str_sep(&p3, p2);
        while (*s2 != '\0') {
            *s1++ = *s2++;
        }
    } while (p3 != NULL);
    *s1 = '\0';
    return p1;
}

/* END new.c */


author: Bill P

subject: Window Blackout Automation

text:
Kit (the car on "Night Rider") used to be able to blackout the windows
whenever Mike Knight told him to. I saw a preview of this technology  (for
homes) at EPCOT a few years ago. Are we there yet? Anyone own such a thing?
Would sure be cool to do... If it don't cost too much.


author: Mark Thomas

subject: Re: Window Blackout Automation

text:
thing?

A former model home across the street from me has a window over the master
tub that goes from clear to "frosted" at the flip of a switch. If its
privacy rather than light you care about, that technology has been available
for a few years.


author: [redacted]

subject: Re: Window Blackout Automation

text:
In the alt.solar.thermal group there was a message about filling the
space between two panes with foam.  It provided thermal insulation.
I suppose you could fill the space with black ink, and drain it out
again.  This sort of thing should only cost a few hundred bucks per
window.

On Fri, 9 Nov 2001 18:35:09 -0500, "Bill P" <[email]>
wrote:


author: Bill Fuhrmann

subject: Re: Window Blackout Automation

text:
thing?

The only ones I have seen were in a research oriented class 1 clean room.
This was done so that people touring the facility could look in (it wasn't
set up for more than a couple people at a time to clean up for entry) but
the windows could be turned white when the work was to be kept confidential.

Very expensive.


author: Mark Lloyd

subject: Re: Window Blackout Automation

text:
"Bill P" <[email]> wrote in
news:ZHZG7.38957$[email]:

KITT (Knight Industries Two Thousand). Electrochromic glass is very
expensive.


author: Dave Houston

subject: Re: Window Blackout Automation

text:
http://www.sage-ec.com/pages/intro.html

"Bill P" <[email]> wrote:

---
http://www.laser.com/dhouston/
The problem with Usenet is that so many with
nothing to say feel the necessity to say it.


author: Alan McKay

subject: Re: Window Blackout Automation

text:
Do a google search on "Electrochromic window"
and see what comes up.


author: Fringe Ryder

subject: Re: Window Blackout Automation

text:
"Bill P" <[email]> sez:

I've been in several mansions in L.A. with this technology, over a decade
ago.  (Not mine; I was in the "aspiring to rent a used trailer" class at
the time.)  It's expensive and delicate, and needs replacing if it gets too
much direct sunlight.  Normal people use motorized curtains.

- EMail must delete "delete" embedded in domain


author: Dan

subject: Universe I-Descriptor using the @NB variable

text:
Hello All,

Does anyone have an example of an I-Descriptor using the @NB variable
in UniVerse?

Everything I try returns a 0 at the break level.

TIA,
Dan


subject: Re: Universe I-Descriptor using the @NB variable

text:
On Nov 25, 5:18 pm, Raymond Kelso <[email]> wrote:

Rayk,

Thanks for your reply.  Sorry it took so long to get back to you, I
just got back to that customer site.
Your example was perfect.  I was able to get the @NB to work with your
example.

Thanks again,
Dan


author: Raymond Kelso

text:
Hi Dan,

I got the following I-type to work on my system (uv 10.1):

I created a dictionary C.NB with the following syntax:

I(IF TOTAL(VOH) THEN @NB ELSE @NB)  (where VOH is a dictionary showing
the value on hand).

Then I listed my file as LIST MY.BAL BY LOCATION BY GROUP BY ITEM
BREAK.ON ITEM BREAK.ON LOCATION BREAK.ON ITEM CALC C.NB DET.SUP
ID.SUP.

The reason you need the syntax above is twofold - Quotes from manuals
follow:

1. @NB has the value 0 on detail lines, the value 1 on the lowest
level break lines, etc.
It has the value 127 on the grand total line.
Note: Nonzero values of @NB occur only in I-descriptors for which the
CALC
keyword was given, since these are the only I-descriptors that are
evaluated on total
lines.

2. CALC field

field is the name of an I-descriptor that is one of the fields
included  in  the  report. The  I-descriptor  expression MUST include
the TOTAL function.

This is because without the TOTAL function in the I-Type the
expression is not evaluated at the break-level of the report just the
detail level.

Hope this helps

Rayk

On Nov 24, 11:26 am, "frosty" <[email]> wrote:


author: mvdbman

text:
How are you using this? If you are sorting on multiple attributes,
breaking on several,  and totaling at each break (generating sub-
totals), the @NB variable should contain the break level with 255
being displayed at the grand total line.

-Bruce

On Nov 17, 4:54 pm, Dan <[email]> wrote:


author: frosty

text:
"mvdbman" <[email]> wrote in message
news:[email]...

Zero is for detail lines, not the first level of break-on,
according to that doc.

"breaking only at one level, the detail level" makes no sense.
A detail line is not a break-on line.


text:
On Nov 18, 6:32 pm, mvdbman <[email]> wrote:

Hi Bruce,
Thanks for the reply.
Below is the I-Descriptor NBCT:
File name        = DICT FA
Record name = NBCT
This is a Type "I" Descriptor last compiled on 11/19/10 at 08:42.
20 lines long.

----: P11
0001: I
0002: @NB
0003: MD0
0004: NBCT
0005: 8R
0006: S

Below is the LIST statement with a small sample to show the results:
LIST FA SAMPLE 3 BY LOC BREAK-ON LOC WITH RETAIL.AMT GT 0 TOTAL
RETAIL.AMT CALC
 NBCT 09:01:30am  19 Nov 2010  PAGE    1
                                                     RETAIL.$..
FUEL.AUDIT....................    Loc.    INC.TAX...    NBCT....

001!0041!15653!!S                 0041        10,945          0
                                           **            ----------
--------
                                           0041        10,945
0

001!0050!15617!!S                 0050        16,576          0
                                           **             ----------
--------
                                           0050        16,576
0

001!0051!15613!!S                 0051        18,178          0
                                           **             ----------
--------
                                           0051        18,178
0

                                                ==========    ====

45,699          0

Sample of 3 records listed.

There is no difference in the output if I change CALC to TOTAL or
remove the SAMPLE.
Does account flavor matter?  I have tried it in both PICK and
Information accounts.

Thanks,
Dan


author: Emilio Federici

subject: Epson Stylus Photo 870

text:
Hi everybody!, I've recently bought this printer and I'm working on
trying to make it usable under Linux (SuSE 6.2).
I've downloaded and compiled the Gimp-plugin and it works fine; but I
can't understand how to make it work with other software (via lp and
ghostscript).
I've downloaded GNU-Ghostscript-5.50 and compiled with the stp driver
provided with gimp-plugin but I'm not able to set up a good printcap and
aspfilter to make the printer work.
Suggestions, files and links are welcome :-)

Thanks!


author: Wolfgang Fritz

subject: Re: Epson Stylus Photo 870

text:
Emilio Federici wrote:

I did exactly what you want to to, but with an Epson Stylus Color 850.
If you are interested in my setup, I can mail you my configuration.

Wolfgang


subject: Re: Epson Stylus Photo 870

text:
Wolfgang Fritz wrote:

Thanks Wolfgang I'll appreciate this very much.


author: Rob Van Hugten

subject: BRLib.pi bus error

text:
I seem to be experiencing some nonsense with my VA/TCL project. The steps:
[though not all in this order, some steps repeated several times]

1. Created a new VA project (however not using VA)
2. updated to SC++ 7.0.3 and TCL 2.0.3
3. recompiled all ANSI libs, BRLib.pi and probably more besides,
   to match the FAR code and data for my project.
4. also re-precompiled "TCL #includes.cpp"
5. Added all my source code.
6. Added all required RTTI macros and checked.
7. Have no exception handlers as yet.

The problem:
When I run the app, i get a "bomb !" message in the debugger.
Tracing through, the error occurs only a few instructions into
the code.


subject: Re: BRLib.pi bus error

text:
Dear Rob,

I have exactly the same problem with a project that
runs fine with all optimisations off but when I tried
to add 68881 code generation it crashed at the same
location. Let's just hope somebody finds a clue.

Regards: Maarten


subject: Re: BRLib.pi bus error

text:
Dear Bob,

The parts I recompiled are the ANSI library and the precompiled
headers. When I build the final version of a program I start from
the non optimised version, then I add optimisations step by step.
Each time I recompile the headers and the ANSI library.

Do you think it is necessary to recompile other libraries too?
If so, why do all the other versions run allright (including the
PowerPC version)?

Maarten


author: ObjFactory

subject: Re: BRLib.pi bus error

text:
In article <[email]>, [email]
([email]) writes:

Odds are really good that you have compiled some parts of the program *or
its libraries* with 68881 code generation on and some with it off.
Especially, you have to rebuild the precompiled headers and recompile the
ANSI library with 68881 on.

Bob Foster
Object Factory


author: Wes Spears

subject: Video Storage Requirements

text:
How much does storage does video take up.  On average how much would 5
minutes of video eat up?  How about per frame?

This would be using NEXTTIME for playback, I guess.

THanks
Wes


subject: Re: Video Storage Requirements

text:
In article <[email]> [email] (Wes
Spears) writes:

It depends on the compression strategy, frames per second, desired
quality, and playback size.

Compression Strategy

	In general, interframe, or temporal compression will reduce the
data rate by a factor of 2-4.  This technique uses key frames which
contain a complete video frame placed periodically through a movie, along
with difference frames which hold only changes between video frames.
Compression formats which can support interframe compresion include
Cinepak and NeXT's own MicroWavelet compression.

	Unfortunately, interframe compression makes editing more
difficult.  All cuts have to start with a key frame, and must be inserted
immediately before a key frame in the destination.  In general, editing is
best done with video that is not interframe compressed.  (That's why
Motion JPEG is used in hardware assisted editing suites instead of true
MPEG.)

Frames per Second:

	Lower frame rates will require less data per second than higher
frame rates.  Curiously, the use of interframe compression affects this.
With high frame rates, there are fewer differences between frames, and
interframe compression produces higher compression ratios.  It's not
enough to overcome the higher data rate, but it's slightly better than
what one would expect from linear scaling of the data rate.

Desired quality and Frame Size

	As one would expect, higher quality and frame size require higher
data rates.  Some forms of spatial compression (notably wavelets) can take
advantage of the additional information redundancy in a larger frame,
producing slightly better compression than one would expect from just
scaling the number of pixels.

Rule-O-Thumb for Data Rates:

	Everything ultimately boils down to how many bits per pixel your
compression strategy gets.  From this, you can estimate the compressed
data per frame.  Given frames per second, you can estimate the data rate,
and ultimately the size a given movie will occupy.

Some VERY rough numbers, assuming a clean video source and a modern lossy
compression scheme:

Compression		Quality
			High	Medium	Low
Spatial Only		4	2	1	bits/pixel
Temporal		2	1	0.5	bits/pixel

A medium quality movie with interframe, or temporal compression, would
require roughly one bit per pixel.  A 320 x 240 (CIF) format picture has
76800 pixels, and would compress to 76800 bits, or 9600 bytes.

At 12 frames/second, this would give a compressed data rate of 115,200
bytes/second, or 112.5 Kbytes/second (1K = 1024).  A 5 minute clip would
require roughly 33750 Kbytes of space.  Adding a sound track expands this
somewhat.

	Mike Paquette
======
I don't speak for NeXT, and NeXT doesn't speak for me.  Fair deal...
[email]		NeXT business mail only	NeXT Mail OK
[email]		Personal E-mail		ASCII Mail only, please
	"It's a bad neighborhood, but the rent is cheap."


author: Michael B. Johnson

subject: Re: Video Storage Requirements

text:
In article <[email]> [email] writes:

If things were only that simple...

What resolution?  What frame rate?  What artifacts are acceptable?
What machine (i.e. CPU power) will be doing the playback?  Is there
sound?  What codecs do you have available for compression/decompression?
How will the video be captured?  What will the playback media (CD, disk,
network, etc.) be?

No matter what the answer to the above questions is, the answer
is going to resemble "a lot".  As  a ball park guesstimate, it would
probably be on the order of 75MB to 300MB, although it could easily
go much higher (assuming the 5 minutes you mentioned), depending on
the answers to the first set of questions.

Welcome to the bandwidth eatin' world o digital video...


author: Ulterior

subject: my flawed thread pool implementation

text:
Hi,

could someone, look at my threadpool implementation and help me
finding notorious bug?

The problem is using threadpool of 64 threads which is controlled by
mutex lock. An error is generated after some time when mutext lock
receives unlock instruction prior to lock.

The code below is pure gcc compilable.

// gcc -g -O0 threadpool.cpp -lpthread -lstdc++ -lz -o threadpool

#include <stdio.h>
#include <stdlib.h>

#include <errno.h>
#include <signal.h>

#include <netdb.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>

#include <sys/time.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <sys/resource.h>

#include <unistd.h>
#include <fcntl.h>

#include <time.h>
#include <string.h>
#include <malloc.h>
#include <pthread.h>

#define DEFAULT_LOCK_TIMEOUT 5

void CriticalExit()
{
 exit( -1 );
}

class SafeMutexLock {

 private:

 pthread_mutex_t mutexLock;
 unsigned long lockOwner;

 public:

 SafeMutexLock();
~SafeMutexLock();

 bool tryToLock( int waitSec = DEFAULT_LOCK_TIMEOUT );
 bool lock(); //notice - waits forever!
 bool unlock();
};

SafeMutexLock::SafeMutexLock():
lockOwner( 0 )
{
 pthread_mutex_init( &mutexLock, NULL );
}

SafeMutexLock::~SafeMutexLock()
{
 if( lockOwner )
 {
  if( !unlock() )
  {
   fprintf( stdout, "Error locking mutex" );
   CriticalExit();
  }
 }
}

bool SafeMutexLock::
tryToLock( int waitSec )
{
 struct timespec abstime = { 0, 0 };
 struct timeval curtime;
 gettimeofday(&curtime, NULL);
 abstime.tv_sec = curtime.tv_sec + waitSec;

 int retValue = pthread_mutex_timedlock(&mutexLock, &abstime );
 if( retValue )
 {
  if( (retValue == EBUSY) || (retValue == ETIMEDOUT ) ) return false;
  else
  {
   fprintf( stdout, "Unknown error message: %ld while trying to lock
SafeMutexLock\n", retValue );
   CriticalExit();
   return false;
  }
  return false;
 }
 else
 {
  lockOwner = (unsigned long) pthread_self();
  return true;
 }
}

bool SafeMutexLock::
lock()
{
 while( true )
 {
  if( tryToLock( DEFAULT_LOCK_TIMEOUT ) ) break;
  usleep( 100*1000 ); //100ms
 }

 return true;
}

bool SafeMutexLock::
unlock()
{
 if( lockOwner && lockOwner != (unsigned long) pthread_self() )
 {
  fprintf( stdout, "SafeMutexLock tryToUnlock called not from locking
thread!\n" );
  CriticalExit();
  return false;
 }

 if( !lockOwner )
 {
  fprintf( stdout, "SafeMutexLock tryToUnlock called prior to lock!
\n" );
  CriticalExit();
  return false;
 }

 {
  int retValue = pthread_mutex_unlock(&mutexLock);

  if( retValue )
  {
   fprintf( stdout, "Unknown error message: %ld while trying to unlock
SafeMutexLock\n", retValue );
   CriticalExit();
   return false;
  }
  else
  {
   lockOwner = 0;
   return true;
  }
 }

 return false;
}

/
*********************************************************************************************************

 APPLICATION

*********************************************************************************************************/

#define NUM_MAX_INDEX_THREADS 64
#define NICE_THREAD_PRIORITY 15

#define MAX_THREAD_STACK_SIZE 128*1024

void *threadPool[ NUM_MAX_INDEX_THREADS ];
pthread_t threads[ NUM_MAX_INDEX_THREADS ];
pthread_attr_t threads_attribs[ NUM_MAX_INDEX_THREADS ];
void *threads_stackbase[ NUM_MAX_INDEX_THREADS ];
SafeMutexLock threadPoolLock;

struct threadData
{
 int threadId;
};

threadData thread_params[ NUM_MAX_INDEX_THREADS ];

void *RunIndexProcess(void *data )
{
 threadData *td = (threadData*)data;

 char *sometext = NULL;

 threadPoolLock.lock();
  sometext = new char[ 255 ];
 threadPoolLock.unlock();

 for( int i=0; i<10000; i++ )
 {
  sprintf( sometext, "%d", td->threadId*i );
 }

 threadPoolLock.lock();
  delete[] sometext;
 threadPoolLock.unlock();

 pthread_exit(NULL);
 return NULL;
}

int main(int argc, char **argv)
{
 int numWorkingThreads = NUM_MAX_INDEX_THREADS;

 setpriority (PRIO_PROCESS, 0, NICE_THREAD_PRIORITY );

 int stack_size = (PTHREAD_STACK_MIN + MAX_THREAD_STACK_SIZE );

 for( unsigned long i=0; i<numWorkingThreads; i++ )
 {
  threadPool[ i ] = 0;
  thread_params[i].threadId = 0;

  /*initiate the list of attributes with default values*/
  if( pthread_attr_init( &threads_attribs[i] ) )
  {
   fprintf( stdout, "Attribute sturcutre initialization failed.
Quiting...\n" );
   CriticalExit();
   return -1;
  }

  //calloc creates a one pice memory windows in a heap, malloc memory
window may be with holes
  threads_stackbase[ i ] = (void*)calloc(1, stack_size);

  /* setting the base address in the attribute */
  if( pthread_attr_setstack( &threads_attribs[i],
threads_stackbase[ i ], stack_size ) )
  {
   fprintf( stdout, "Unable to set the thread stack address. Quiting...
\n");
   fflush( stdout );
   exit( 1 );
  }

  /* set the schedule policy to special nice-able scheduling priority
*/
  if( pthread_attr_setschedpolicy( &threads_attribs[i],
SCHED_OTHER ) )
  {
   fprintf( stdout, "Priority management policy rejected. Quiting...
\n" );
   CriticalExit();
   return -1;
  }

  if( pthread_attr_setdetachstate(&threads_attribs[i],
PTHREAD_CREATE_DETACHED ) )
  {
   fprintf( stdout, "Unable to set detached state. Quiting..." );
   CriticalExit();
   return -1;
  }
 }

 while( true )
 {
  //monitor threads and launch them when they finish their work

  for( unsigned long i=0; i<numWorkingThreads; i++ )
  {
   threadPoolLock.lock();
   if( threadPool[ i ] == 0 )
   {
    threadPoolLock.unlock();

    fprintf( stdout, "Creating thread: %ld\n", i );

    {
     int rc = pthread_create(&threads[i], &threads_attribs[i],
RunIndexProcess, (void *)&thread_params[i]);
     if (rc)
     {
      if( rc == EAGAIN )
      {
       fprintf( stdout, "EAGAIN The system lacked the necessary
resources to create another thread, or the "
                      "system-imposed limit on the total number of
threads in a process "
                      "PTHREAD_THREADS_MAX would be exceeded.\n" );
      }
      else
      if( rc == EINVAL )
      {
       fprintf( stdout, "ERROR; The value specified by attr is invalid
\n" );
       threadPoolLock.unlock();
       CriticalExit();
       return -1;
      }
      else
      if( rc == EPERM )
      {
       fprintf( stdout, "ERROR; The caller does not have appropriate
permission to set the required scheduling parameters or scheduling
policy. " );
       threadPoolLock.unlock();
       CriticalExit();
       return -1;
      }
      else
      {
       fprintf( stdout, "ERROR; return code from pthread_create() is
%d. Maximum allowed threads: %d", rc, PTHREAD_THREADS_MAX );
       threadPoolLock.unlock();
       CriticalExit();
       return -1;
      }
     }
    }
   }
   else
   threadPoolLock.unlock();

   usleep( 10 );
  }

  usleep( 10 ); //10ms
 }

 exit(0);
 return 0; /* Keep some compilers happy */
}


author: David Schwartz

subject: Re: my flawed thread pool implementation

text:
On Jul 13, 12:35 am, Ulterior <[email]> wrote:

All of your code using 'lockOwner' is broken. For example, consider:

What happens when this runs in a thread for which the result of the
cast is zero? And consider:

What happens if this runs in a thread for which the result of the cast
is the same as the thread that holds the lock?

The function 'pthread_equal' exists for a reason.

DS


text:
Sorry, I have solved the problem myself

the problem was in mutex type - I didn't make it recursive
PTHREAD_MUTEX_RECURSIVE

Cheers


author: Markus Elfring

text:
Do you care if this log message fails?

The single instruction "return 0;" is sufficient. The function call "exit(0)" is
not needed.

Regards,
Markus


text:
On Jul 13, 10:35 am, Markus Elfring <[email]> wrote:

The code itself isn't recursive, simply a semaphore controling thread
flow.

I don't like my implementation at all, so I consider building up my
thread pool by this example:

http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/thread-pool-server-changes/

Cheers


author: Paul Pluzhnikov

text:
Ulterior <[email]> writes:

This isn't really related to your question, but your build command
is plain wrong. *Always* use appropriate compiler driver (g++ in
this case) when linking your executable, and *never* put -lstdc++
on your link line (unless you really know what you are doing).

Correct build line is something like:

  # Linux
  g++ -g -pthread threadpool.cpp -o threadpool

  # Solaris, AIX
  g++ -g -pthreads threadpool.cpp -o threadpool

Cheers,


text:
How do you think about the chances of non-recursive approaches?
http://en.wikipedia.org/wiki/Thread_pool_pattern

Regards,
Markus


text:
This approach has also got some open issues for correctness.
- Several return values are ignored.
- It seems that no maximum thread number is checked.

Regards,
Markus


author: Jeremy Mathers

subject: Re: Windows 95 - Ya it crashes, but I will take it over O Shit/2

text:
In article <4ljqoc$[email]>, Randy Olan <[email]> wrote:

While this last is perfectly obvious to you and me, the fact is that to
the general public, it's just not so.

	"The average woman would rather have beauty than brains because
		the average man can see better than he can think."

Basically, by definition, if you are a Win95'er, you aren't capable of
seeing the wisdom of the above proverb.  Win95 is very clearly for (and
this isn't really an insult when I say it) people for whom the window
dressing *is* the product (just as for many people Netscape *is* the
internet).

************************************************************************
Fairy Tale, n.:
	A horror story to prepare children for the newspapers.

	- [email], who is still costing the net
	  hundreds, if not thousands, of dollars, every time he posts -
************************************************************************
rwvpf wpnrrj ibf ijrfer


author: Eric

subject: Access97 toward Standalone EXE. What choice ?

text:
Hi all,

I'm a system developer (asm/C/C++) involved in a database project : what a
dilemna:-) Well, I've actually an Access 97 application and need to go
toward a standalone software ; I mean : compiled and with just the operating
system as "Required".

Some words about the actual appli : it's under Access 97 with VBA/MS Jet
3.5, it's for personal use (so exclusive access), it has to handle up to
2,000 records per table in around ten tables (the rest are small ones), it
plays with a tenth of forms, some stored queries, negligible macros and a
lot in modules, it's already splitted in front-end/back-end, user can create
and open the back-end he wishes.

So, from your lighted opinion, what's the best choice for the migration
toward a solid autonome executable (will be sold, not for my private use or
for my friends) ? Visual Basic, Visual C++, Visual FoxPro, Go through
modeler... Another way ? I'm totally in the fog and don't want to do a wrong
choice. What's nice guru ?

And, a complementary question : does the migration may be automatic for a
part ? I've seen things like Access2VB, but don't know what it worth ?
What's the drawback ?

Thanks in advance
Let me know

Eric
[email]


author: Alan Webb

subject: Re: Access97 toward Standalone EXE. What choice ?

text:
Eric,
You are part of a large group of developers that wish they could package
their work so that it ran this way.  Microsoft's own Small Business Customer
Manager is an Access database application.  When you install it the
installer also installs Access runtime for you.  If you have or can borrow a
copy of Office 2000 I would play with the Small Business Customer Manager to
get a feel for how Microsoft does this.  The illusion that this is an
executable application is pretty good.
"Eric" <[email]> wrote in message
news:9f43pt$12sn$[email]...
operating
create
or
wrong


author: Scott Barrow

text:
But don't feel in any way inferior.  I have enterprise level
applications at my company that install a small .mdb to store user
preferences, SQL code and even full fledged VBA/VB code.  So misery
loves company, and we're in pretty good company.

Scott

On Wed, 04 Jul 2001 19:33:19 GMT, "Alan Webb" <[email]>
wrote:


author: John Turner

text:
Could / Would you consider creating the tables in a
seperate *.mdb then do your thing via Python that opens the recordset?

[email] (Scott Barrow) wrote in message news:<3b447ce0.42016032@news>...


author: Haris Bogdanovic

subject: no method error (because of unknown variable type)

text:
Hi !

Here is a little example:

file "Functions.rb":
#---------------------
def func(file)
    if !file.eof then #do something.
end
#---------------

file "main.rb":

require 'Functions'
file_1=open('bla.txt','w')
func(file_1)
file_1.close

I get an error message that eof method is undefined.
I presume that this is because ruby does not know that the "file" variable
is going to become a File.object.
How do I solve this ?

Thanks.


author: Decurnex Gorosito, Roberto Eduardo

subject: Re: no method error (because of unknown variable type)

text:
Hi Haris, the problem here is that the eof or the eof? methods must be
used with files open as readeble like file_1( 'bla.txt', 'w' ).
If you are writing a file the eof is noy defined cuz you are always
adding data to the end of it.
The evaluation of the object class is made on the fly, ruby doesn't try
to predict the future objects classes.

Eduardo, Gorosito

Haris Bogdanovic wrote:


author: Sebastian Hungerecker

text:
Haris Bogdanovic wrote:

You assume you get the error message when the method is defined. This is not
true. The error is raised when the method is actually called (with a file
object as a parameter). At this point ruby already knows that file is a File
object (because that's what was passed into the method) - that's not the
problem. The problem is that File objects don't have an eof method. It's eof?
(with a question mark).

HTH,
Sebastian


text:
Sebastian Hungerecker wrote:

I insist, is not a problem of eof or eof?, they are both defined. The
problem is that he is calling eof for a IO open to write but not to read.


text:
Decurnex Gorosito, Roberto Eduardo wrote:

Okay, I was wrong that the eof method doesn't exist. But if you have a File
object opened for writing you still don't get a NoMethodError that eof
doesn't exist. You get an IOError.
So either something else is going on or the OP was wrong about the kind of
error he was getting.


text:
Problem solved !

It's because the file was opened as 'w' and not 'r'. I firstly created file
and put some data into it and then I forgot to close it and reopen it as
'r'.
It was strange to me that ruby would check for variable types in that way
but obviously I was assuming wrong.

Thanks.

"Haris Bogdanovic" <[email]> wrote in message
news:fkjhnd$c6f$[email]...


author: MonkeeSage

text:
On Dec 22, 1:00 pm, "Haris Bogdanovic" <[email]> wrote:

You can use 'r+' as the open mode if you want reading and writing
(rather than closing and reopening the file handle or using
IO#reopen). See `ri IO` (near the middle) for a list of available open
modes.

Regards,
Jordan


author: Richard Fairbairn

subject: Talking Dictionary: Please Try!! Urgent!!

text:
Hi,
I have developed a talking dictionary using Microsoft speech engine 4
and text to speech.

I have heard of problems using this under Windows me and would
appreciate it if anyone running Windows ME, Windows 2000 or Windows NT
could check this out and let me know of any problems they have.

The URL is:

http://www.talkingsoftware.gothere.uk.com/html/talking_dictionary.html


author: Gene Girard

subject: Re: Talking Dictionary: Please Try!! Urgent!!

text:
This is just an ad for a $35 dictionary for the blind.

"Richard Fairbairn" <[email]> wrote in message
news:[email]...


author: info

text:
Richard,

I ran your program under Windows 2000 Pro and had no problems with the TTS.
However, I do have both SAPI 4 and SAPI 5 installed on my machine.   What
kind of problems have your users been experiencing?

Jason
www.EverSpeech.com

"Richard Fairbairn" <[email]> wrote in message
news:[email]...


text:
Hi,
This is not an ad for the dictionary. It is genuine request for
assistance with problems I am experiencing with the SAPI 4 speech
engine under Windows ME. If anyone would like to verify this then they
may try installing the dictionary in Windows ME. They will find that
it does not work.

Thanks.

Richard Fairbairn

"Gene Girard" <[email]> wrote in message news:<9k2dg1$bv$[email]>...


text:
Hi,
I resolved the problem about 2 days ago.

What was wrong:
The problem was caused by the speech engine that was installed as my
dictionary attempted to install itself. As part of my installation
process I try to detect the existence of a speech engine before
installing one. If my installer finds no speech engine it installs MS
SAPI 4.

What I did:
The fault with the installer lay in the way i was checking for the
existence of speech. To cut a long story short, Millenium Edition has
a speech engine installed as part of the O/S and my installer got very
unhappy when it tried to detect the existence of a speech engine and
found the one that ME has. The installer is designed to fail and
install a speech engine on failure (because failure  = no speech
engine), but in this case the installer failed in an unexpected way
and did not complete it's speech engine installation or detect the
existence of a speech engine it could use.

I corrected the fault by repairing my installer and using a different
speech engine, which is smaller to install than SAPI 4.

The Moral:
Test! Test! Test!

Thanks for trying the dictionary for me on Win 2000. I uploaded a new
version recently (it is about 6MB compared to 8+MB) so if you have the
6MB version then you have the new version (which is 2.5.0)). If you
didn't have 2.5.0 and decide to test it again on Win 2000, please let
me know if it works ok (as I jolly well think it should!).

Best regards.

Richard Fairbairn.

"info" <[email]> wrote in message news:<0bN97.10860$[email]>...


author: Christian Kirnbauer

subject: additional addressbook

text:
Hi,

how can I add an additional addressbook so that the Lotus Notes client
displays this addressbook when I create a new mail?

I already created a new database with the personal addressbook template, but
I don't know to how to publish this database.


author: Ray

subject: Re: additional addressbook

text:
Go into your user preferences in Notes, on the 'mail' tab, there is a
field for 'local address books.'  It should say 'names.nsf' already.
Add a comma and append the filename of the additional address book, but
DO NOT remove names.nsf.  For example:

names.nsf, newaddressbook.nsf

The filename should be relative to your data directory, so you don't
need to enter the full path, but if you use the 'browse' button, it
will include everything.

names.nsf should be the first entry in the list


subject: Re: additional addressbook

text: By the way, you might need to restart Notes for it to take effect.


author: The eCS Guy

subject: Jeroen Besse forging posts again

text:
He's back and now he's posting out of Supernews.  Jeroen Besse
has returned to his game of identity theft.

The eCS Guy


author: Taylor Barratt

subject: Out of Memory Errors

text:
I'm programming using Visual Basic 3.0.
I have a form with over 450 labels on it. (which is a MDIChild)
I can't run this without compiliing it, I assume because of the lack GDI
resources.
But now when I compile and the objects on on the screen and I push the button
in my program which just changes the backcolor of 434 of these objects and
changes the caption of up to 14. Then when is preforming this routine, which
it pretty much does upon form loading, I get out of memory errors with a
compiled program. I have 16megs ram, I'm not actually running out of memory.
But I assume it's a resource..how do I regain these resources.

I realize this is kind of vague. But it would be senseless to get detailed
about how my program works.

If anyone knows how or why this is happening please E-Mail me a response.
Thanks.
================================================================================
Taylor Barratt (Poster of Message)| MEI and Blaupunkt crammed in a 93' Honda
President of Trans-Global Effects | Accord LX (*groceries*) :)
================================================================================
If you are interested in a computerized demos/presentations for business
or products on the PC or NTSC(VHS), let me know via E-Mail. Trans-Global Effects
use Autodesk 3D Animator and Animator Studio, as well as Microsoft PowerPoint!
================================================================================
ABM Sys. are not responsible in any way for my opinions, expressed or otherwise!
================================================================================


author: RichWells

subject: Re: Out of Memory Errors

text:
[email]  writes:
button
and
which
memory.

My guess is that 450 windows (each label is a window) is pushing the
limits
of the USER heap.  My suggestion is that you re-think your design so that
you don't need to have 450 labels at one time.


author: David Z Maze

subject: Re: Out of Memory Errors

text:
Taylor Barratt ([email]) wrote:
: I'm programming using Visual Basic 3.0.
: I have a form with over 450 labels on it. (which is a MDIChild)
: I can't run this without compiliing it, I assume because of the lack GDI
: resources.
: But now when I compile and the objects on on the screen and I push the button
: in my program which just changes the backcolor of 434 of these objects and
: changes the caption of up to 14. Then when is preforming this routine, which
: it pretty much does upon form loading, I get out of memory errors with a
: compiled program. I have 16megs ram, I'm not actually running out of memory.
: But I assume it's a resource..how do I regain these resources.

: I realize this is kind of vague. But it would be senseless to get detailed
: about how my program works.


author: Dave Read

subject: Re: Out of Memory Errors

text:
In article <[email]>,
Taylor Barratt <[email]> wrote:

It sounds to me like you have a memory leak, or wrose yet, a resource
leak!  Make sure that you free() and memory you malloc(), and that
you FreeResource() any resources you get from LockResource().

Good luck,
Dave


subject: Re: Out of Memory Errors

text:
I'm not doing any of that! But I'll check it out. Thanks.
================================================================================
Taylor Barratt (Poster of Message)| MEI and Blaupunkt crammed in a 93' Honda
President of Trans-Global Effects | Accord LX (*groceries*) :)
================================================================================
If you are interested in a computerized demos/presentations for business
or products on the PC or NTSC(VHS), let me know via E-Mail. Trans-Global Effects
use Autodesk 3D Animator and Animator Studio, as well as Microsoft PowerPoint!
================================================================================
ABM Sys. are not responsible in any way for my opinions, expressed or otherwise!
================================================================================


author: Chris Fernandes

subject: WANTED: Disk compare utility

text:
I need a utility which will scan the contents of a floppy and delete the
corresponding files on the hard drive.  Or at least tag them in some way.
This is needed when I make backups of some files on my hard drive.  Some
kind of disk comparison utility is I guess what I need.  Anything like
that out there?

                                                     -Chris


author: Andreas Helke

subject: Re: WANTED: Disk compare utility

text:
Chris Fernandes ([email]) wrote:
: I need a utility which will scan the contents of a floppy and delete the
: corresponding files on the hard drive.  Or at least tag them in some way.
: This is needed when I make backups of some files on my hard drive.  Some
: kind of disk comparison utility is I guess what I need.  Anything like
: that out there?

My HFM file manager does some of it. It is good in comparing and copying
only updated files out of a directory tree. I have not yet implemented
selective deletions for a whole tree. But in HFM you always compare 2
directorys and you can tag and then delete either the files which exist
in both directorys or those which only exist on one side.
HFM is available as garbo.uwasa.fi:/pc/dirutil/hfm320.zip or from
simtel.

BTW the registration password for hfm is hfm318.ah . I do now consider
this as a rather useless feature, since it did not do anything to
increase overseas registrations from the previous number of 0
registrations. I guess I will have to find a company which handles
credit card registrations for me if I want to get any registrations
from foreign countrys.

Andreas


author: Fuzzy Fox

subject: Re: WANTED: Disk compare utility

text:
[email] (Chris Fernandes) writes:

Check out DOS 5+'s REPLACE command.


author: Bob Babcock

subject: Re: WANTED: Disk compare utility

text:
Chris Fernandes ([email]) wrote:
: I need a utility which will scan the contents of a floppy and delete the
: corresponding files on the hard drive.  Or at least tag them in some way.
: This is needed when I make backups of some files on my hard drive.  Some
: kind of disk comparison utility is I guess what I need.  Anything like
: that out there?

Qfiler will let you display two directories at once, say one on a floppy and
one on your hard disk.  You can tag all matching files and perform various
operations on tagged files including deleting them.  At oak.oakland.edu:

Directory pub/msdos/fileutil/
 Filename   Type Length   Date    Description
==============================================
qfilr32b.zip  B  132821  930222  QFiler DOS shell/file mgr, handles ARC/ZIP/LZH


subject: jump out of a loop in fortran 77

text:
In Fortran 77, is there such a statement that could make the execution
jump out of a loop?

For example,

      DO I = 1, 10
       PRINT *, I
       IF( I.GT.3 ) EXIT
      END DO

      PRINT *, 'FOO END'

EXIT is from fortran 90/95. Is there any similar thing in 77?

Thanks


author: dpb

subject: Re: jump out of a loop in fortran 77

text:
K-9 wrote:
...
...

There's always GOTO with which to "roll your own" EXIT...


subject: Re: jump out of a loop in fortran 77

text:
On Feb 4, 5:20 pm, dpb <[email]> wrote:

Oh, sure, using that as plan B


author: Richard Maine

subject: Re: jump out of a loop in fortran 77

text:
dpb <[email]> wrote:

And for that matter, depending on what one means by "fortran 77", there
might even be EXIT. If the DO/ENDDO of the original code counts as
"fortran 77", then apparently one doesn't really, strictly mean the
Fortran 77 standard, so it might include EXIT as well.


author: [redacted]

subject: RE: jump out of a loop in fortran 77

text:
In a previous article, dpb <[email]> wrote:
 Or if you have a "good" F77 like WATCOM  - it has EXIT
along with many other useful extensions.

Chris


subject: Re: jump out of a loop in fortran 77

text:
[email] wrote:

That wasn't the question asked... :)

Of course, as Richard points out, that OP used the DO...ENDDO (which I
did miss remembering isn't F77, anyway), it is a reasonable chance
likely compiler is using does have the extension, true (altho one just
might sorta' figure the reason the question was asked might have been
the compiler barfed on EXIT?).


subject: need new printer

text:
After six years my HP540 has died.  I'm looking for a replacement.  I want
an inexpensive inkjet, at least 300 dpi, and , most importantly, I need to
be able to use it with ghostscript and apsfilter.

Any recommendations?  Or what to avoid?

Steve


author: Dave Uhring

subject: Re: need new printer

text:
[email] wrote:

http://www.linuxprinting.org/printer_list.cgi?make=Anyone

Choose one from the "Perfectly" column.  Then click on that printer to see
how to make it work.


subject: Re: need new printer

text:
On Sat, 26 May 2001, Dave Uhring wrote:

Thanks for the tip.  After looking over the site I bought and installed an
HP842C. I seem to have regained 99% of the use I had before, without
making any software changes at all. (HP == HP ? )

thanks again for the heads up on that website

Steve


author: Aaron Kulkis

subject: Re: ATTN: Consultants -- WindowsNT vs. Linux: A Cost Analysis

text:
Ed Lewis wrote:

The business is unique.  They were hired to compile statistics to compare to a
probabalistic analysis of solitaire....:-)


author: Ajay Shekhawat

subject: Upgrading Sparc 10/30?

text:
I obtained some Model-51 CPU boards (390Z50 @ 50Mhz) (leftover from
an upgrade), and decided to install them into our 10/30s. However,
after the install, the system seems to operate only at 40Mhz, or
so the script "sunmodel" says (sunmodel obtained from
thor.ece.uc.edu). Are there any jumpers that I should be playing
around with in order to get 50Mhz performance?

Any help will be greatly appreciated!

Thanks,
Ajay


author: Arne Schirmacher

subject: Re: Upgrading Sparc 10/30?

text:
Ajay Shekhawat ([email]) wrote:
: I obtained some Model-51 CPU boards (390Z50 @ 50Mhz) (leftover from
: an upgrade), and decided to install them into our 10/30s. However,
: after the install, the system seems to operate only at 40Mhz, or
: so the script "sunmodel" says (sunmodel obtained from
: thor.ece.uc.edu). Are there any jumpers that I should be playing
: around with in order to get 50Mhz performance?

The SPARC boards I have seen so far always have two oscillators, either
72 and 80 MHz or 80 and 100 MHz. There are jumpers to switch the MBUS
clock rate. Since you have a 10/30 your other oscillator is probably the
80 MHz version and there is no way to run it with 50 MHz.

On the other hand the new 50 MHz CPU should still run with only 36 MHz
if this was your original bus clock. So I'm a bit confused here. Perhaps
there is more to it than just setting the jumpers.

The jumpers are labeled J1401, J1403 and J1404. Set the two prong jumper
to short and the other two to 2-3 or set them to open and 1-2.

Of course I am also not sure whether this might damage your
CPU/motherboard. These settings are from the technical handbook for _my_
SPARC clone.

Arne


author: Ian Astle

subject: Re: Upgrading Sparc 10/30?

text:
I'm taking a look at my "SuperSPARC Module Installation Guide" in which the
clock jumpers are described:

In both cases the pictures show the front closest to the SIMM slots, the
front pointing UP on the page...

If your motherboard has three jumpers J1401,J1403, and J1404 then

   J1401 - No Jumper
   J1403 - 1 to 2 (to the left)
   J1404 - 1 to 2 (towards the rear)

If only one jumper J1401 then

   J1401 - 1 to 2 (towards the right)

Hope this helps,
Ian
Northern Telecom Canada
[email]


author: Dixon Ly

subject: Re: Upgrading Sparc 10/30?

text:
In article <3gpg00$[email]>,
Arne Schirmacher <[email]> wrote:

I've never used 'sunmodel', so I don't know what it is reporting; but
here's how the Sparc 10 works:

The Sparc 10 CPU modules are installed on the MBus, which operate at
two different clock rates.  The clock rate that you use depends on
the clock rate of your CPU.  The Mbus runs at either 36 Mhz or 40 Mhz.
The 10/30 runs on the 36Mhz MBus, while the 10/40, 10/41, and 10/51 runs
on the 40Mhz MBus.  As such, your 'sunmodel' could just be
reporting the MBus clock rate.....

The 41 and 51 WILL NOT run on the 36 MBus because of the Supercache.
The 30 and 40, however, should be able to boot up on either speed
setting.  But I have no idea what damage this could cause if you
run the 36 at 40...so don't do it unless you have a MB and CPU to
spare :)

As for jumpers, it depends on the motherboard that you have ( I am pretty
sure I've seen atleast two versions from Sun...but then my memory is not that
great ).  If you have a clone, then there are probably more than two versions
out there.

The clock rate of the MBus is controlled by an oscillator.  The most common
version of the Sparc 10 type motherboard has a 72 Mhz and a 80 Mhz oscillator
on the board.  The Mbus runs at half of the clock rate of the oscillator that
you have chosen.  Again the most common configuration has the 80 Mhz osscilator
placed closest toward the MBus connector.  If such is the case, then your
jumper configuration mostly like should be 1-2 and 1-2 for the 3 prong jumpers,
and not installed for the 2 prong jumper (j1401, j1403, and j1404).
If otherwise, it should be 2-3, 2-3 and installed.

I've never seen a Sparc 10 that comes with a 100Mhz oscillator (this appears
on the Sparc 20 types to control the 50Mhz Mbus).  However, you could be talking
about some of the clone vendor's 10+ models which allow you to use the 50Mhz
Mbus.  BTW, if you got this 10+ motherboard at the price of a 10, goodies
to you cuz you can now use the Sparc 20 CPU's :)

This silly thing is getting too long.  Email me if you want more details.

-dixon


author: Tom Cass

subject: Re: A discussion about Macintosh, Windows, Office etc.

text:
[email] wrote in article <[email]>...
I would agree. I think that for many people Windows is a more "practical"
OS due to availability of software and the fact that, in my case, I know a
lot of people with Windows machines while I don't know any who use MAC's or
OS/2 or LINUX etc.

TOM


author: sounds.wa.com!brianw (Brian Willoughby

subject: Re: 3rd party catalog on Demo CD?

text:
Paul Verket writes

Simson Garfinkel's program, SBook, has this information available now.
Apparently, the entire Winter 1992 Software and Peripherals Catalog was
scanned in and converted into a couple of SBook databases.

SBook has 192 companies listed in developers.sbook and 331 products listed
in products.sbook - together, the files take up about 368kbytes on disk.

An additional advantage is that SBook will use your modem to dial the
companies number, send them email or print a fully addressed envelope on
your printer using information from the database.

SBook is currently a demo program which will only run until August (but
the files will still be exportable to plain text).  You may want to wait
until Simson has made a final product of this (that's a big hint,
Simson...)

ftp to cs.orst.edu and look in /pub/next/submissions for SBook.demo.tar.Z
(this may have been moved since I grabbed it on April 28).

P.S.  If this sounds like a product advertisement, its just because I'm a
satisfied user of SBook (who hardly ever opens his 1992 catalog anymore).

Brian Willoughby


author: Paul B. Verket

subject: Re: 3rd party catalog on Demo CD?

text:
sounds.wa.com!brianw (Brian Willoughby) writes:
: Paul Verket writes
: > Does anyone know if NeXT plans to include their third party catalog on
: > the Demo CD-ROM that they're (rumored) to be producing? I'd just love
: > to have it online searchable along with the demo applications.
: >
: > Paul Verket (NeXTmail ok)
:
: Simson Garfinkel's program, SBook, has this information available now.
: Apparently, the entire Winter 1992 Software and Peripherals Catalog was
: scanned in and converted into a couple of SBook databases.

Thanks for the good pointer. While SBook is impressive, it isn't quite
what I had in mind. I'm hoping for the full text from the Software
and Peripherals Catalog and even the screen grabs!

If the text is indexed by Digital Librarian, I could search by subject
without knowing the company's name.

Paul Verket (NeXTmail ok)


author: Andrew Stone

subject: Re: 3rd party catalog on Demo CD?

text:
In article <[email]> [email]
(Paul B. Verket) writes:
on
love
was

<begin shameless plug>

 I know they have been using DataPhile for this in house at NeXT, in fact,
that was the database Steve demoed at NeXTWORLD expo in January.

<end shameless plug>

andrew


author: Richard Revis

subject: Why wont you sell me what I want?

text:
I need 180 new PCs for a contract I have, so since I rather like black, my
first port of call was DELL.

Assuming that I can get whatever configuration I wish for when ordering in
bulk, I got right to the end of my spec and said that I wanted no
preinstalled OS, they were all going to end up as unix boxes anyway.

No, they can't do that, it promotes piracy. 'How exactly?' I asked, since I
would be interested to hear how I was going to manage to pirate something
which isn't charged for.

They refused to discuss it, and instead said they would have to preinstall
some operating system on it, so I said fine, we will have Red hat, DOS, or
anything else we don;t have to pay for. No joy with that either.

'We are under contractual obligation to Microsoft to only ship Win2k or
later on all new machines.' Oh, and thats not an abuse of mononpoly power?

Anyway, I declined to order from them on the grounds that I will not pay
any form, as the routing software won't work on it.)

Does anyone know of a hardware vendor which can ship bare units? Or one
which will 'creatively' report to Microsoft that it shipped 180 low end
servers with a non-MS OS? (According to DELL they can ship servers with
linux fine, but they point blank refused to send me a bunch of 1Ghz celeron
'servers'.)


author: Byron A Jeff

subject: Re: Why wont you sell me what I want?

text:
In article <acfv9o$pjgte$[email]>,
Richard Revis  <[email]> wrote:

Walmart. Check out their Microtel line. Ships without an OS. We really should
support them and let them know we appreciate the choice they offer.

BAJ


author: Pete Goodwin

subject: Re: Why wont you sell me what I want?

text:
Richard Revis wrote:

I think the reasoning is that if you have a blank PC, you'll install
anything on it, including one copy of Windows and hence the piracy.

That's pretty naff of them.


author: rapskat

subject: Re: Why wont you sell me what I want?

text:
Error Log for Wed, 22 May 2002 07:24:57 -0400: segfault in module "Richard
Revis" - dump details are as follows...

How soon do you need them? ;-)


author: mlw

subject: Re: Why wont you sell me what I want?

text:
Richard Revis wrote:

I had the same experience with Dell. They suck. I will never get a Dell. Just
remember, "Dude, Dell just sucks."

Funny. I handn't heard that one.

You can get pretty good generic machines with lots of choices, www.mwave.com.
Just get the "barebones" boxes.


author: Bigby

subject: Re: Why wont you sell me what I want?

text:
Richard Revis wrote:

To my knowledge, Microsoft is not allowed to do this anymore.  But if they
are, they won't be (threat of another suit).  But since the trial isn't
technically over yet, they continue to be cheaters.

RedHat is also "later" than win2k :)


author: Matthew Gardiner

subject: Re: Why wont you sell me what I want?

text:
Richard Revis wrote:

I assume you're an administrator? purchase parts wholesale, and put
computers together your self.

Matthew Gardiner


author: Nigel Feltham

subject: Re: Why wont you sell me what I want?

text:
If you have it in writing (or recorded phone conversation) then I suggest
you send all the details to the DOJ.


author: D. C. Sessions

subject: Re: Why wont you sell me what I want?

text:
In <acfv9o$pjgte$[email]> Richard Revis posted:

This is a classic case for a local shop.  Around here I know
several who could beat Dell's prices and throw in spares for
hot replacement.  They'd bulk purchase the components and
have the lot to you in a couple of weeks.

Ask around.  Nothing like a local business, and you'll be
amazed at how good the service can be.


author: Jerry Nash

subject: Re: Why wont you sell me what I want?

text:
On Wed, 22 May 2002 12:24:57 +0100, Richard Revis <[email]> wrote:

You can buy Dell machines pre-loaded with RedHat Linux from Dell:

http://www.dell.com/us/en/biz/products/series_precn_workstations.htm


author: Tim Smith

subject: Re: Why wont you sell me what I want?

text:
In article <acfv9o$pjgte$[email]>, Richard Revis wrote:

www.walmart.com.

--Tim Smith