Re: [PATCH] Speeding up FAT operations

Gerhard Mack (gmack@imag.net)
Thu, 24 Sep 1998 14:33:25 -0700 (PDT)


I think it depends on the system call you use, your expecting DOS to be
conistant and I can tell you it's not.
I seem to remember a problem in gr 11 with students accidentally creating
files with spaces using wordperfect and then WP refusing to read them.
I know _some_ of them will handle spaces but not all, I've seen it done.

Gerhard

On Thu, 24 Sep 1998, Richard B. Johnson wrote:

> On 23 Sep 1998, H. Peter Anvin wrote:
>
> > Followup to: <Pine.LNX.3.95.980923084335.832D-100000@chaos.analogic.com>
> > By author: "Richard B. Johnson" <root@chaos.analogic.com>
> > In newsgroup: linux.dev.kernel
> > >
> > > > This may not mean much, but two years ago when I first started learning a
> > > > computer I was learning QBASIC. And I read a post somewhere of an error in
> > > > QBASIC that would allow you to make a space in the name that no other program
> > > > could read except another QBASIC program that opened it the same way. It was
> > > > something like the following... (I haven't touched it for over a year and a
> > > > half so it may not be completely accurate)
> > > >
> > > > open "blah hi" as binary #1 (or something like this)
> > > > print #1, "jkfsdjlkfsdjkl"
> > > > close #1
> > > >
> > > > Then you can open "blah hi" with the QBASIC program again.
> > > >
> > > > The system never reported it as an error or anything, and it would show up as
> > > > a valid file when you did a DIR. In fact, when you got a directory listing,
> > > > it would show it with the space.
> > > >
> > >
> > > Yes. A DOS File-System emulator cannot assume that DOS file-names are
> > > all in upper case. It also can't assume that it contains "valid"
> > > characters. DOS File names are not supposed to contain '.', ' ', etc.,
> > > but they can.
> > >
> >
> > Hang on! That's a different thing -- you can't create those files
> > with DOS system calls. Space *IS* a legal character in DOS filenames
> > -- the system calls will happily accept it, although the shell won't
> > (although it will match it against ?).
> >
> > -hpa
>
> The systems calls will not accept a space even though a MS-DOS file-
> name of "1" is really "1 " on the physical disk. Try it.....
>
> pseg segment para public 'code'
> assume cs:pseg, ds:pseg, es:pseg, ss:pseg
> org 100h
> main proc near
> jmp short foo
> ;fname db ' ',0 ; Bad
> ;fname db 'z',0 ; Okay
> ;fname db '.',0 ; Bad
> ;fname db 0e5h,0e5h,0 ; Okay
> ;fname db 27,'[H',27,'[J',0 ; Bad
> ;fname db 1,2,3,4,5,0 ; Bad
> ;fname db 127,128,129,0 ; Good
> fname db '55',248,'C',0 ; Good
> badfile db 'Bad file name.',0dh,0ah,'$'
> good db 'Good!',0dh,0ah,'$'
> main endp
> ;
> foo proc near
> mov dx,offset fname ; Point to file name
> xor cx,cx ; Normal file attributes
> mov ax,3c00h ; MS-DOS Create function
> int 21h
> jc bad ; Was bad, can't create.
> mov bx,ax ; Good, get handle
> mov ax,3d00h ; MS-DOS Close function
> int 21h
> mov dx,offset good ; Point to 'Good' string.
> jmp short prnt ; Print and exit
>
> bad: mov dx,offset badfile ; Point to bad file name string
> prnt: mov ax,0900h ; MS-DOS print-string
> int 21h
> quit: mov ax,4c00h ; MS-DOS exit normal
> int 21h
> foo endp
> ;
> pseg ends
> end main
>
>
> What GWBASIC used to do was create a file using the FCB function call
> 0x16. Then, since it had the original File-Control-Block in its
> address-space, it would put any characters it wanted, including
> lower-case, in the FCB when it closed it. This is what got written
> to the disk. This is also the way Peter Norton 'opened' a directory
> as a file so that he could sort its contents.
>
> The original post was a warning that one should not assume that there
> are no "incorrect" characters in a MS-DOS file-name. I can easily
> create a file called "*.*" and or "???????????", which can cause some
> problems with 'rm', etc., although such file-names are usually
> 'created' during a disk error.
>
> Cheers,
> Dick Johnson
> ***** FILE SYSTEM WAS MODIFIED *****
> Penguin : Linux version 2.1.118 on an i586 machine (66.15 BogoMips).
> Warning : It's hard to remain at the trailing edge of technology.
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/
>

--
Gerhard Mack
irc-admin skyline.starchat.net
	
gmack@imag.net
InnerFIRE@starchat.net

As a computer I find your faith in technology amusing.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/