Linux-Advocacy Digest #14, Volume #27            Sat, 10 Jun 00 21:13:06 EDT

Contents:
  Re: Open Source Programmers Demonstrate Incompetence ([EMAIL PROTECTED])
  Re: Dealing with filesystem volumes ([EMAIL PROTECTED])
  Re: Dealing with filesystem volumes ("Sam Morris")
  Re: Canada invites Microsoft north ([EMAIL PROTECTED])
  Terry Murphy Demonstrates Bald-Faced Lying -was- Open Source Programmers Demonstrate 
Incompetence (Mark S. Bilk)
  Re: Would a M$ Voluntary Split Save It? (Bob Hauck)
  Re: democracy? (John Hasler)

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

From: [EMAIL PROTECTED]
Subject: Re: Open Source Programmers Demonstrate Incompetence
Date: Sat, 10 Jun 2000 22:15:57 GMT

Of course we may NEVER know just how bad closed source code is. You can
NOT compare a known to an unknown. It is more than possible that closed
source code is FAR worse.



n article <8hsm6t$873$[EMAIL PROTECTED]>,
  [EMAIL PROTECTED] wrote:
> As most computer professionals know, "open source" software has a
> reputation for being extremely unreliable, buggy, and prone to
constant
> failure. Of course, since the source code is available, one need only
> look at it to see how devastatingly bad it is. Sourceforge has a
> service where programmers are allowed to share their work with others.
> One such contribution is the following, which allows an fgets-like
> function to read from a file descriptor:
>
> #define BUFLEN 4096
>
> void dprintf(int fd, char *format, ...)
> {
>    va_list arglist;
>    char buffer[BUFLEN];
>
>    va_start(arglist, format);
>    vsnprintf(buffer, BUFLEN, format, arglist);
>    va_end(arglist);
>
>    write(fd, buffer, strlen(buffer));
> }
>
> Copyright 2000 by "Zaf". Licensed under GPL.
>
> The author does not document that the function has a 4K limit. When
> innocent programmers use it, they will be baffled why it always cuts
> off after 4K. But that's not the point: it is _trivial_ for a
competent
> programmer to extend this to work with strings of arbitrary length.
Any
> programmer who has even the slightest experience at all, would be able
> to achieve this with ease. Of course, one wonders what insight this
> function gives at all - it is basically straight off the the stdarg
man
> page, which any programmer who has even glanced at any code at all, is
> already familiar with.
>
> Next, we have the case of the programmer who wanted to reverse every
> line in a file:
>
> for ( ; position > -1 ; position--) {
>
>         /* seek to the proper position and read in a character */
>         if(fseek(stream, position, SEEK_SET)) {
>             printf("Failed to fseek to the current file position.\n");
>             exit (1);
>         }
>
>         if((value=fgetc(stream))==EOF) {
>             printf("Failed to read a character from the current file
> position.\n");
>             exit (1);
>         }
>
>         /* if the character is a newline then print the accumulated
> stack*/
>         if(value=='\n'){
>             while (stack = pop(stack, &x)){
>                 printf("%c", x);
>             }
>             stack = push(stack, '\n');
>         }
>
>         /* push the character onto the stack */
>         stack = push(stack, value);
>
>     }
>
>     /* print the first line to finish up */
>         while (stack = pop(stack, &x)){
>             printf("%c", x);
>         }
>
> Copyright 2000 by "buckrogers". Licensed by GPL.
>
> This programmer does an fseek (!), a malloc, an fgetc, a push (which
> allocates no fewer than 8 bytes per input byte), a pop, and a printf
> for each _character_ in the stream! Most professional programmers
would
> cringe of the idea of calling six expensive functions for a large
> input, especially when the concept is so simple. Indeed, one wonders
> why he didn't just mmap the file, and go through it backwards, which
> would not only be about a hundred times faster in run time, but
simpler
> to test and code.
>
> These, of course, are just code snippets. But one really has to wonder
-
>  if the Linux community cannot get trivial functions to work properly,
> reliably, and efficiently, how can we possibly expect them to get the
> complex things right? Indeed, Mozilla, which is very possibly the
> slowest computer program ever created, was probably written by a whole
> army of open source zealots who would use 6 expensive function calls
> per character in a large input stream to reverse a file. Linux crashes
> so much because code like the first quoted function is all over the
> kernel. The rest of the apps are prone to constant failure because of
> their own miscellaneous failings. Obviously, as these examples show,
> the community is not to be trusted to produce the best software.
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.
>


Sent via Deja.com http://www.deja.com/
Before you buy.

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

From: [EMAIL PROTECTED]
Crossposted-To: comp.sys.mac.advocacy,comp.os.ms-windows.advocacy,comp.unix.advocacy
Subject: Re: Dealing with filesystem volumes
Date: Sat, 10 Jun 2000 22:21:15 GMT

In article <slv05.13852$[EMAIL PROTECTED]>,
  "Quantum Leaper" <[EMAIL PROTECTED]> wrote:
>
> "Sam Morris" <[EMAIL PROTECTED]> wrote in message
> news:VHs05.310$[EMAIL PROTECTED]...
> > >> Cons: They reaassign themselves at the slightest excuse; add a new
> > >> drive, and all bets are off as to which of your existing drive letter
> > >> assignments will stay the same.
> > > Verdict: Stupid 1970s way of doing things that should be ashamed to be
> > > still showing itself in the 21st century.
> > >
> > >The same goes for all the other filesystems in use today.
> >
> > Per-volume systems do no such thing. If I add another disk to my Mac, each
> > formatted partition appears on the desktop and doesn't screw up everything
> > else that came before.
> >
> > Example: Installing a new Hard Disk.
> >
> > On my Mac: Connect the cables up inside and turn it on (both IDE/SCSI).
> > Initialise the disk when asked to do so by the MacOS. Do whatever I want
> > with the new disk.
> >
> All Macs I have seen with IDE,  only HAVE one bay.  I may be mistaken
> though.
>
> > On my PC: Look in manual to discover jumper settings for Master/Slave (IDE
> > only; I haven't tried to add a SCSI card to my PC). Connect up cables.
> Boot
> > up. Discover that my CD is now E:, not D: and every damn thing that
> expects
> > it's files to be on a CD now needs to be told differently.
> >
> Manual???  What that?  ;)   I look on the drive,  almost all drives I have
> seen have a little sticker stating the jumper settings.   The only drive I
> have without a sticker is a VERY old 230 MB HD (from a defunct company),
> and I have PCRef to look that one up.
> It takes a few brain cells,  but if you put your CD on maybe Z or something,
> you never have a problem.  BTW my DVD is X, my CDR is Y and my Zip is Z.   I
> never had any problem add new HDs. Currently I have 2 HDs,  C and D. I will
> be adding one by the end of the month,  which will be E,  unless I do
> something dumb like partitioning it with a Primary Partition.
>
> > God knows how Windows copes with multiple partitions on a removeable
> drive;
> > if I repartition my main prive in half, then I now have C: and D:, E: and
> > F:. But what happens if I insert a CD with two partitions? Does F:
> magically
> > split into F: and G:?
> >
> I don't know about Removeable drives.    Partition Magic is what I would use
> if I had to repartition (I have used it),  my HD and that takes care of all
> the links,  including the stuff in the registry.
> What software lets you format a CD with Partitions????   CDs are composed of
> Tracks.

Adaptec Toast (CD burning utility on the Mac) lets you burn as many
separate partitions (Toast calls them "Sessions") as you want, as long as
the sum total of the data stored is less than or equal to 650 megs. Also,
all of the Mac OS X CDs came with two partitions, one HFS+ and UFS (which
was where most of the installer program was stored.) Don't ask me how
they did it, but that's how the CDs for both Mac OS X Server and the
Developers Previews are set up.


        Rich


Sent via Deja.com http://www.deja.com/
Before you buy.

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

From: "Sam Morris" <[EMAIL PROTECTED]>
Crossposted-To: comp.sys.mac.advocacy,comp.os.ms-windows.advocacy,comp.unix.advocacy
Subject: Re: Dealing with filesystem volumes
Date: Sun, 11 Jun 2000 00:37:44 +0100

> Windows 2000 supports mount points.

You don't mean 'Folder Shortcuts', do you? The ones that are actually just
an empty folder with a .lnk inside them?

--
Sam Morris
[EMAIL PROTECTED]

...7/6/00: 3rd installation of Windows since March took 6h30m, and that's
without a working modem...
...you can have my Mac when you pry it from my cold, dead fingers...



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

From: [EMAIL PROTECTED]
Crossposted-To: 
comp.os.ms-windows.nt.advocacy,comp.sys.mac.advocacy,comp.os.os2.advocacy
Subject: Re: Canada invites Microsoft north
Date: Sat, 10 Jun 2000 23:42:32 GMT

In article <39415447$5$obot$[EMAIL PROTECTED]>,
  Bob Germer <[EMAIL PROTECTED]> wrote:

> > >>  However Canada did succeed in showing up the US industry in much the
> > >> same way they did with the Arrow, when they flew the worlds  first
> > >> "Jetliner" into La Guardia (actually it was whatever it was called in
> > >> 1947) airport.  the New York Times put it on the front  page and
> > >> embarrasingly reported to the American public that a  small country of
> > >> 10 million had usurped the entire US aircraft  industry.
> > >
> > >That is revisionist history. What an imagination. At the time, 1947,
> > >Boeing was only one of many commercial aircraft manufacturers. Ever heard
> > >of Douglas? Convair? Lockheed? DeHavilland? Each of them and several other
> > >companies in England and France were making transport aircraft. Had the
> > >prototype to which you refer had any technical merit, it would have
> > >entered scheduled service.

Actually, no, its a fair if short recap of actual history.  Try the Rochester
Democrat and Chronicle of Jan 12 '51... The machine set speed and altitude
records for transport, and carried the worlds first jet-airmail...  The
machine was raved about in print on on radio, and customers lining up to try
to buy them included the U.S. military...  United Airlines wanted them, and
tried to have them built under license..  The stumbling block was the sadly
misnamed "minister of everything", a rather revolting soul without soul
called C.D. Howe.  The man was an absolute moron, a bufoon, poltroon, fraud,
and anything else down you care to throw at him (pardon the spelling).  An
example??  During the second world war, the allies wanted to expand ship
building/repair facilities in the Canadian maritimes and west coast.  Which
would have been built by the allies, and sold to Canada after the war, for
pennies on the dollar.  But C.D. (pronounced "seedy") would not allow it. 
All Canadian wartime upgrades to ship building etc., had to be in central
Canada.  The war effort suffered due to this moron.  The same moron that
decreed that Avro would not build the Jetliner, and would not allow any Avro
resources to be directed towards license production elseware. Good machine,
typical moron in political power in Canada. Get the feeling I don't think
much of him??? Goju_west


Sent via Deja.com http://www.deja.com/
Before you buy.

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

From: [EMAIL PROTECTED] (Mark S. Bilk)
Subject: Terry Murphy Demonstrates Bald-Faced Lying -was- Open Source Programmers 
Demonstrate Incompetence
Date: 11 Jun 2000 00:14:20 GMT

In article <8hsm6t$873$[EMAIL PROTECTED]>,  <[EMAIL PROTECTED]> wrote:

That's Terry Murphy.  He claims to believe that VMS is the 
only usable operating system.  For some reason he's stopped 
using his name, but kept the same userID.

>As most computer professionals know, "open source" software has a
>reputation for being extremely unreliable, buggy, and prone to constant
>failure. 

Ah, the good old "as everybody knows" propaganda ploy!

Murphy is just plain lying here.  Computer professionals
know that GNU/Linux and Open Source software (if listed as 
being beyond alpha version, of course) is very reliable.

It's a little strange that the *only* VMS advocate that 
posts in c.o.l.a is a major lying propagandist against Linux 
and Open Source.  There are people here who like Macs, *BSD,
and even Windows NT who are much more reasonable.  Maybe
he pretends to be a VMS nut to appear more credible than
he would as a Microsoft advocate in his job here, which is
obviously to frighten people away from using Linux.  Hmm,
now which enormous corporation would that benefit...

>Of course, since the source code is available, one need only
>look at it to see how devastatingly bad it is. Sourceforge has a
>service where programmers are allowed to share their work with others.
>One such contribution is the following, which allows an fgets-like
>function to read from a file descriptor:

Oops!  Murphy the self-proclaimed expert programmer has 
totally screwed up.  The very simple function below actually 
does a printf operation *to* a file descriptor!

>#define BUFLEN 4096
>
>void dprintf(int fd, char *format, ...)
>{
>   va_list arglist;
>   char buffer[BUFLEN];
>
>   va_start(arglist, format);
>   vsnprintf(buffer, BUFLEN, format, arglist);
>   va_end(arglist);
>
>   write(fd, buffer, strlen(buffer));
>}

>The author does not document that the function has a 4K limit. When
>innocent programmers use it, they will be baffled why it always cuts
>off after 4K. 

Any innocent programmer who remains baffled after seeing 
"#define BUFLEN 4096" at the very top of this 13-line 
subroutine isn't going to be helped by documentation.

However, Terry Murphy is lying again!  

That particular bit of code is located here:

http://sourceforge.net/snippet/detail.php?type=snippet&id=100122

and does have documentation, which explicitly states that 
no error checking is performed:

  this function works like printf or fprintf, except that it 
  outputs the data to a file descriptor (instead of a stream). 
  it's especially useful for writing stuff to sockets and 
  similar stuff. it does not perform any error checking :)

