opus@ihlpe.ATT.COM (452is-Kim) (04/17/89)
ARP 1.3 seems great so far, but I did find one bug. If I use the supplied mount command, then RAD: won't boot. My A1000 will ask for a Workbench disk on a warm boot, though the stuff I put in RAD: is still there. When I switched back to Commodore's mount then I could boot from RAD: again. -- RoBiN G. KiM ...att!ihlpe!opus
jwl@Feanor.Stanford.EDU (John Lockhart) (04/18/89)
In article <4697@ihlpe.ATT.COM> opus@ihlpe.ATT.COM (452is-Kim) writes: >ARP 1.3 seems great so far, but I did find one bug. If I use the supplied >mount command, then RAD: won't boot. My A1000 will ask for a Workbench >disk on a warm boot, though the stuff I put in RAD: is still there. [stuff deleted] I had this problem, too, but found that it was easy to solve. Just go into your MountList and add something like "BootPri = 5" to your entry for RAD:. This makes it work properly. _________________________________________________________________________ -- John Lockhart jwl@feanor.stanford.edu BIX: jlockhart
gilham@polya.Stanford.EDU (Fred Gilham) (04/19/89)
I don't know whether to call this a bug, or my stupidity, or just something to watch out for. But with the arp 1.3 delete command, if you type something like delete *~ you delete everything. At least, I do. I guess it matches "anything" concatenated with "not nothing". Since I am used to typing rm *~ and delete #?~ because of gnuemacs and mg, the risk is obvious. Probably I'll just make a "clean" alias with the right string (delete *'~ I think). But maybe knowing this will save someone some text.... -Fred Gilham
crs@cpsc6b.cpsc6a.att.com (Chris (Life is hard, and then you die) Seaman) (04/21/89)
In article <6585@medusa.cs.purdue.edu>, wolff@cs.purdue.EDU (Robert M. Wolff) writes: < From article <8589@polya.Stanford.EDU>, by gilham@polya.Stanford.EDU (Fred Gilham): < > I don't know whether to call this a bug, or my stupidity, or just < > something to watch out for. But with the arp 1.3 delete command, if < > you type something like < > < > delete *~ < > < > you delete everything. At least, I do. I guess it matches "anything" < > concatenated with "not nothing". That's exactly what it is doing, which evaluates to "anything" :-). < I believe (please correct me if I'm wrong) that you are trying to NOT delete < something by the *~ notation. < The docs for arp13 state that you need to use ~* to NOT delete something. < < i.e. If you want to NOT delete *.c, you would 'delete ~*.c'... < < Right? Now I'm not positive...I think this is right though. < bob < Bob is right on the money here. Ths ARP overview manual tells us that the "~" is a special character, and must be quoted via the tick "'" character to escape its special meaning. I think you will find that modifying the original command to: delete *'~ will do what you expect it to. -- Chris Seaman | o\ /o crs@cpsc6a.att.com <or> | || See "Attack of the Killer Smiley"! ..!ihnp4!cpsc6a!crs | \vvvvvv/ Coming Soon to a newsgroup near you! | \____/
billsey@agora.UUCP (Bill Seymour) (04/21/89)
From article <4697@ihlpe.ATT.COM:, by opus@ihlpe.ATT.COM (452is-Kim): : : ARP 1.3 seems great so far, but I did find one bug. If I use the supplied : mount command, then RAD: won't boot. My A1000 will ask for a Workbench : disk on a warm boot, though the stuff I put in RAD: is still there. All you have to do is set the mount priority in the MountList. It seems they assume that if you don't have it set, the priority goes to -127, not 0 as in the commodore Mount command. : When I switched back to Commodore's mount then I could boot from RAD: again. : -- : RoBiN G. KiM : ...att!ihlpe!opus -- -Bill Seymour ...tektronix!reed!percival!agora!billsey ...tektronix!sequent.UUCP!blowpig!billsey Creative Microsystems Northwest Amiga Group At Home Sometimes (503) 691-2552 (503) 656-7393 BBS (503) 640-0842
thad@cup.portal.com (Thad P Floryan) (04/23/89)
Since it appears so many are having the same problem for which I developed a solution several months ago, enclosed is a shar containing my "purge" program. Since it's small, distribution via the "text" newsgroup seems the expedient solution. In conversation with Bob Page over dinner last week, he's still getting the { sources | binaries } set up "here"; Bob is now in N.California. Makefile, source code, and uuencoded executable (for those without a C compiler) are included. Hope this prevents teeth-gnashing, hair-pulling, etc. :-) Thad Floryan [ thad@cup.portal.com (OR) ..!sun!portal!cup.portal.com!thad ] # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # Makefile # purge.c # purge.uue # This archive created: Sun Apr 23 03:51:29 1989 echo shar: extracting Makefile sed 's/^X//' << \SHAR_EOF > Makefile X# Makefile for purge command X# X Xpurge: purge.o X ln -M +Q purge -lc X Xpurge.o: purge.c X cc purge SHAR_EOF if test 98 -ne "`wc -c Makefile`" then echo shar: error transmitting Makefile '(should have been 98 characters)' fi echo shar: extracting purge.c sed 's/^X//' << \SHAR_EOF > purge.c X/* P U R G E X * X * Deletes files in the current directory whose names match the pattern "*~". X * Such filenames are typically (GNU and MG) EMACS' and PATCH's backup files. X * Execution errors return silently with the exit status set = 20 and without X * deleting any files. X * X * USAGE: X * X * CLI> PURGE X * X * X * HISTORY: X * X * V1.0 8-Jan-1989, Initial Release, Thad Floryan X * Copyright (c) 1989 by Thad Floryan X * X * DISTRIBUTION: X * X * Although copyrighted, this program is freely redistributable. Feel X * welcome to use this program for your personal learning. X * X * NOTES: X * X * 1. The deleting of a file within an ExNext() loop perturbs the "order" of X * ExNext() in RAM: under 1.2. To get around this OS bug, PURGE collects X * all the qualifying filenames in one pass and deletes them en masse; this X * is the reason for the DeleteNames structure and its support routines. X * X * If the bug is fixed in later OS releases, then the following program X * suffices (assuming the presence of Manx' scdir() or equivalent): X * X * extern char *scdir(); X * main() { X * char *ptr; X * while ((ptr=scdir("*~")) != 0) unlink(ptr); X * } X * _wb_parse(){} X * _cli_parse(){} X * X * The above program does work fine under 1.2 *IF* the current directory X * is a disk (either floppy or HD). X * X * 2. At the end of this file are stubs for _cli_parse() and _wb_parse() to X * reduce the size of the executable because no arguments are parsed nor X * does PURGE run from the Workbench. X * X * 3. The "equivalent" shell script I use on my UNIXPC/3B1 is: X * X * # @(#) purge - removes Emacs' and patch's "*~" files (including .*~ files) X * # X * # Usage: X * # X * # $ purge purges current directory [ rm ./*~ ] X * # $ purge . purges current directory [ rm ./*~ ] X * # $ purge foo purges named directory [ rm foo/*~ ] X * # $ purge /foo/bar purges named directory [ rm /foo/bar/*~ ] X * # X * # Thad Floryan, 3-Dec-1988 X * X * if [ -z "$1" ]; then X * rm -f ./*~ ./.*~ X * else X * rm -f $1/*~ $1/.*~ X * fi X * exit 0 X * X * BUILDING: X * X * A Makefile is supplied to perform the following using Manx 3.6a: X * X * cc purge X * ln -M +Q purge -lc X */ X X#include <functions.h> X#include <libraries/dos.h> X#include <libraries/dosextens.h> X#include <exec/exec.h> X X#define MAXFILENAME 30 /* max length of a file name */ X Xextern char *rindex(); Xextern int strlen(); X Xvoid ACCUMULATE_NAME(); Xvoid DO_DELETE(); Xvoid FREE_NAMESPACE(); X Xstatic char *version = "purge V1.0 8-Jan-1989; Copyright (c) 1989 Thad Floryan"; X Xstatic struct FileInfoBlock *fibptr; X Xstruct DeleteNames { X struct DeleteNames *DN_Next; X struct DeleteNames *DN_Prev; X char DN_Name[MAXFILENAME + 1]; X}; X Xstatic struct DeleteNames *delbase; Xstatic struct DeleteNames *dellast; Xstatic struct DeleteNames *deltemp; Xstatic int delcnt = 0; X X/*****************************************************************************/ Xmain() X{ X struct FileLock *lockptr; X long errcod = 0; X X/* X * Allocate memory for structure(s) of interest X */ X fibptr = (struct FileInfoBlock *) X AllocMem((long)sizeof(struct FileInfoBlock), (long)MEMF_CLEAR); X/* X * Get Lock on current directory X */ X lockptr = Lock("", ACCESS_READ); X/* X * Check for file(s) X */ X if (Examine(lockptr, fibptr) == 0) X { X errcod = -1L; X } X X if (errcod == 0L) X { X ACCUMULATE_NAME(); X X for (;;) X { X if (ExNext(lockptr, fibptr) == 0L) X { X if ((errcod = IoErr()) == ERROR_NO_MORE_ENTRIES) X { X errcod = 0L; X } X break; /* gets out of "for" loop */ X } X ACCUMULATE_NAME(); X } X } X if (delcnt != 0) X { X if (errcod == 0) X { X DO_DELETE(); X } X FREE_NAMESPACE(); X } X/* X * Free up everything we got from the system X */ X UnLock(lockptr); X FreeMem(fibptr, (long)sizeof(struct FileInfoBlock)); X X (errcod == 0L) ? exit(0) : exit(20); X} X X/***************************************************************************** X * Qualifies a file whose last filename character is a '~' X * X */ Xvoid ACCUMULATE_NAME() X{ X register char *stringptr; X register char *indexptr; X int status; X/* X * Assure this is a FILE and not a DIRECTORY X */ X if (fibptr->fib_DirEntryType < 0) X { X stringptr = fibptr->fib_FileName; X indexptr = rindex(stringptr, '~'); X X if (indexptr == 0) X { X return; X } X if((long)strlen(stringptr) == (indexptr - stringptr + 1L)) X { X if (delcnt == 0) /* check if 1st name */ X { X delbase = (struct DeleteNames *) X AllocMem((long)sizeof(struct DeleteNames), X (long)MEMF_CLEAR); X dellast = delbase; X strcpy(dellast->DN_Name, stringptr); X delcnt++; X } X else /* subsequent entries */ X { X deltemp = (struct DeleteNames *) X AllocMem((long)sizeof(struct DeleteNames), X (long)MEMF_CLEAR); X deltemp->DN_Prev = dellast; X dellast->DN_Next = deltemp; X strcpy(deltemp->DN_Name, stringptr); X dellast = deltemp; X delcnt++; X } X } X } X} X Xvoid DO_DELETE() X{ X deltemp = delbase; X while (deltemp != 0) X { X/* X * unlink(deltemp->DN_Name) could be used, too. X */ X DeleteFile(deltemp->DN_Name); X deltemp = deltemp->DN_Next; X } X} X X/***************************************************************************** X * Frees up the filename space in the reverse order it was allocated; X * this seems best to help the system coalesce the free memory chunks. X */ Xvoid FREE_NAMESPACE() X{ X while (dellast != 0) X { X deltemp = dellast->DN_Prev; X FreeMem(dellast, (long)sizeof(struct DeleteNames)); X dellast = deltemp; X } X} X X/***************************************************************************** X * The following two stubs are here to prevent linking in the library X * routines of the same name since we don't run from Workbench and X * there are no CLI arguments to parse. X */ X_wb_parse(){} X_cli_parse(){} SHAR_EOF if test 5769 -ne "`wc -c purge.c`" then echo shar: error transmitting purge.c '(should have been 5769 characters)' fi echo shar: extracting purge.uue sed 's/^X//' << \SHAR_EOF > purge.uue Xbegin 777 purge XM```#\P`````````#``````````(```&M````&@````$```/I```!K4[Z`F)PZ XM=7)G92!6,2XP(#@M2F%N+3$Y.#D@*&,I5&AA9"!&;&]R>6%N`$Y5__A"K?_XN XM2'D``0``2'@!!$ZZ!A903RE`@!)(>/_^2'H`I$ZZ!:A03RM`__PO+(`2+RW_J XM_$ZZ!6)03TI`9@@K?/______^$JM__AF+F%X+RR`$B\M__Q.N@524$]*0&86_ XM3KH%7BM`__BPO````.AF!$*M__A@!&%.8-1*;(`&9PY*K?_X9@1.N@$$3KH!7 XM+"\M__Q.N@5@6$](>`$$+RR`$DZZ!:Q03TJM__AF"D)G3KH#.E1/8`H_/``4) XM3KH#+E1/3EU.=0``3E7__DCG`#`@;(`22J@`!&P``+`D;(`24(H_/`!^+PI.U XMN@$.7$\F0"`+9@A,WPP`3EU.=2!+D<I2B"\(+PI.N@$@6$](P"!?L<!F=DIL" XM@`9F,$AY``$``$AX`"A.N@4$4$\I0(`6*6R`%H`:+PH@;(`:4(@O"$ZZ`-A08 XM3U)L@`9@0$AY``$``$AX`"A.N@344$\I0(`>(&R`'B%L@!H`!"!L@!H@K(`>( XM+PH@;(`>4(@O"$ZZ`)Q03REL@!Z`&E)L@`9@`/]H3E4``"EL@!:`'DJL@!YGT XM&"!L@!Y0B"\(3KH#XEA/(&R`'BE0@!Y@XDY=3G5.50``2JR`&F<@(&R`&BEH' XM``2`'DAX`"@O+(`:3KH$>%!/*6R`'H`:8-I.74YU3E4``$Y=3G5.50``3EU.$ XM=2!O``0B2$H89OQ3B!`O``FSR&<(L"!F^"`(3G5P`$YU(&\`!"`((F\`"!#9, XM9OQ.=2!O``0@"$H89OR1P"`(4X!.=6%P0^R`$D7L@!*UR68.,CP`%6L(=``B& XMPE')__PI3X`B+'@`!"E.@"9(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS, XM0_H`($ZN_F@I0(`J9@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R87)Y8 XM`$GY``!__DYU3E4``"\*2'D``0``,"R`",'\``8O`$ZZ`V(I0(`N4$]F%$*G\ XM2'D``0``3KH#)E!/+FR`(DYU(&R`+D)H``0@;(`N,7P``0`0(&R`+C%\``$`9 XM"B!L@"(@+(`BD*@`!%"`*4"`,B!L@#(@O$U!3EA"ITZZ`Q8D0$JJ`*Q83V<NE XM+RT`#"\M``@O"DZZ_K(Y?``!@#8@;(`N`&B````$(&R`+@!H@```"D_O``Q@E XM0DAJ`%Q.N@,62&H`7$ZZ`O8I0(`X(&R`.$JH`"103V<0(&R`.")H`"0O$4ZZ* XM`?)83R\L@#@O"DZZ_E`I;(`X@#Q03TZZ`A8@;(`N((!.N@)`(&R`+B%```9GP XM%DAX`^U(>@`J3KH"'"!L@"XA0``,4$\O+(`\/RR`0$ZZ_"9"9TZZ``Q03R1?I XM3EU.=2H`3E4``$JL@$)G!B!L@$).D#\M``A.N@`(5$].74YU3E7__"\$,"T`/ XM"$C`*T#__$JL@"YG*'@`8`H_!$ZZ`/Y43U)$N&R`"&WP,"R`",'\``8O`"\L' XM@"Y.N@(04$]*K(!&9P8@;(!&3I!*K(`.9PHO+(`.3KH!EEA/2JR`2F<((&R`? XM2B"L@$Y*K(!29PHO+(!23KH!H%A/2JR`5F<*+RR`5DZZ`9!83TJL@%IG"B\LD XM@%I.N@&`6$]*K(!>9PHO+(!>3KH!<%A/+'@`!`@N``0!*6<4+PU+^@`*3J[_U XMXBI?8`9"I_-?3G-*K(`X9C!*K(!B9R@P+(!F2,`O`"\L@&).N@%H,"R`0%)`- XM2,#E@"\`+RR`/$ZZ`51/[P`08`Y.N@$^+RR`.$ZZ`5Y83R`M__PN;(`B3G4HC XM'TY=3G5.50``2.<.(#@M``@P!,'\``8D0-7L@"Y*1&T*N&R`"&P$2I)F$#E\L XM``*`:'#_3-\$<$Y=3G4(*@`'``1F""\23KH`"EA/0I)P`&#B(B\`!"QL@"I.V XM[O_<(B\`!"QL@"I.[O^"3OH``B(O``0L;(`J3N[_N$[Z``),[P`&``0L;(`J" XM3N[_FDSO``8`!"QL@"I.[O^4+&R`*D[N_\I.^@`"+&R`*D[N_WQ.^@`"3.\`Z XM!@`$+&R`*D[N_ZQ,[P`&``0L;(`J3N[_XBQL@"I.[O_$3OH``B(O``0L;(`JY XM3N[_IDCG`01,[R"```PL;(`F3J[_E$S?((!.=2)O``0L;(`F3N[^8D[Z``),< XM[P`#``0L;(`F3N[_.B)O``0L;(`F3N[^VBQL@"9.[O]\3OH``B)O``0@+P`([ XM+&R`)D[N_RX@;P`$+&R`)D[N_HPB;P`$+&R`)D[N_H8@;P`$+&R`)D[N_H``< XM`````^P````!`````0```M@````````#\@```^H````$````!````!0`````) XH`````````^P````!```````````````````#\@```^L````!```#\A0`= X`` Xend SHAR_EOF if test 2602 -ne "`wc -c purge.uue`" then echo shar: error transmitting purge.uue '(should have been 2602 characters)' fi # End of shell archive exit 0
gilham@polya.Stanford.EDU (Fred Gilham) (04/23/89)
In article <17528@cup.portal.com> thad@cup.portal.com (Thad P Floryan) writes: >Since it appears so many are having the same problem for which I developed a >solution several months ago, enclosed is a shar containing my "purge" program. > (over 2k of text and code omitted) Or you can do the following: alias purge delete *'~ which accomplishes a less general version of the same thing. -Fred Gilham
ecphssrw@lucky.csun.edu (Stephen Walton) (04/24/89)
In article <4697@ihlpe.ATT.COM>, opus@ihlpe (452is-Kim) writes: > >ARP 1.3 seems great so far, but I did find one bug. If I use the supplied >mount command, then RAD: won't boot. My A1000 will ask for a Workbench >disk on a warm boot, though the stuff I put in RAD: is still there. Charlie Heath admitted over on Bix that he had somewhat misunderstood how to make Mount work: in particular, that a default BootPri of 5 is to be supplied if there is none in the MountList. Add a BootPri=5 to your MountList entry for RAD: and all will be well. -- Stephen Walton, Dept. of Physics & Astronomy, Cal State Univ. Northridge RCKG01M@CALSTATE.BITNET ecphssrw@afws.csun.edu swalton@solar.stanford.edu ...!csun!afws.csun.edu!ecphssrw
Sullivan@cup.portal.com (sullivan - segall) (04/24/89)
>Since it appears so many are having the same problem for which I developed a >solution several months ago, enclosed is a shar containing my "purge" program. > >Since it's small, distribution via the "text" newsgroup seems the expedient >solution. In conversation with Bob Page over dinner last week, he's still >getting the { sources | binaries } set up "here"; Bob is now in N.California. > >Makefile, source code, and uuencoded executable (for those without a C compiler) >are included. Hope this prevents teeth-gnashing, hair-pulling, etc. :-) > >Thad Floryan [ thad@cup.portal.com (OR) ..!sun!portal!cup.portal.com!thad ] > [program deleted] Thad here is a smaller faster solution: ALIAS PURGE DELETE *'~ -Sullivan Segall _____________________________________________________________ /V\ Sully set the example: to fly without moving. We shall ' learn to soar on wings of thought. And the student will surpass the teacher. To Quote the immortal Socrates: "I drank what?" -Sullivan _____________________________________________________________ Mail to: ...sun!portal!cup.portal.com!Sullivan or Sullivan@cup.portal.com
edwin@hcr.UUCP (Edwin Hoogerbeets) (04/25/89)
Try the following with ARP's type command and with the standard AmigaDOS type: type con:0/0/200/200/foo to con:200/0/200/200/bar The CBM version opens two windows nicely and after a ctrl-\ in the left window, they both go away. ARP opens the output window and then gives: Can't open con:0/0/200/200/foo on the standard error after which the output window goes away again. I run ConMan, but I don't think that should have anything to do with it since the CBM version works. Can someone verify this? Edwin
thad@cup.portal.com (Thad P Floryan) (04/26/89)
Thanks to all for their one-line ALIASes for my "purge" program! When I first had the "problem", however, 1.3 (and its shell and alias &tc) weren't available. Besides, I wouldn't have discovered the RAM: bug if I didn't write the (several versions of) "purge." :-) And pity to those who enter an extra space in their alias definition ... reminiscient of the "rm -f * .o" typo on UNIX systems. Bye bye files ... :-) Thad Floryan [thad@cup.portal.com (OR) ..!sun!portal!cup.portal.com!thad]