America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, November 20, 1990 10:00 p.m. Eastern Time
Topic: Apple II Network Programming
Forum Leader: Dave Sugar (AFL Dyfet)
AFL Dyfet Tonight's topic is Network Programming on the Apple II
AFL Dyfet Yes Scott, go ahead...let's give Scott some room to talk on the
floor folks :)
AFL Scott If I use GS/OS Class 1 file calls will my program be able to be
run from an AppleShare server?
AFL Dyfet On topic...:) GA Dave...
EdWatkeys Can't your programs run from a server provided they don't READ or
WRITE BLOCK?
Dave Lyons Scott, that isn't enough to *guarantee* you'll run with
AppleShare, but it's certainly
Dave Lyons helpful. You don't have to worry about getting killed by long
paths that way (AppleShare
Dave Lyons pathnames can easily be >64 characters long).
Dave Lyons The stuff listed in the GS/OS Technical Notes is very good.
Dave Lyons If you have any hard-coded
Dave Lyons pathnames, make sure the high bits are turned *off* for regular
ASCII characters--the ProDOS
Dave Lyons FST ignores the high bits, even though they are *supposed* to be
off. AppleShare (and possibly
Dave Lyons other FSTs in the future) care about all 8 bits of your
characters.
Dave Lyons (ga)
AFL Dyfet In regards to Ed's question, there are instances you cannot use
block read/
AFL Dyfet write on a ProDOS volume :), and certainly not on a server
volume.
AFL Scott Ok...do you happen to remember the technote number, Dave?
AFL Scott And thanks, BTW!:)
Dave Lyons Sure, just a sec--
Dave Lyons GS/OS #4, A GS/OS State of Mind is good; also there is material in
the GS/OS Reference,
Dave Lyons of course.
AFL Scott Thanks!:) GA, Done, Finito :)
Dave Lyons Stay completely away from READ_BLOCK, WRITE_BLOCK, DRead, and
DWrite whenever you can.
Dave Lyons (ga)
EdWatkeys Dread? RWrite? What are they (I'm an 8-bitter...)
AFL Dyfet The block read/write calls are blocked in the ProDOS FST if any
files are open
AFL Dyfet on the volume in question due to caching. Otherwise you could
disturb
AFL Dyfet something in transition (ugly). For both ProDOS 8 and the GS/OS
AppleShare FST
AFL Dyfet block I/O is disabled completely. Correct Dave??
Dave Lyons Yes--
Dave Lyons AppleShare returns errors ($88 I think) if you try to do block
reads/writes.
Dave Lyons (Ed, DRead and DWrite are GS/OS calls.)
Dave Lyons One more tip--
Dave Lyons Don't use Read to scan a directory; use GetDirEntry instead. (I
think ProDOS lets you use Read for
Dave Lyons backward compatibility, but other FSTs do NOT!)
Dave Lyons ga
AFL Dyfet Under ProDOS 8, open and read the directory file through the MLI
file access
AFL Dyfet calls, and NEVER by following the directory block links with
direct block I/O.
EdWatkeys Well, what do DRead and DWrite do?
Dave Lyons (Ed, they stand for "Device read" and "device write"--they let you
read and write ranges
Dave Lyons of blocks on a block device.)
AFL Dyfet Okay, who else has a networking/AppleShare question for tonight?
ShanoJ I guess I'll make a wild stab at a question: if in Convert/3200 I
want to
ShanoJ change the suffix of a file (ie. xxxxx.SCR for a $C1 file) in the
save dialog,
ShanoJ it's not a good idea to just truncate the input filename to 11
characters and
ShanoJ add the .SCR, right? I should keep ALL of the characters? What do
I do if that
ShanoJ doesn't fit in the SFPutFile LE?
AFL Dyfet GA Joey...
AFA JoeyS Well, IMHO (and probably according to AHIG, too), a suffix should
never be
AFA JoeyS forcibly added -- naming should be totally the user's option. You
can, however
AFA JoeyS take the source (GIF, whatever) filename, truncate to 11, add
".SCR", and pass
AFA JoeyS it to SFPutFile as the default name... that'd keep everyone happy.
GA.
Dave Lyons (Yeah, what Joey said.)
AFL Dyfet :)
AFA Gary J (the Dave Lyons stamp of approval :)
AFA JoeyS :)
AFL Dyfet "Nifty-Stamp" :)
Dave Lyons :)
AFA Gary J USDA
AFA Gary J (DAve :)
Dave Lyons (Or USDAL?)
AFA JoeyS LOL
Dave Lyons BTW, it has been suggested that Standard File ought to
Dave Lyons let you specify a default name and have *part* of it selected by
default, so you could
Dave Lyons have something like [UNTITLED].SCR (bracketed part is selected)
and type over that part, leaving
Dave Lyons the suffix (but you could still edit the rest, of course).
ShanoJ So even if it's a 64 character name from an AppleShare sever, it'd
be okay to
ShanoJ truncate the thing?! Say it aint so.... :)
Dave Lyons (AppleShare names are limited to 31 characters.)
Dave Lyons What? I don't understand the question.
AFA JoeyS The user could always change it... defaults aren't forced, y'know.
:)
ShanoJ I know, I'm just thinking of MyVeryVeryLongNamedGIF coming out to
be
ShanoJ MyVeryVeryL.GIF
Dave Lyons For the SFxxx2 calls, the edit line is *not* limited to 15
characters! Use the "2" calls!
AFL Marty (If they are forced, it's default of deprogrammer.)
AFA JoeyS Right, Jonah, but the point is that that's only the program's
suggestion;
AFA JoeyS it's up to the user to name a file something meaningful.
ShanoJ Okay, I see what you're saying....
AFA JoeyS I'm not sure if you can use GetFSTInfo to get any specs on
maximum
AFA JoeyS filename length, and use that... (I'm afraid I don't have GS/OS
ref, so never
AFA JoeyS ever trust my comments on GS/OS calls. :( )
Dave Lyons Nope, GetFSTInfo does not provide that sort of info these days.
But *yes*, it would be nice if the
Dave Lyons system provided some help in constructing valid filenames.
AFA JoeyS Maybe validateFilename(desired_name): valid_name?
Dave Lyons Something like that--there are a bunch of
Dave Lyons interesting details (like how it constructs a valid name from an
invalid one, whether it has to
Dave Lyons be unique, whether you operate on a whole pathname or just a
filename).
Mac Hater (but aren't multiple FST's active at once?)
Dave Lyons MH, Yes, all the FSTs you're using are in your system at once. So
you would have to tell
Dave Lyons validateFilename which FST you wanted to talk to, or else it would
have to figure it out from the
Dave Lyons path.
AFA JoeyS Seems like it could just make the name syntactically valid, and
let the
AFA JoeyS program do any other checking it wants.
AFA JoeyS Can you get the ID of the most recently accessed FST?
AFA JoeyS (something like a P16 Get_Last_Dev, but for FST's?)
Mac Hater useless.. I just save onto hard drive, but now wanna save onto
(hint) 3.5" hfs
Dave Lyons The most recently accessed FST is not necessarily useful--FSTs get
"accessed" a lot.
Dave Lyons (Besides, what if you've got a background process, like a Find
File DA, making OS calls?)
AFA JoeyS True. <sigh>
Dave Lyons My favorite approach is to pass the FST ID to the validate call.
Dave Lyons ("Just" making the filename
Dave Lyons syntactically valid is not that simple--what you *want* is to keep
as much of the "interesting"
Dave Lyons parts of the name as you can, so the user can recognize the files.
For example, copy a whole
Dave Lyons folder of files with long names from AppleShare to ProDOS, and let
the Finder translate the names
Dave Lyons for you. I don't recall what it does currently, but you want
something like chopping out the
Dave Lyons *middles* of names that are too long--otherwise you get a lot of
duplicate filenames.)
AFA JoeyS (thinking)... (sorta-solution): after making the SFPutFile2 call
(which accepts
AFA JoeyS any sort of junk you give it), couldn't you get the FST used by
device
AFA JoeyS specified by prefix #8, then pass that ID and the requested
filename to the
AFA JoeyS validateFilename call?
Dave Lyons Wait, who sez SFPutFile2 accepts whatever junk you give it? It
actually does a GetFileInfo on the
Dave Lyons resulting path before it returns. If there's an error, it
complains & you stay in the dialog.
Dave Lyons (A bad-path error, I mean.) If there's a file-not-found error it
returns. If there's *no*
Dave Lyons error it asks if you want to replace the file or not.
AFA JoeyS Well, change it. :-) LOL, okay, maybe not.
Dave Lyons Joey, I would actually like to implement something like that,
having Standard File help you type
Dave Lyons a good name. How should the human interface work?
Dave Lyons It is complicated by the fact that you can type
Dave Lyons part of a name and switch to a different disk (possibly of a
different file system) without
Dave Lyons disturbing the "name in progress" field.
AFA JoeyS But, the SF dialog always knows what disk it's looking at, and can
always
AFA JoeyS retrieve the FST type of that volume.
Dave Lyons True, but are you saying I should *not* be able
Dave Lyons to do the following? Tab to a ProDOS volume,
Dave Lyons type in "this name has blanks", tab to an AppleShare volume, and
hit Save?
AFA JoeyS No, you should be able to do that. But after you press RETURN
with your
AFA JoeyS desired filename, the system knows: what volume you're saving to,
what FST that
AFA JoeyS volume uses, and what the filename is. That doesn't help with
on-the-fly
AFA JoeyS "guidance", but SF could put up a dialog like "The filename:
<what_you_typed>
AFA JoeyS is invalid because <name is too long><the character " " is not
accepted>
AFA JoeyS <whatever>." and let you tried again. <shrug>
Dave Lyons Yeah, that is pretty reasonable. I am leaning
Dave Lyons toward giving a generic one- or two-sentence description of the
proper syntax for a given
Dave Lyons file system, rather than telling them exactly what is wrong with
their particular path (there can
Dave Lyons be any combination of problems, including *multiple* illegal
characters, so it doesn't seem
Dave Lyons worth the complication to build a whole sentence!)
AFA JoeyS Well, in place of the specific description, the FST could try
AFA JoeyS reconstructing the input to a valid path; i.e. "The filename
AFA JoeyS 'big long file name' is not acceptable to the ProDOS FST.
'biglongfilename' is
AFA JoeyS a valid alternative." Yeah, getting complicated there, maybe too
much so.
Dave Lyons (Yeah, that too--it can make a valid path from the invalid one &
stuff that as the default in a
Dave Lyons line edit box inside the dialog. I don't want the dialog more
complicated that necessary, but it
Dave Lyons may work. Buttons = Cancel (back to main SF dialog), Continue
(use the name entered in the
Dave Lyons sub-dialog). Reasonable?
AFA Gary J That's reasonable to me.
AFA JoeyS Continue = accept system's altered/valid name? Sounds good,
yup.
Dave Lyons Continue = accept whatever is in the subdialog line-edit box,
which starts out as a system-
Dave Lyons provided valid name, yeah.
AFA JoeyS Yeah... well, err...
Dave Lyons (And that would be continue saving *or* continue with the "New
Folder" operation. Is that all?)
AFA JoeyS I might be missing something, but why have an LE field in the
subdialog (the
AFA JoeyS warning box)? Just pass it back as the new default name in the
regular
AFA JoeyS SFPutFile; that way the user can go change disks again or whatever
without
AFA JoeyS clicking any extra buttons ('cept OK/RETURN to dispense with the
original
AFA JoeyS alert -- which users could do without even looking at it.)
Dave Lyons Hmmm...okay, then you have "Cancel" and "Accept", and once you
Accept you have to click Save again,
Dave Lyons right?
Dave Lyons That would work too.
AFA JoeyS Seems there should be only >one< place to type the filename (the
current LE
AFA JoeyS box).
Dave Lyons Okay, I can dig having only one place to type the name. It seems
like there should be an option
Dave Lyons to ignore the reconstructed name & just fix it yourself, since you
might have clicked Save while
Dave Lyons on the wrong disk (you might have the right name on the wrong
filesystem, instead of a bad name on the
Dave Lyons right filesystem, no?).
AFA JoeyS I'm sorry, I don't agree with that... having an option to ignore
the regen'd
AFA JoeyS name just adds one more option; gets too confusing. The =worst=
that could
AFA JoeyS happen if the system just passed the regen'd name to the regular
SF dialog LE
AFA JoeyS box is that you accidentally hit save, and get a misnamed but
recognizable
AFA JoeyS file. There's no way to avoid accidentally clicking buttons.
%)
AFL Dyfet :)
AFA Gary J I don't know. I think I'd get ticked at the computer altering my
file name if
AFA Gary J I had it right, but just selected the wrong volume.
AFA JoeyS You shouldn't have selected the wrong volume, then. :P LOL
Dave Lyons :)
AFA JoeyS <re-shrug> I guess if the "This name is invalid; 'blah...' is an
acceptable
AFA JoeyS alternative." had Cancel (OA/.) (ignore changed name) and OK
(RETURN) (accept
AFA JoeyS changed name) buttons I'd live.
AFA Gary J True :) But what if you have "Big long path name for a HFS
volume", and had
AFA Gary J to re-type? I guess you'd learn fast to get the volume right the
first time!
AFL Dyfet I think we could probably do better discussing this in a message
area :)
AFA JoeyS LOL... right, Gary. Who types names like that anyway? :)
AFA Gary J Only the mac types, I guess.
Dave Lyons (Gary, your name is 3 characters too long, I think.)
AFA JoeyS :) Dave
AFA Gary J I think so, Dave :)
A2GS <--- My name just makes it :-)
AFA Gary J :)
AFA Gary J AFA Gar
Dave Lyons :)
AFL Dyfet I hate when that happens...
AFA Gary J :)
AFC TAP so do I..
A2GS Never seems to happen to me...wonder why? (looking at ceiling)
AFA JoeyS Be thankful we're not using MS-DOS... we'd be stuck with
filename.dat. :(
AFA Gary J That's got to be the worst.
AFL Marty I like MSDOS :)
A2GS Messy-Dos....the way of the future
AFA Gary J But wait, what about DOS 3.3 file names? :) (just kidding)
Dave Lyons (The Tandy 200 has FILNAM.XXX. That's worse.)
A2GS DOS 3.3 was/IS great
AFA JoeyS Well, it's a bitty machine, though.
AFA Gary J (DOS 3.3 names are nice compared to ProDOS, although ProDOS is
more practical)