However, it does use vsnprintf, which takes the buffer length
as an argument, and is guaranteed not to write beyond the end.

>But that's not the point: it is _trivial_ for a competent
>programmer to extend this to work with strings of arbitrary length. Any
>programmer who has even the slightest experience at all, would be able
>to achieve this with ease. Of course, one wonders what insight this
>function gives at all - it is basically straight off the the stdarg man
>page, which any programmer who has even glanced at any code at all, is
>already familiar with.

And yet Terry Murphy is unable to understand the function 
of this code by reading it.  He *talks* like some kind of 
righteously opinionated programming god, but the reality 
is very different.

>Next, we have the case of the programmer who wanted to reverse every
>line in a file:

[SNIP]

>This programmer does an fseek (!), a malloc, an fgetc, a push (which
>allocates no fewer than 8 bytes per input byte), a pop, and a printf
>for each _character_ in the stream! Most professional programmers would
>cringe of the idea of calling six expensive functions for a large
>input, especially when the concept is so simple. 

Yes, this second example is ugly and could be greatly 
improved.  However, it does work without error.

>These, of course, are just code snippets. But one really has to wonder -
>if the Linux community cannot get trivial functions to work properly,
>reliably, and efficiently, how can we possibly expect them to get the
>complex things right? 

Terry Murphy is using broad smear tactics here.  The Linux 
kernel, GNU tools, and the many applications packed in Linux
distributions do work properly, reliably, and efficiently
enough that they function approximately as well as or better
than the best competing systems.

