[Coco] Nitros9/Scripts question

Tormod Volden lists.tormod at gmail.com
Wed Dec 10 07:36:09 EST 2014


On Wed, Dec 10, 2014 at 12:33 PM, Gene Heskett wrote:
> On Tuesday 09 December 2014 22:38:42 Kandur did opine
> And Gene did reply:
>> Or in Linux called symlinks.
>>
>> Kandur
>
> Or in os9, much easier to do. But no one has ever written the utility to
> do it.
>
> For os9, if you look at the del code, you will find it first decrements
> the link byte in the files file descriptor sector and if that byte is then
> zero, it will then rewrite the directory entry with a zero'd first byte of
> the name AND, using the FD data, clear the FAT bits associated with the
> file.  However, if its >1, only the directory entry is cleared.
>
> From that it can be deduced that if we wanted a link created, all we have
> to do is grab the $20 bytes of that directory entry, and add it to the
> directory where it is wanted, AND increment that link count byte in the
> FD.
>
> I did it by hand using mostly dEd 15 years ago, at one point I had 5 such
> "links"
>
> But I never got around to writing it.  It didn't seem to be something that
> people were clamoring for.  Our world view os os9 today is I think, wide
> enough to need/accept such.
>
> We have a "link" utility but that is not its function.  In linux its ln,
> usually used with the -s option to create a "softlink" which functions as
> an alias redirect I believe, but the file itself can be rm'd out from
> under the softlink.  And while I haven't tested the variety of link called
> a hardlink, I get the impression that when a hardlink is rm'd, the file is
> truly gone but may leave what are then unresolved directory entries
> visible in other directory locations.

Your impression is not correct, see below.

>
> I rather like the way os9 handles it.  The file itself was not deleted
> until that link count byte in the FD was zero.  Otherwise it only
> disappeared from the directory path you were in, or specified in the del
> command.  The nice thing about that is that you would have to know where
> each such "link" lived because just redoing the del from that directory
> gets you a E$FNF, so you can't just sit there type del until you have
> defeated the link count because its no longer there in that directory
> after the first invocation.

What you describe above is similar to linux/unix/posix hard links.
When you create a hard link to a file, you get another directory entry
pointing to the same "inode" as the original, in fact the new and old
are equivalent. And there can be as many links as you want to the same
inode, and the inode keeps a reference count. You can see the
reference count using "ls -l".

Soft links are a "text" pointer to another file path (the target), and
it can be relative or absolute. If you delete the target, the soft
link becomes broken. If you create a new file at the old target
location, the soft link will be working again.

>
> This would be the os9 equ of the linux $PATH environment variable, and
> having that set correctly in ones .bashrc script makes lots of stuff a lot
> easier to do.

I am not sure I see the connection.

>
> In fact that might lead to keeping a path
> file (in /sys?) that I$open could look thru quickly when you type a
> command that is not in the CMDS dir, it would then consult the list of
> dir's in  this "paths" file, until it did find the program you wanted to
> run when you typed that name.  That would neat too.  And while it wouldn't
> be a huge time saver, it sure would be faster that typing a long filename.

If this is mainly for launching commands from a shell, why not just
implement a PATH variable in the shell, instead of doing something at
the system level (kernel) on I$open? Maybe some shell already have
this functionality, for what I know.

For saving on typing, shell aliases, which just expands a word to
something else, would be nice.

>
> Winter ideas... ;-)

Keep them coming :)

Regards,
Tormod


>
>> Tuesday, December 9, 2014, 7:07:30 PM, you wrote:
>> > I now understand what you want Kandur, It’s called shortcuts in
>> > modern terms. You have an interesting idea here, could be feasible.
>> >
>> > Bill Nobel
>> >
>> >> On Dec 9, 2014, at 8:57 PM, Kandur <k at qdv.pw> wrote:
>> >>
>> >> Bill and Robert, thanks for the infos.
>> >> Then let's forget about OS-9 scripts, all I want is to avoid
>> >> typing in long path names of often used subdirs, when I want to
>> >> chd into them. Perhaps a small utility with a menu like this?
>> >> 1   dd/Coco/_Software/_OS-9/_OS-9_Utilities/Kwikgen
>> >> 2   d1/Media_Players/WD_TV_Media_Player_-_New_for_2014/WD_TV_2014
>> >> 3   d0/Coco/_Software/_CoCo_Controller_Software/LR-Tech/SUPER_BOARD
>> >> Just enter the number to go to that directory.
>> >>
>> >> Kandur
>> >>
>> >> Tuesday, December 9, 2014, 5:20:14 PM, you wrote:
>> >>> What you can do Kandur is whatever your CHD or CHX directory stuff
>> >>> you put in the script will stay in the script. Scripts get thier
>> >>> own shell for execution, it inherits the directory paths from the
>> >>> calling shell (and device layout i.e. <>>>/wx). Until that shell
>> >>> dies by you exiting the program in that script. Then all directory
>> >>> paths revert to what you have in each shell you have running.
>> >>>
>> >>> Bill Nobel
>> >>>
>> >>>> On Dec 9, 2014, at 2:39 PM, Kandur <k at qdv.pw> wrote:
>> >>>>
>> >>>> Tuesday, December 9, 2014, 11:47:05 AM, Robert wrote:
>> >>>>> Kandur wrote:
>> >>>>>> I have another script question.
>> >>>>>> What script would take me to a subdir?
>> >>>>>> Instead typing every time: chd /dd/nitros9/6809L2/modules/RBF
>> >>>>>> just to type: go2rbf
>> >>>>>> I used build go2rbf with the above command line
>> >>>>>> changed it's attribute to e pe, but it did not work.
>> >>>>>> Kandur
>> >>>>>
>> >>>>> I may be wrong, but I don't think you can make a permanent change
>> >>>>> of directories within a script. What you can do is change
>> >>>>> directories, open a new window, and use the CLEAR key to switch
>> >>>>> to that window.
>> >>>>
>> >>>> Don't mind at all to push the CLEAR key to go to a new window,
>> >>>> as long as it's default directory is, e.g. /dd/NIRTOS9/8809L2
>> >>>>
>> >>>>> As an example, I can start Koronis Rift with the following
>> >>>>> script. I must use the CLEAR key to get to the game window.
>> >>>>>
>> >>>>> xmode /w4 par=1 pag=10
>> >>>>
>> >>>> What are these parameters mean?
>> >>>>
>> >>>>> cd games/krift
>> >>>>> (/dd/games/krift/cmds/autoex <>>>/w4)&
>> >>>>>
>> >>>>> A new window and shell start for the game.
>> >>>>
>> >>>> Sounds great.
>> >>>> When you iniz or xmode a window, or starting a shell in it,
>> >>>> is there a way to specify in which subdir should it start up?
>> >>>>
>> >>>>> Robert
>> >>>>
>> >>>> Kandur


More information about the Coco mailing list