Loading document problem in word 97

Alan Gonzalez agonzalez at yahoo.com
Sat May 5 16:27:28 CDT 2001


Hi, I'm using wine 04/18 release and have been reading the archives pretty
constantly and using releases for a while now.  This is my first bug report, so
be kind!  

So the system i have is redhat linux 6.2 (2.2.16-3) with lots of upgrades, dual
boot with win98 on the other partition.  It's mounted in linux at /c. 

I remember a time when this feature worked ( i can't remember when though) and
it hasn't been working since probably the last couple of releases.  I can't
exactly pinpoint it down because i skipped a couple at the end of 2000. 
Anyways here's the problem.

I can run word 97 fine which is pretty awesome.  The basic quick overview of
the problem is that i try to open a word document, word then says it can't find
it,  and then the original file has been renamed to the original name with an
additional .doc at the end.  

so the longer explanation is that i click on File->Open and the file open
dialog comes up.  I then go to the C: drive and it shows me the files there. 
Everything looks fine.  Now i go and double click on the file and then word
pops up a little dialog box and says: 

This file could not be found.
Try one or more of the following:
Check the spelling of the name of the document
Try a different file name
(OLD EXAMS AND ANSWERS.DOC)

After this i check the filesystem and see that my file:

/c/Old exams and answers.doc has been renamed to:
/c/Old exams and answers.doc.doc

Now if in the file open dialog i had manually typed in c:\Old exams and
answers.doc, then clicked open,  word opens the file fine.  So it's something
in the handling of the double click open.

I've never debugged a wine application before, so i just did --debugmsg
trace+all and saved it to a file.  I then went through this and found some
things.  This might not be what you need to figure out the problem, but i
thought it was kinda interesting.

So i can see some calls to the registry for the ".doc" key. I thought this
could in some way be related, but who knows:

Call advapi32.RegOpenKeyA(80000000,405a1e84 ".doc",405a1fa0) ret=307fa984
tid=08064220
Call ntdll.RtlInitAnsiString(405a1d90,405a1e84 ".doc") ret=407a65eb
tid=08064220
Ret  ntdll.RtlInitAnsiString() retval=00000005 ret=407a65eb tid=08064220
Call ntdll.RtlAnsiStringToUnicodeString(40114f98,405a1d90,00000000)
ret=407a65f4 tid=08064220
Ret  ntdll.RtlAnsiStringToUnicodeString() retval=00000000 ret=407a65f4
tid=08064220
Call ntdll.NtOpenKey(405a1fa0,000f003f,405a1d98) ret=407a6607 tid=08064220
trace:reg:NtOpenKey (0x80000000,L".doc",f003f,0x405a1fa0)
08064220: open_key( parent=-2147483648, access=000f003f, name=L".doc" )
Open key \\Machine\\Software\\CLASSES\\.doc
08064220: open_key() = 0 { hkey=404 }

Then after this, the next item i see that has my file in it is:

Ret  user32.SetClassLongA() retval=0000024e ret=30821509 tid=08064220
Call kernel32.GetFileAttributesA(405a1d04 "C:\\Old exams and answers.doc.doc")
ret=3071096c tid=08064220
trace:dosfs:DOSFS_GetFullName C:\Old exams and answers.doc.doc (last=1)
trace:string:lstrcpynA (0x405a145c, "/c", 1024)
trace:dosfs:DOSFS_FindUnixName /c,Old exams and answers.doc.doc
trace:heap:HeapAlloc (40350000,00000002,0000022c): returning 403c6ba8
trace:heap:HeapFree (40350000,00000002,403c6ba8): returning TRUE
Ret  kernel32.GetFileAttributesA() retval=ffffffff ret=3071096c tid=08064220
Call kernel32.GetLastError() ret=3071068e tid=08064220
Ret  kernel32.GetLastError() retval=00000002 ret=3071068e tid=08064220
Call user32.SetCursor(0000024e) ret=308214ce tid=08064220
trace:cursor:SetCursor 024e
Call x11drv.SetCursor(4038df28) ret=406c15ba tid=08064220

so here we can see that the file is the wrong name.

Later on i can actually see the MoveFileA() command be run, which i think is
where the file gets renamed:

Call kernel32.GetVolumeInformationA(405a1d6c
"C:\\",00000000,00000000,00000000,42f2ccd4,00000000,00000000,00000000)
ret=30710a2f tid=08064220
Ret  kernel32.GetVolumeInformationA() retval=00000001 ret=30710a2f tid=08064220
Call kernel32.TlsGetValue(00000002) ret=30712a81 tid=08064220
Ret  kernel32.TlsGetValue() retval=4038f34c ret=30712a81 tid=08064220
Call kernel32.MoveFileA(405a1fa8 "C:\\Old exams and answers.doc",405a21b0
"C:\\Old exams and answers.doc.doc") ret=30751414 tid=08064220
trace:file:MoveFileA (C:\Old exams and answers.doc,C:\Old exams and
answers.doc.doc)
trace:dosfs:DOSFS_GetFullName C:\Old exams and answers.doc (last=1)
trace:string:lstrcpynA (0x405a16f8, "/c", 1024)
trace:dosfs:DOSFS_FindUnixName /c,Old exams and answers.doc
trace:heap:HeapAlloc (40350000,00000002,0000022c): returning 403c6ba8
trace:dosfs:DOSFS_FindUnixName (/c,Old exams and answers.doc) -> Old exams and
answers.doc (OLDEXA~2.DOC)
trace:heap:HeapFree (40350000,00000002,403c6ba8): returning TRUE
trace:dosfs:DOSFS_GetFullName returning /c/Old exams and answers.doc =
C:\OLDEXA~2.DOC
trace:dosfs:DOSFS_GetFullName C:\Old exams and answers.doc.doc (last=1)
trace:string:lstrcpynA (0x405a0ef4, "/c", 1024)
trace:dosfs:DOSFS_FindUnixName /c,Old exams and answers.doc.doc
trace:heap:HeapAlloc (40350000,00000002,0000022c): returning 403c6ba8
trace:heap:HeapFree (40350000,00000002,403c6ba8): returning TRUE
trace:dosfs:DOSFS_GetFullName C:\Old exams and answers.doc.doc (last=0)
trace:string:lstrcpynA (0x405a0ef4, "/c", 1024)
trace:dosfs:DOSFS_FindUnixName /c,Old exams and answers.doc.doc
trace:heap:HeapAlloc (40350000,00000002,0000022c): returning 403c6ba8
trace:heap:HeapFree (40350000,00000002,403c6ba8): returning TRUE
trace:dosfs:DOSFS_GetFullName returning /c/Old exams and answers.doc.doc =
C:\old exams and answers.doc.doc
Ret  kernel32.MoveFileA() retval=00000001 ret=30751414 tid=08064220

This is probably too little information to figure out. Just tell me how i
should run word and i'll help in anyway i can.  Thanks.

Alan Gonzalez

__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/




More information about the wine-devel mailing list