The existence of a couple of less than perfect programs on a 
public website has no relevance to the quality of distributed 
GNU/Linux/Open Source software, which *by actual experience*
has very few bugs.

>Indeed, Mozilla, which is very possibly the
>slowest computer program ever created, was probably written by a whole
                                            ********
>army of open source zealots who would use 6 expensive function calls
         *******************
>per character in a large input stream to reverse a file. 

Using this "logic" Terry Murphy is "probably" a doofus who
doesn't know his ass from a hole in the ground, and is a 
waste of Bill Gates' PR money.

>Linux crashes
>so much because code like the first quoted function is all over the
>kernel. The rest of the apps are prone to constant failure because of
>their own miscellaneous failings. 

Wow, this guy beats even Chad Myers and Stephen Edwards for
quantities of outrageous lies in a single post.  Linux crashes
are all traceable to hardware problems (as long as user limits
are set properly).  And almost all of the OSS apps are very
reliable.

>Obviously, as these examples show,
>the community is not to be trusted to produce the best software.

As his post shows, Terry Murphy is not to be trusted, period.



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

From: [EMAIL PROTECTED] (Bob Hauck)
Crossposted-To: 
comp.os.os2.advocacy,comp.os.ms-windows.nt.advocacy,comp.sys.mac.advocacy
Subject: Re: Would a M$ Voluntary Split Save It?
Reply-To: bobh{at}haucks{dot}org
Date: Sun, 11 Jun 2000 00:18:47 GMT

