[comp.sys.amiga] recursing out of control!

kent@xanth.UUCP (Kent Paul Dolan) (10/10/87)

New (to me) Amiga gotcha:

Made a new disk with format.

Copied a bunch of stuff onto it with kermit, say files A, B, C, D, E, F

Decided it would look better all in one directory.

Made a new directory, say G.

Decided a copy and delete would be faster than 6 renames.

	1> Copy : G all
                    ^^^  oops!

Copy copies A to G/A.
Copy creates new directory G/G.
Copy copies G/A to G/G/A.
Copy creates new directory G/G/G.
Copy copies G/G/A to G/G/G/A.
Copy creates new directory G/G/G/G.
Copy copies G/G/G/A to G/G/G/G/A.
.
.
.
Panicked operator hits control-C.

Luckily,

	1> delete G all

cleans up the mess in one try.

Remind you of the meta-genies out of Hofstader's _Goedel, Escher, Bach,
an Eternal Golden Braid_?  ;-)

(Keep the flames, that's how you spell Godel when your typefont
doesn't include an umlauted "o". ;-)

Wasn't anybody's fault but mine; thought you'd enjoy a laugh (and a
lesson) at my expense.

Kent, the man from xanth.

rokicki@rocky.STANFORD.EDU (Tomas Rokicki) (10/10/87)

>	1> Copy : G all
>                    ^^^  oops!
>Copy copies A to G/A.
>Copy creates new directory G/G.
>Copy copies G/A to G/G/A.
>Copy creates new directory G/G/G.
>Copy copies G/G/A to G/G/G/A.
>Copy creates new directory G/G/G/G.
>Copy copies G/G/G/A to G/G/G/G/A.

Gee, I wish I had thought of this when I *wanted* to do this.
(I was experimenting with how long it takes to seek down
different directory levels; how much overhead is there in
sticking another level of directories?)  So, I used EMACS to
create a script for me.  Of course, having REXX at the time
would have made it a one-liner . . .

> (Keep the flames, that's how you spell Godel when your typefont
> doesn't include an umlauted "o". ;-)

Nope, you spell it G\"odel in non-published stuff.

Thanks for the article!  In response, I give you one from me:
The easiest way to lock up a CLI is to type:

*

It tries to load standard input as an executable!  (You can
usually get out of it after a while, though . . .)

Or this one:  Manx's memcpy() routine is broken if you compile
with long ints; it's only good for memory areas < 64K; the code
looks like:

	bra	.in
.loop
	move.b	(a0)+,(a1)+
.in
	dbra	d0,.loop

when it should look like this:

	bra	.in
.loop2
	swap	d0
.loop
	move.b	(a0)+,(a1)+
.in
	dbra	d0,.loop
	swap	d0
	dbra	d0,.loop2

I can't remember if it checks the direction of the copy first.  Jim,
you out there?

And there's more.  Why doesn't `WaitForChar()' return before the delay
if the user hits ^\ (the EOF sequence?)  And, despite what Peck's
book says, the second parameter is in microseconds, so don't give it
a value less than 20000!

And then there's the raging SetSignal() controversy . . .

-tom