On Mon, 05 Jun 2000 22:58:14 GMT, Daniel Johnson
<[EMAIL PROTECTED]> wrote:

>"Bob Hauck" <[EMAIL PROTECTED]> wrote in message
>news:[EMAIL PROTECTED]...

>I rather thought that was the point in dispute: you felt that templates
>were no better than macros. Was I mistaken?

Well, we started with you saying something like "templates let you
write C++ code that's faster than C due to opportunities for massive
inlining".  I said that templates were ugly and didn't really provide
any speed increase over macros.  Then we got into which was uglier,
templates or macros.


>Well, I am not sure what you mean. I don't see any harm in basing an
>entire "programming paradigm" around them so long as I am not
>constrained to use that same paradigm everywhere, or even throughout
>an entire project.
>

>But is it still a "paradigm" if i pick and chose?

It sounded like you were advocating using templates pretty much
everywhere you could.


>> Taking the example of GUI app frameworks, there are and have been a
>> number of them that don't use any of this macro or template wizardry
>> yet seem perfectly usable to me.
>
>I'm not familiar with any that completely avoid such wizardy. Could
>you point me to one or two?

Well, "completely" is pretty strong.  I don't know of any that don't
use _any_ macros for instance.  I've already pointed you to a few that
don't use templates.


>But I would no more advocate writing a whole program in templates
>than you would.

Ok, here's where I misunderstood you.


>> Ah, yes.  Static typing.  It can catch certain kinds of programming
>> errors, while at the same time making your life difficult in other
>> ways.
>
>It makes your life difficult *if* you use a methodology that isn't
>on good terms with static typing.
>
>My feeling is that if you are doing that, you should not be
>doing it in C++. You should use the right tool for the job.

Like C?  That sounds like a good plan to me <g>.


>> Is it a common error to pull something out of a
>> container and treat it as the wrong thing?
>
>Maybe not. I suspect it will depend heavily on whether
>you are sticking to homogenous containers or not.

Well, yes.  But if it isn't homogenous, then you need to identify types
again and we're back to RTTI or some custom solution.  This is true
regardless of whether the container is template-based.


>You seem to have switched silently to arguing that
>"generic containers are not better than object-based
>containers". 

As a way of showing why I don't think templates are needed as much as
they seem to be used.


>That's fine, but you are no longer doing it Smalltalk style if you
>do that. Smalltalk *does* check the reasonableness of what you are
>doing, but it does it at run time.

Yes, and it has overheads that are not particularly less than those
that C++ has with RTTI.


>Frankly, I'm not confortable with leaving the check out completely;
>I'd want something, somewhere, sometime to verify that I'm
>not mixing types inappropriately.

// smartass solution

#ifdef DEBUG
#define mycast dyamic_cast <whatever>
#else
#define mycast (whatever)
#endif


>> I don't see any particular problems with Smalltalk-style containers
>> that macros help to solve.  You really want to set this up as macros vs
>> templates, don't you?  That's the easy argument to win after all.
>
>Well, I recall you saying that templates were not appreciably better;

Than macros, yes.  Which does not make macros a good thing or my tool
of choice.  I was saying that I prefer to use object-based containers
rather than generic ones, thus avoiding both macros and templates.

Actually, for containers it is a tougher call given that the STL exists
and I don't have to buy or invent an equivalent.  But my preference is
an OO style of programming rather than a generic-programming one.


>I think I dislike macros more than you do. 

Yes, I think so.  But I'm not a big fan of them either.


>Other than that you are arguing against a position I didn't take; you
>are presuming, I think, that because I'm *talking* about inlining a
>lot, I think it's very important in the big picture.

Well, yes, I am arguing against using inlining a great deal, which I
though you were justifying on the basis that code bloat is not a big
worry any more.  Well, to Microsoft anyway.


>> They went to an awful lot of trouble to put in something that was
>> really just a short-term bandaid for marketing purposes.  I understand
>> the reaons for it, but it sure is ugly.  And slow.
>
>It's only for "marketing purposes" if you think "solving the immediate
>needs to customers" is "marketing".

It was an "immediate need" that quickly evaporated for the vast
majority of users.  Vendors did in fact come out with 32-bit drivers in
a timely manner.  On top of that, when people did use DOS drivers they
quickly found that they made the system slow and unstable.  I recall
many a lunch-hour conversation that revolved around "if you get the new
drivers it'll quit crashing like that".

I think this is one of those cases where marketing said "the customers
will insist on this", and maybe they did insist (even though nobody
asked me at least), but they did so not knowing the consequences.  This
tends to be a common problem with features requested by marketing, that
are usually already promised to the users by the time engineering hears
about them, but that's another post.  On top of that, only a minority
of users ever upgrade their OS, so you're letting the needs of a small
minority drive the whole design.

Still, it made sense from a business point of view.  They didn't want
to cause people to think they were being abandoned, plus they wanted
"32 bit power users" to go to NT anyway.


>I see. I think switching IDEs that often is atypical outside of the
>embedded area though.

Probably, but that is what I do.  This is one reason I like embedded
work.  It has variety.

I do think it would do many programmers a lot of good to be forced to
switch platforms and/or development environments a couple of times
early on in their careers.  It is a broadening experience.  Portable
code and tools start looking like good ideas.  Better to learn that up
front than wait until your platform is dying.


>What's it [visual studio] lacking that you need?

Does it come with version control, or do I still need to buy that
Visual Sourcesafe thing?  I don't necessarily need distributed vc for
projects with 50 programmers (although CVS works fine and is free),
just a few users with a shared repository on a LAN.

Can it build multiple targets using different compilers?  How hard is
it to make it use another compiler, and still be able to grok the error
messages and such?  Can it invoke scripts or batch files or something
to generate code, and then compile said code as part of the project? 
Can it run on Linux?  Solaris?


>That is the conventional wisdom. I'm a little cynical about it, but
>that's probably because I write software for a living that is actually
>run on 486s more often than not, so I'm a bit out of sympathy
>with the "don't worry it'll be fast enough with next years chip."

I've recently worked on a 2 MHz (buss speed, clock is 8 MHz) 68hc11
microcontroller project (64K address space, integrated peripherals, cpu
is  similar to a 6809).  I feel your pain, squared <g>.  A "normal"
system in my line is a Coldfire or Power PC with 4 MB RAM, 8 MB of
flash, and no virtual memory.  If the system can run NT, then we
consider it to be "huge".


>> The kernel developers can explain why C++ isn't used for Linux much 
>> better than I, but speed is not the reason. 

>We were actually talking about Windows 2000. :D

Well, yeah, but you can actually look at the source for Linux and
critique the design.  With W2K you only get to critique what they say
the design is, which isn't often the same thing at all after passing
through the marketing filters.

-- 
 -| Bob Hauck
 -| To Whom You Are Speaking
 -| http://www.bobh.org/

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

From: John Hasler <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.misc
Subject: Re: democracy?
Date: Sat, 10 Jun 2000 23:06:49 GMT

[EMAIL PROTECTED] writes:
> Wonder how long before government witnesses start disappearing or dying
> off from mysterious causes?

The US government regularly deals successfully with people who really do
attempt such things.  Besides, it wouldn't help: all the testimony is
already on record (and most of it is documentary anyway).

David Steuber writes:
> It is odd that a company such as Microsoft hasn't taken that step sooner.

Monopoly gets your company broken up.  Murder gets you life in prison (or
dead).  I know of no reason to believe that anyone at Microsoft takes money
that seriously.

> It is just as odd that the people who have been trampled by Microsoft
> haven't done something similar to Microsoft employees or officers.

No it isn't.  They understand that it is only money.

> While all that is going on, Microsoft has a chance to organize affairs so
> that a break up won't hurt Bill Gates.

Some Wall street analysts believe that a breakup won't hurt any Microsoft
shareholders.  So what?  Do labor under the delusion that the point of the
suit is to punish someone?

> Carnegie kept getting richer after Standard Oil was broken up.

Not surprising, since as far as I know Carnegie owned little if any
Standard Oil stock.
-- 
John Hasler
[EMAIL PROTECTED] (John Hasler)
Dancing Horse Hill
Elmwood, WI

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


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list (and comp.os.linux.advocacy) via:

    Internet: [EMAIL PROTECTED]

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Advocacy Digest
******************************

Reply via email to