[Scummvm-cvs-logs] SF.net SVN: scummvm:[34654] scummvm/branches/gsoc2008-vkeybd
kenny-d at users.sourceforge.net
kenny-d at users.sourceforge.net
Fri Sep 26 23:53:39 CEST 2008
Revision: 34654
http://scummvm.svn.sourceforge.net/scummvm/?rev=34654&view=rev
Author: kenny-d
Date: 2008-09-26 21:53:08 +0000 (Fri, 26 Sep 2008)
Log Message:
-----------
Merged revisions 33452-33453,33455-33459,33463-33464,33466-33471,33473-33474,33478,33490,33492,33495-33496,33509-33512,33518-33519,33522-33527,33529-33530,33537,33541,33544,33546,33550,33552-33554,33556,33558,33561-33562,33565,33568,33570,33574,33576,33578-33581,33584-33587,33590,33596,33604-33611,33614-33615,33617-33618,33620-33621,33623,33626-33627,33632-33633,33635,33637,33639-33640,33642-33645,33648,33654-33655,33664,33667-33670,33673-33674,33678,33682,33686-33691,33693,33696,33698,33700,33703,33708,33710,33712-33714,33716,33719,33721-33723,33725-33727,33729-33730,33733,33736,33742,33754,33756,33758,33761,33763,33766,33777,33781-33788,33790,33792-33793,33795,33797,33805,33807-33812,33815-33817,33819,33822,33826,33829,33837,33839,33844,33847,33858-33861,33864,33871-33873,33875,33877-33879,33886,33889-33892,33894,33896,33900,33902-33903,33919,33928,33930,33932-33936,33938-33940,33942-33943,33948,33950,33953,33967,33973,33976,33978,33980,33985,33991,33993,33999-34000,34006,34009,34011,34013,34015,34019,34021-34023,34025,34027-34028,34030,34032-34034,34036,34038-34039,34041,34046-34048,34050-34055,34057,34059-34065,34067,34072,34074,34076,34078-34081,34084,34086-34087,34089-34090,34093,34096-34102,34104,34107,34113,34116,34119,34122,34124,34126,34128,34131-34132,34135,34138,34141,34144,34146,34149,34152-34154,34156-34157,34160,34163-34164,34169,34173,34179-34194,34196-34198,34200-34201,34205-34206,34208-34217,34219-34225,34227-34228,34234-34237,34239-34249,34251-34279,34281-34284,34286-34288,34290-34320,34323-34324,34326,34328-34329,34332,34334,34336,34338-34340,34343-34353,34356-34357,34359-34371,34373,34375,34378,34381-34382,34384-34385,34389-34391,34393-34394,34396-34397,34399-34405,34407-34409,34411,34413,34415,34417-34420,34423-34426,34428-34438,34440-34454,34456-34458,34460,34462-34469,34472,34474,34479-34481,34483-34498,34501-34505,34508,34511-34518,34520-34524,34526-34563,34566-34569,34571-34590,34592,34595-34599,34602-34603,34605,34613-34615,34617,34619-34624,34627-34628,34630-34639,34642-34649 via svnmerge from
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk
Modified Paths:
--------------
scummvm/branches/gsoc2008-vkeybd/AUTHORS
scummvm/branches/gsoc2008-vkeybd/COPYRIGHT
scummvm/branches/gsoc2008-vkeybd/NEWS
scummvm/branches/gsoc2008-vkeybd/README
scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.cpp
scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/wii/wii-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/wii/wii-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/wii/wii-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/windows/windows-fs-factory.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/windows/windows-fs-factory.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/windows/windows-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/midi/alsa.cpp
scummvm/branches/gsoc2008-vkeybd/backends/midi/seq.cpp
scummvm/branches/gsoc2008-vkeybd/backends/module.mk
scummvm/branches/gsoc2008-vkeybd/backends/platform/PalmOS/Src/be_base.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/dc/dc-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/dc/selector.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/dc/vmsave.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm7/Makefile
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm7/source/main.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/makefile
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/blitters_arm.s
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/cdaudio.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/dsmain.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/dsmain.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/dsoptions.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/dsoptions.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/gbampsave.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/gbampsave.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/osystem_ds.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/osystem_ds.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/portdefs.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/ramsave.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/ramsave.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/touchkeyboard.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/source/touchkeyboard.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/makefile
scummvm/branches/gsoc2008-vkeybd/backends/platform/gp2x/gp2x.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/iphone/iphone_keyboard.m
scummvm/branches/gsoc2008-vkeybd/backends/platform/iphone/iphone_main.m
scummvm/branches/gsoc2008-vkeybd/backends/platform/iphone/iphone_video.m
scummvm/branches/gsoc2008-vkeybd/backends/platform/iphone/osys_iphone.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/iphone/osys_iphone.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/null/null.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ps2/rawsavefile.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ps2/rawsavefile.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/ps2/savefile.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ps2/savefile.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/psp/osys_psp.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/psp/osys_psp_gu.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/psp/portdefs.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/psp/psp_main.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/sdl/events.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/sdl/graphics.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/sdl/sdl.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/sdl/sdl.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/AdaptAllMMPs.pl
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/BuildPackageUpload_AllVersions.pl
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/README
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S60/ScummVM_S60.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v1.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S80/ScummVM_S80.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S80/scummvm-CVS-SymbianS80.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S90/Scummvm_S90.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/S90/scummvm-CVS-SymbianS90.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/UIQ3/scummvm-CVS-SymbianUIQ3.pkg
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/mmp/scummvm_base.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/SymbianActions.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/SymbianOS.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/SymbianOS.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/portdefs.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/Makefile
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/gx_supp.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/gx_supp.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/main.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/osystem.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/osystem.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/wii/osystem_gfx.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/CEActionsPocket.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/CEActionsSmartphone.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/CELauncherDialog.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/CELauncherDialog.h
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/CEkeys/EventsBuffer.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/Makefile
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/README-WinCE.txt
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/missing/missing.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/wince-sdl.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/wince/wince-sdl.h
scummvm/branches/gsoc2008-vkeybd/backends/saves/compressed/compressed-saves.cpp
scummvm/branches/gsoc2008-vkeybd/backends/saves/default/default-saves.cpp
scummvm/branches/gsoc2008-vkeybd/backends/saves/default/default-saves.h
scummvm/branches/gsoc2008-vkeybd/backends/vkeybd/virtual-keyboard.cpp
scummvm/branches/gsoc2008-vkeybd/base/commandLine.cpp
scummvm/branches/gsoc2008-vkeybd/base/main.cpp
scummvm/branches/gsoc2008-vkeybd/base/module.mk
scummvm/branches/gsoc2008-vkeybd/base/plugins.cpp
scummvm/branches/gsoc2008-vkeybd/base/plugins.h
scummvm/branches/gsoc2008-vkeybd/base/version.cpp
scummvm/branches/gsoc2008-vkeybd/common/advancedDetector.cpp
scummvm/branches/gsoc2008-vkeybd/common/advancedDetector.h
scummvm/branches/gsoc2008-vkeybd/common/array.h
scummvm/branches/gsoc2008-vkeybd/common/config-file.cpp
scummvm/branches/gsoc2008-vkeybd/common/config-manager.cpp
scummvm/branches/gsoc2008-vkeybd/common/config-manager.h
scummvm/branches/gsoc2008-vkeybd/common/events.h
scummvm/branches/gsoc2008-vkeybd/common/file.cpp
scummvm/branches/gsoc2008-vkeybd/common/file.h
scummvm/branches/gsoc2008-vkeybd/common/fs.cpp
scummvm/branches/gsoc2008-vkeybd/common/fs.h
scummvm/branches/gsoc2008-vkeybd/common/func.h
scummvm/branches/gsoc2008-vkeybd/common/hash-str.h
scummvm/branches/gsoc2008-vkeybd/common/hashmap.cpp
scummvm/branches/gsoc2008-vkeybd/common/hashmap.h
scummvm/branches/gsoc2008-vkeybd/common/iff_container.h
scummvm/branches/gsoc2008-vkeybd/common/keyboard.h
scummvm/branches/gsoc2008-vkeybd/common/md5.cpp
scummvm/branches/gsoc2008-vkeybd/common/md5.h
scummvm/branches/gsoc2008-vkeybd/common/memorypool.cpp
scummvm/branches/gsoc2008-vkeybd/common/memorypool.h
scummvm/branches/gsoc2008-vkeybd/common/module.mk
scummvm/branches/gsoc2008-vkeybd/common/ptr.h
scummvm/branches/gsoc2008-vkeybd/common/queue.h
scummvm/branches/gsoc2008-vkeybd/common/savefile.h
scummvm/branches/gsoc2008-vkeybd/common/str.cpp
scummvm/branches/gsoc2008-vkeybd/common/str.h
scummvm/branches/gsoc2008-vkeybd/common/stream.cpp
scummvm/branches/gsoc2008-vkeybd/common/stream.h
scummvm/branches/gsoc2008-vkeybd/common/system.cpp
scummvm/branches/gsoc2008-vkeybd/common/system.h
scummvm/branches/gsoc2008-vkeybd/common/unarj.cpp
scummvm/branches/gsoc2008-vkeybd/common/unarj.h
scummvm/branches/gsoc2008-vkeybd/common/unzip.cpp
scummvm/branches/gsoc2008-vkeybd/common/unzip.h
scummvm/branches/gsoc2008-vkeybd/common/util.cpp
scummvm/branches/gsoc2008-vkeybd/common/util.h
scummvm/branches/gsoc2008-vkeybd/common/xmlparser.cpp
scummvm/branches/gsoc2008-vkeybd/common/xmlparser.h
scummvm/branches/gsoc2008-vkeybd/configure
scummvm/branches/gsoc2008-vkeybd/dists/engine-data/drascula.dat
scummvm/branches/gsoc2008-vkeybd/dists/engine-data/kyra.dat
scummvm/branches/gsoc2008-vkeybd/dists/macosx/Info.plist.in
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/agi.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/agos.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/cine.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/cruise.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/drascula.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/gob.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/igor.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/kyra.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/lure.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/m4.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/made.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/parallaction.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/queen.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/saga.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/scumm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/scummvm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/sky.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/sword1.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/sword2.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/touche.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/agi.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/agos.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/cine.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/cruise.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/drascula.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/gob.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/igor.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/kyra.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/lure.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/m4.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/made.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/parallaction.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/queen.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/saga.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/scumm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/scummvm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/sky.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/sword1.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/sword2.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/touche.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/agi.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/agos.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/cine.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/cruise.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/drascula.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/gob.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/igor.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/kyra.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/lure.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/m4.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/made.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/parallaction.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/queen.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/saga.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/scumm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/scummvm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/sky.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/sword1.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/sword2.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/tinsel.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8/touche.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc8_to_msvc7_71.bat
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/agi.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/agos.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/cine.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/cruise.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/drascula.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/gob.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/igor.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/kyra.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/lure.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/m4.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/made.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/parallaction.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/queen.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/saga.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/scumm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/scummvm.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/sky.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/sword1.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/sword2.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/tinsel.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/touche.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/redhat/scummvm-tools.spec
scummvm/branches/gsoc2008-vkeybd/dists/scummvm.6
scummvm/branches/gsoc2008-vkeybd/dists/scummvm.rc
scummvm/branches/gsoc2008-vkeybd/dists/scummvm.rc.in
scummvm/branches/gsoc2008-vkeybd/dists/wii/READMII
scummvm/branches/gsoc2008-vkeybd/engines/agi/agi.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/agi.h
scummvm/branches/gsoc2008-vkeybd/engines/agi/cycle.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/loader_v3.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/op_cmd.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/op_test.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi.h
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi_common.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi_mickey.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi_mickey.h
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi_troll.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/preagi_winnie.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agi/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/agi/wagparser.h
scummvm/branches/gsoc2008-vkeybd/engines/agos/agos.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/agos.h
scummvm/branches/gsoc2008-vkeybd/engines/agos/animation.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/event.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/gfx.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/input.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/midi.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/midi.h
scummvm/branches/gsoc2008-vkeybd/engines/agos/oracle.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/res.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/script.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/script_e1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/script_e2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/script_s1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/script_ww.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/subroutine.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/verb.cpp
scummvm/branches/gsoc2008-vkeybd/engines/agos/window.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/anim.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/anim.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/bg.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/cine.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/cine.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/gfx.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/gfx.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/main_loop.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/main_loop.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/msg.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/object.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/object.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/pal.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/pal.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/part.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/part.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/prc.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/script_fw.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/script_os.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/texte.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/texte.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/unpack.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/unpack.h
scummvm/branches/gsoc2008-vkeybd/engines/cine/various.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cine/various.h
scummvm/branches/gsoc2008-vkeybd/engines/cruise/cruise_main.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/ctp.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/dataLoader.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/object.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/overlay.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/overlay.h
scummvm/branches/gsoc2008-vkeybd/engines/cruise/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/cruise/vars.h
scummvm/branches/gsoc2008-vkeybd/engines/cruise/volume.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/actors.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/animation.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/converse.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/drascula.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/drascula.h
scummvm/branches/gsoc2008-vkeybd/engines/drascula/graphics.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/interface.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/objects.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/palette.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/rooms.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/drascula/talk.cpp
scummvm/branches/gsoc2008-vkeybd/engines/engine.cpp
scummvm/branches/gsoc2008-vkeybd/engines/engine.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/dataio.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/dataio.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/draw.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/draw.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/game_v1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/game_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/gob.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/gob.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/goblin.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter_bargon.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter_v1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/map.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/map.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/module.mk
scummvm/branches/gsoc2008-vkeybd/engines/gob/mult.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/mult_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/palanim.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/parse.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/parse_v1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/parse_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/sound/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/util.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/video.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/videoplayer.cpp
scummvm/branches/gsoc2008-vkeybd/engines/igor/parts/part_22.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_hof.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_lok.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_mr.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/gui_v2.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_hof.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_lok.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_mr.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_v1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_v1.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/kyra_v2.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/module.mk
scummvm/branches/gsoc2008-vkeybd/engines/kyra/resource.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/resource.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/saveload_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/saveload_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/saveload_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/scene_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/scene_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_lok.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_v2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_v2.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script_tim.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/script_tim.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sequences_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sequences_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sound_adlib.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sound_towns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/sprites.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/staticres.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/text.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/text_hof.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/text_lok.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/text_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/timer_mr.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/vqa.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/vqa.h
scummvm/branches/gsoc2008-vkeybd/engines/lure/animseq.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/events.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/events.h
scummvm/branches/gsoc2008-vkeybd/engines/lure/fights.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/game.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/game.h
scummvm/branches/gsoc2008-vkeybd/engines/lure/intro.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/lure.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/lure.h
scummvm/branches/gsoc2008-vkeybd/engines/lure/menu.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/scripts.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/lure/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/lure/surface.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/converse.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/globals.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/m4.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/mads_anim.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/midi.cpp
scummvm/branches/gsoc2008-vkeybd/engines/m4/resource.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/music.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/pmvplayer.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/redreader.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/screen.cpp
scummvm/branches/gsoc2008-vkeybd/engines/made/screenfx.cpp
scummvm/branches/gsoc2008-vkeybd/engines/metaengine.h
scummvm/branches/gsoc2008-vkeybd/engines/module.mk
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/balloons.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/callables_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/callables_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/debug.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/dialogue.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/disk.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/disk_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/disk_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/exec.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/exec_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/exec_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/font.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/gfxbase.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/graphics.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/graphics.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/gui_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/gui_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/input.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/input.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/objects.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/objects.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parallaction.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parallaction.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parallaction_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parallaction_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parser.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parser.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parser_br.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/parser_ns.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/staticres.cpp
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/walk.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/input.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/journal.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/logic.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/midiadlib.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/queen.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/queen.h
scummvm/branches/gsoc2008-vkeybd/engines/queen/resource.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/queen/talk.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/animation.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/displayinfo.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/input.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/interface.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/interface.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/introproc_ihnm.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/itedata.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/itedata.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/music.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/music.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/rscfile.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/saga.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/saga.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/scene.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/sfuncs.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/sndres.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/sndres.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/saga/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/saga/sprite.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/actor.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/actor.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/akos.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/boxes.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/charset-fontdata.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/charset.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/charset.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/detection_tables.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/dialogs.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/dialogs.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/file.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/file.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/file_nes.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/file_nes.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/gfx.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/gfx.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/gfxARM.s
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/cup_player_he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/intern_he.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v100he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v60he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v70he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v71he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v72he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v80he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/he/script_v90he.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/input.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/insane/insane.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/insane/insane.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/insane/insane_iact.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/module.mk
scummvm/branches/gsoc2008-vkeybd/engines/scumm/object.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/resource.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/resource_v4.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/saveload.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/script.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/script_v5.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/script_v6.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/script_v8.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/scumm-md5.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/scumm.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/scumm.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/channel.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/imuse_channel.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/saud_channel.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/smush_player.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/smush_player.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/string.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/control.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/intro.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/intro.h
scummvm/branches/gsoc2008-vkeybd/engines/sky/logic.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/mouse.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/sky.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/sky.h
scummvm/branches/gsoc2008-vkeybd/engines/sky/skydefs.h
scummvm/branches/gsoc2008-vkeybd/engines/sky/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sky/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/sword1/animation.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/control.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/control.h
scummvm/branches/gsoc2008-vkeybd/engines/sword1/credits.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/logic.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/music.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/sword1.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword1/sword1.h
scummvm/branches/gsoc2008-vkeybd/engines/sword2/animation.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/controls.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/function.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/palette.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/resman.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/screen.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/sword2/startup.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/sword2.cpp
scummvm/branches/gsoc2008-vkeybd/engines/sword2/sword2.h
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/config.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/config.h
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/cursor.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/dw.h
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/inventory.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/music.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/music.h
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/scn.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/sound.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/sound.h
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/tinlib.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/tinsel.cpp
scummvm/branches/gsoc2008-vkeybd/engines/tinsel/tinsel.h
scummvm/branches/gsoc2008-vkeybd/engines/touche/detection.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/graphics.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/graphics.h
scummvm/branches/gsoc2008-vkeybd/engines/touche/menu.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/opcodes.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/saveload.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/staticres.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/touche.cpp
scummvm/branches/gsoc2008-vkeybd/engines/touche/touche.h
scummvm/branches/gsoc2008-vkeybd/graphics/dxa_player.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/dxa_player.h
scummvm/branches/gsoc2008-vkeybd/graphics/font.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/iff.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/imageman.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/imageman.h
scummvm/branches/gsoc2008-vkeybd/graphics/module.mk
scummvm/branches/gsoc2008-vkeybd/graphics/scaler/hq2x_i386.asm
scummvm/branches/gsoc2008-vkeybd/graphics/scaler/hq3x_i386.asm
scummvm/branches/gsoc2008-vkeybd/graphics/scaler.h
scummvm/branches/gsoc2008-vkeybd/graphics/surface.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/surface.h
scummvm/branches/gsoc2008-vkeybd/gui/ThemeModern.cpp
scummvm/branches/gsoc2008-vkeybd/gui/ThemeModern.h
scummvm/branches/gsoc2008-vkeybd/gui/about.cpp
scummvm/branches/gsoc2008-vkeybd/gui/browser.cpp
scummvm/branches/gsoc2008-vkeybd/gui/browser.h
scummvm/branches/gsoc2008-vkeybd/gui/credits.h
scummvm/branches/gsoc2008-vkeybd/gui/launcher.cpp
scummvm/branches/gsoc2008-vkeybd/gui/launcher.h
scummvm/branches/gsoc2008-vkeybd/gui/massadd.cpp
scummvm/branches/gsoc2008-vkeybd/gui/massadd.h
scummvm/branches/gsoc2008-vkeybd/gui/newgui.cpp
scummvm/branches/gsoc2008-vkeybd/gui/options.cpp
scummvm/branches/gsoc2008-vkeybd/gui/theme-config.cpp
scummvm/branches/gsoc2008-vkeybd/gui/theme.cpp
scummvm/branches/gsoc2008-vkeybd/gui/theme.h
scummvm/branches/gsoc2008-vkeybd/gui/themebrowser.cpp
scummvm/branches/gsoc2008-vkeybd/gui/themebrowser.h
scummvm/branches/gsoc2008-vkeybd/gui/themes/classic080.ini
scummvm/branches/gsoc2008-vkeybd/gui/themes/modern.ini
scummvm/branches/gsoc2008-vkeybd/gui/themes/modern.zip
scummvm/branches/gsoc2008-vkeybd/gui/widget.cpp
scummvm/branches/gsoc2008-vkeybd/ports.mk
scummvm/branches/gsoc2008-vkeybd/sound/adpcm.cpp
scummvm/branches/gsoc2008-vkeybd/sound/audiocd.cpp
scummvm/branches/gsoc2008-vkeybd/sound/flac.cpp
scummvm/branches/gsoc2008-vkeybd/sound/flac.h
scummvm/branches/gsoc2008-vkeybd/sound/mididrv.cpp
scummvm/branches/gsoc2008-vkeybd/sound/mididrv.h
scummvm/branches/gsoc2008-vkeybd/sound/midiparser.h
scummvm/branches/gsoc2008-vkeybd/sound/midiparser_xmidi.cpp
scummvm/branches/gsoc2008-vkeybd/sound/mixer.cpp
scummvm/branches/gsoc2008-vkeybd/sound/mods/infogrames.cpp
scummvm/branches/gsoc2008-vkeybd/sound/mods/infogrames.h
scummvm/branches/gsoc2008-vkeybd/sound/mp3.cpp
scummvm/branches/gsoc2008-vkeybd/sound/mp3.h
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32/mt32_file.cpp
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32/mt32_file.h
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32/partial.cpp
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32/synth.cpp
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32/tables.cpp
scummvm/branches/gsoc2008-vkeybd/sound/softsynth/mt32.cpp
scummvm/branches/gsoc2008-vkeybd/sound/vorbis.cpp
scummvm/branches/gsoc2008-vkeybd/sound/vorbis.h
scummvm/branches/gsoc2008-vkeybd/sound/wave.cpp
scummvm/branches/gsoc2008-vkeybd/test/common/bufferedreadstream.h
scummvm/branches/gsoc2008-vkeybd/test/common/bufferedseekablereadstream.h
scummvm/branches/gsoc2008-vkeybd/test/common/hashmap.h
scummvm/branches/gsoc2008-vkeybd/test/common/seekablesubreadstream.h
scummvm/branches/gsoc2008-vkeybd/test/common/str.h
scummvm/branches/gsoc2008-vkeybd/test/common/subreadstream.h
scummvm/branches/gsoc2008-vkeybd/tools/create_drascula/create_drascula.cpp
scummvm/branches/gsoc2008-vkeybd/tools/create_drascula/create_drascula.h
scummvm/branches/gsoc2008-vkeybd/tools/create_drascula/staticdata.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/create_kyradat.cpp
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/create_kyradat.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/hof_cd.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/hof_demo.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/hof_floppy.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/misc.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/pak.h
scummvm/branches/gsoc2008-vkeybd/tools/credits.pl
scummvm/branches/gsoc2008-vkeybd/tools/md5table.c
scummvm/branches/gsoc2008-vkeybd/tools/scumm-md5.txt
Added Paths:
-----------
scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.h
scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbianstream.cpp
scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbianstream.h
scummvm/branches/gsoc2008-vkeybd/backends/midi/stmidi.cpp
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/dist/
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/dist/readme_ds.txt
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/logog.bmp
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/vsnprintf.h
scummvm/branches/gsoc2008-vkeybd/common/archive.cpp
scummvm/branches/gsoc2008-vkeybd/common/archive.h
scummvm/branches/gsoc2008-vkeybd/common/zlib.cpp
scummvm/branches/gsoc2008-vkeybd/common/zlib.h
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/tinsel.vcproj
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/tinsel.vcproj
scummvm/branches/gsoc2008-vkeybd/engines/dialogs.cpp
scummvm/branches/gsoc2008-vkeybd/engines/dialogs.h
scummvm/branches/gsoc2008-vkeybd/engines/game.cpp
scummvm/branches/gsoc2008-vkeybd/engines/game.h
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter_v5.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/inter_v6.cpp
scummvm/branches/gsoc2008-vkeybd/engines/gob/video_v6.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/lol.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/lol.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/resource_intern.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/resource_intern.h
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_lol.cpp
scummvm/branches/gsoc2008-vkeybd/engines/kyra/screen_lol.h
scummvm/branches/gsoc2008-vkeybd/engines/parallaction/saveload.h
scummvm/branches/gsoc2008-vkeybd/graphics/scaler/thumbnail_intern.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/thumbnail.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/thumbnail.h
scummvm/branches/gsoc2008-vkeybd/test/common/func.h
scummvm/branches/gsoc2008-vkeybd/test/common/queue.h
scummvm/branches/gsoc2008-vkeybd/test/common/stream.h
scummvm/branches/gsoc2008-vkeybd/tools/create_kyradat/lol_demo.h
Removed Paths:
-------------
scummvm/branches/gsoc2008-vkeybd/backends/platform/ds/arm9/dist/readme_ds.txt
scummvm/branches/gsoc2008-vkeybd/backends/platform/symbian/src/main_features.inl
scummvm/branches/gsoc2008-vkeybd/base/game.cpp
scummvm/branches/gsoc2008-vkeybd/base/game.h
scummvm/branches/gsoc2008-vkeybd/common/zlib.cpp
scummvm/branches/gsoc2008-vkeybd/common/zlib.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/chunk.cpp
scummvm/branches/gsoc2008-vkeybd/engines/scumm/smush/chunk.h
scummvm/branches/gsoc2008-vkeybd/engines/scumm/thumbnail.cpp
scummvm/branches/gsoc2008-vkeybd/graphics/scaler/thumbnail.cpp
Property Changed:
----------------
scummvm/branches/gsoc2008-vkeybd/
scummvm/branches/gsoc2008-vkeybd/dists/
scummvm/branches/gsoc2008-vkeybd/dists/macosx/
scummvm/branches/gsoc2008-vkeybd/dists/msvc7/
scummvm/branches/gsoc2008-vkeybd/dists/msvc71/
scummvm/branches/gsoc2008-vkeybd/dists/msvc9/
scummvm/branches/gsoc2008-vkeybd/test/
Property changes on: scummvm/branches/gsoc2008-vkeybd
___________________________________________________________________
Modified: svn:ignore
- config.log
scummvm
scummvm-static
config.h
config.mk
.gdb_history
dumps
Credits.rtf
*.mshark
+ config.log
scummvm
scummvm-static
config.h
config.mk
.gdb_history
dumps
Credits.rtf
*.mshark
*.dSYM
Modified: svnmerge-integrated
- /scummvm/branches/gsoc2008-gui:1-31703 /scummvm/branches/gsoc2008-rtl:1-32741 /scummvm/branches/gsoc2008-tfmx:1-31765 /scummvm/trunk:1-33448
+ /scummvm/branches/gsoc2008-gui:1-31703 /scummvm/branches/gsoc2008-rtl:1-32741 /scummvm/branches/gsoc2008-tfmx:1-31765 /scummvm/trunk:1-34651
Modified: scummvm/branches/gsoc2008-vkeybd/AUTHORS
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/AUTHORS 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/AUTHORS 2008-09-26 21:53:08 UTC (rev 34654)
@@ -6,6 +6,11 @@
Max Horn
Eugene Sandulenko
+ Retired Project Leaders
+ -----------------------
+ Vincent Hamm - ScummVM co-founder, Original Cruise/CinE author
+ Ludvig Strigeus - Original ScummVM and SimonVM author
+
Engine Teams
------------
SCUMM:
@@ -134,7 +139,6 @@
Kostas Nakos
PlayStation 2:
- Robert Goeffringmann
Max Lingua
PSP (PlayStation Portable):
@@ -163,9 +167,12 @@
Johannes Schickel
Miscellaneous:
- David Corrales-Lopez - Filesystem access improvements
+ David Corrales-Lopez - Filesystem access improvements (GSoC 2007
+ task)
Jerome Fisher - MT-32 emulator
Jochen Hoenicke - Speaker & PCjr sound support, Adlib work
+ Chris Page - Return to launcher, savestate improvements,
+ leak fixes, ... (GSoC 2008 task)
Robin Watts - ARM assembly routines for nice speedups on
several ports; improvements to the sound mixer
@@ -184,13 +191,14 @@
Nicolas Bacca - Former WinCE porter
Ralph Brorsen - Help with GUI implementation
Jamieson Christian - iMUSE, MIDI, all things musical
+ Hans-Jorg Frieden - Former AmigaOS 4 packager
+ Robert Goeffringmann - Original PS2 porter
Ruediger Hanke - Port: MorphOS
- Vincent Hamm - ScummVM co-founder, Original Cruise/CinE author
Felix Jakschitsch - Zak256 reverse engineering
Mutwin Kraus - Original MacOS porter
Peter Moraliyski - Port: GP32
+ Juha Niemimaki - Formaer AmigaOS 4 packager
Jeremy Newman - Former webmaster
- Ludvig Strigeus - Original ScummVM and SimonVM author
Lionel Ulmer - Port: X11
Won Star - Former GP32 porter
@@ -199,9 +207,7 @@
Packages
--------
AmigaOS 4:
- Hans-Jorg Frieden
Hubert Maier
- Juha Niemimaki
Atari/FreeMiNT:
Keith Scroggins
@@ -260,6 +266,7 @@
Stuart Caie - Decoders for Simon 1 Amiga data files
Paolo Costabel - PSP port contributions
Thierry Crozat - Support for Broken Sword 1 Macintosh version
+ Martin Doucha - CinE engine objectification
Thomas Fach-Pedersen - ProTracker module player
Benjamin Haisch - Heavily improved de-/encoder for DXA videos
Janne Huttunen - V3 actor mask support, Dig/FT SMUSH audio
@@ -289,15 +296,18 @@
Sander Buskens - For his work on the initial reversing of Monkey2
Canadacow - For the original MT-32 emulator
Kevin Carnes - For Scumm16, the basis of ScummVM's older gfx codecs
+ Curt Coder - For the original TrollVM (preAGI) code
Patrick Combet - For the original Gobliiins ADL player
Ivan Dubrov - For contributing the initial version of the Gobliiins
engine
+ Till Kresslein - For design of modern ScummVM GUI
Jezar - For his freeverb filter implementation
Jim Leiterman - Various info on his FM-TOWNS/Marty SCUMM ports
lloyd - For deep tech details about C64 Zak & MM
Sarien Team - Original AGI engine code
Jimmi Thogersen - For ScummRev, and much obscure code/documentation
Tristan - For additional work on the original MT-32 emulator
+ James Woodcock - Soundtrack enhancements
Tony Warriner and everyone at Revolution Software Ltd. for sharing with us
the source of some of their brilliant games, allowing us to release
Modified: scummvm/branches/gsoc2008-vkeybd/COPYRIGHT
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/COPYRIGHT 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/COPYRIGHT 2008-09-26 21:53:08 UTC (rev 34654)
@@ -60,6 +60,7 @@
Johannes Schickel
Won Star
Ludvig Strigeus
+Keith Scroggins
David Symonds
Jordi Vilalta
Robin Watts
@@ -74,23 +75,34 @@
Laura Abbott "sageofminerva"
Vikram Aggarwal "youngelf"
+the rara avis "theraraavis"
Dieter Baron "dillo"
Alban Bedel "albeu"
Bodo Bellut "bellut"
+Bramvandijk "bramvandijk"
Andreas Bierfert "awjb"
Elio Blanca "eblanca76"
+Bastien Bouclet "bgk"
David Breakey "dbreakey"
Robert Buchholz "prendi"
-Rainer Canavan
+Rainer Canavan "canavan"
Mathieu Carot "yokna"
Stefano Ceccherini "jackburton"
Travis S Coady "theealien"
Josh Coalson "jcoalson"
Thomas Combeleran "hibernatus"
+Kees Cook "keescook"
Carlos Corbacho "cathectic"
Roberto Costa "fiix76"
+Thiery Crozat "criezy"
+dc france "erwan2004"
+dewt "mncl"
+Martin Doucha "next_ghost"
Michael Drueing "doc_wagon"
+dubsdj
Matthew Duggan "stauff1"
+Olivier Duverne "richiefs"
+Andrei Dziahel "develop7"
John Eckerdal "johneck"
Thomas Fach-Pedersen "madm00se"
Florent "flobo"
@@ -109,6 +121,7 @@
Alexander Holler "holler"
Falk Hueffner "mellum"
Casey Hutchinson "nnooiissee"
+j0tt
Gregor Jasny "gjasny"
Jellby "jellby"
Joerg "macdrega"
@@ -122,38 +135,49 @@
Jay Lanagan "r0ni"
Norbert Lange "nolange"
Manuel Lauss "mlau2"
+Rolf Leggewie "leggewie"
Duncan Lock "dflock"
Mark Lodato "itsr0y"
Fridvin Logi "phillip_j_fry"
+Lostech "lostech"
Georg Lukas "ge0rg"
Dmitry Marakasov "amdmi3"
-Markus "meist3r"
Connor McLeod "mcleod2032"
Mickey McMurray "metafox"
Vladimir Menshakov "megath"
+Adam Metcalf "gamblore"
Frank Meyering "frank_m24"
Gael Le Migno "kilobug"
Alyssa Anne Milburn "fuzzie"
Andy Molloy "maloi"
+Sean Murrau "lightcast"
Armin Mueller "arm_in"
Andrea Musuruane "musuruan"
KO Myung-Hun "lvzuufx"
+Markus Napp "meist3r"
Peter Naulls "pnaulls"
Christian Neumair "mannythegnome"
Nicos "anarxia"
Juha Niemimaki "capehill"
Markus Niemisto "niemisto"
+ole
Chris Paras "paras_rasmatazz"
Aubin Paul "outlyer"
+Vincent Pelletier "subdino"
+phi1
+Pix2 "pix2"
Carsten Pohl "carstenpohl"
Markus Pyykko "mankeli"
Richard "trinity78"
Felix Riemann "kirschsaft"
+Thomas Richter "thorfdbg"
Timo Roehling "t1m0"
Andreas Roever "roever"
Jonathan Rogers "jonner"
Marek Roth "logicdeluxe"
+Uwe Ryssel "uweryssel"
Simon Sawatzki "simsaw"
+Scarlatti "escarlate"
Daniel Schepler "dschepler"
Florian Schmitt "fatpenguin"
Mark Schreiber "mark7"
@@ -161,12 +185,17 @@
Jean-Yves Simon "lethalwp"
Andrej Sinicyn "andrej4000"
Andre Souza "luke_br"
+spookypeanut "spookypeanut"
Steve Stavropoulos "isnothere"
Daniel Steinberger "amorphousshape"
Sven Strothoff "dataslayer"
Andrea Suatoni "mrhandler"
+tbcarey
+Tim "tipabu"
+Tobigun "tobigun"
Luigi Toscano "ltosky"
Xavier Trochu "xtrochu"
+Michal Tulacek "tutchek"
Michael Udaltsov "cccp99"
Kristof Vansant "lupusbe"
Tim Walters "realmz"
@@ -174,16 +203,6 @@
Eric A. Welsh "eweish42"
Yudhi Widyatama "yudhi97"
Robert Wohlrab "moshroum"
+Xanathar "xanathar"
+Grant Yeager "glo_kidd"
Benjamin W. Zale "junior_aepi"
-the rara avis "theraraavis"
-dewt "mncl"
-dubsdj
-exo "exofreeze"
-dc france "erwan2004"
-j0tt
-glo kidd "glo_kidd"
-ole
-phi1
-spookypeanut "spookypeanut"
-tbcarey
-Tim "tipabu"
Modified: scummvm/branches/gsoc2008-vkeybd/NEWS
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/NEWS 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/NEWS 2008-09-26 21:53:08 UTC (rev 34654)
@@ -2,10 +2,22 @@
http://scummvm.sourceforge.net/daily/ChangeLog
0.13.0 (????-??-??)
+ General:
+ - Added MIDI driver for Atari ST / FreeMint.
+ - Added a 'Load' button to the Launcher (not supported by all engines).
+ - Added a new global main menu (GMM) dialog usable from all engines.
+ - Added the ability to return to the launcher from running games (via the GMM).
+
New Games:
- Added support for Discworld.
-0.12.0 (????-??-??)
+ KYRA:
+ - Added support for Auto-save feature.
+
+ SCUMM:
+ - Fixed a long-time bug which caused talkspeed and talkdelay to be mixed up.
+
+0.12.0 (2008-08-31)
New Games:
- Added support for The Legend of Kyrandia: Book Two: Hand of Fate.
- Added support for The Legend of Kyrandia: Book Three: Malcolm's Revenge.
@@ -30,6 +42,10 @@
Simon the Sorcerer 1.
- Fixed palette issues in Amiga versions of Simon the Sorcerer 1.
+ Queen:
+ - Speech is played at the correct sample rate. (It used to be pitched a bit
+ too low.)
+
SCUMM:
- Rewrote parts of Digital iMUSE, fixing some bugs.
- Rewrote the internal timer code, fixing some speed issues in e.g. COMI.
Modified: scummvm/branches/gsoc2008-vkeybd/README
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/README 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/README 2008-09-26 21:53:08 UTC (rev 34654)
@@ -39,10 +39,12 @@
* 5.1 Command Line Options
* 5.2 Language Options
* 5.3 Graphics Filters
- * 5.4 Hotkeys
+ * 5.4 Global Menu
+ * 5.5 Hotkeys
6.0) Savegames
* 6.1 Autosaves
* 6.2 Converting savegames
+ * 6.3 Viewing/Loading savegames from the command line
7.0) Music and Sound
* 7.1 Adlib emulation
* 7.2 FluidSynth MIDI emulation
@@ -182,17 +184,23 @@
Gobliiins [gob1]
Gobliins 2 [gob2]
Goblins 3 [gob3]
+ Lost in Time [lostintime]
+ The Bizarre Adventures of Woodruff
+ and the Schnibble [woodruff]
Ween: The Prophecy [ween]
Other Games:
Beneath a Steel Sky [sky]
Broken Sword 1: The Shadow of the Templars [sword1]
Broken Sword 2: The Smoking Mirror [sword2]
+ Drascula: The Vampire Strikes Back [drascula]
Flight of the Amazon Queen [queen]
Future Wars [fw]
Inherit the Earth: Quest for the Orb [ite]
Nippon Safes Inc. [nippon]
The Legend of Kyrandia [kyra1]
+ The Legend of Kyrandia: The Hand of Fate [kyra2]
+ The Legend of Kyrandia: Malcolm's Revenge [kyra3]
Touche: The Adventures of the Fifth
Musketeer [touche]
@@ -781,6 +789,7 @@
-h, --help Display a brief help text and exit
-z, --list-games Display list of supported games and exit
-t, --list-targets Display list of configured targets and exit
+ --list-saves=TARGET Display a list of savegames for the game (TARGET) specified
-c, --config=CONFIG Use alternate configuration file
-p, --path=PATH Path to where the game is installed
@@ -968,7 +977,38 @@
will be scaled to 1280x960 and 1920x1440.
-5.4) Hot Keys:
+5.4) Global Menu:
+---- ------------
+
+The Global Menu is a general menu which is available to all of the game engines
+by pressing F6. From this menu there are the following buttons: Resume,
+Options, About, Return to Launcher, and Quit. Selecting 'Options' will display
+a dialog where basic audio settings, such as volume levels, can be adjusted.
+Selecting 'Return to Launcher' will close the current game and return the user
+back to the ScummVM Launcher, where another game may be selected to play.
+
+Note: Returning to the Launcher is not supported by all of the engines,
+ and the button will be disabled in the Global Menu if it is not supported.
+
+Engines which currently support Returning to the Launcher are:
+
+ AGI
+ AGOS
+ CINE
+ GOB
+ KYRA
+ LURE
+ PARALLACTION
+ QUEEN
+ SAGA
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TOUCHE
+
+
+5.5) Hot Keys:
---- ---------
TODO
TODO: Rework this section to clearly state which hotkeys are implemented in *all*
@@ -982,6 +1022,7 @@
other games.
Common:
+ F6 - Displays the Global Menu
Cmd-q - Quit (Mac OS X)
Ctrl-q - Quit (other unices including Linux)
Ctrl-z OR Alt-x - Quit (other platforms)
@@ -1138,45 +1179,93 @@
6.1) Autosaves:
---- ----------
-For some games (namely "Beneath a Steel Sky", "Flight of the Amazon
-Queen" and all SCUMM games), ScummVM will by default automatically
-save the current state every five minutes (adjustable via the
-"autosave_period" config setting). For the SCUMM engine, it will save
-in Slot 0. This savestate can then be loaded again via Ctrl-0, or the
-F5 menu.
+For some games, (namely "Beneath a Steel Sky", "Flight of the Amazon Queen",
+all AGI games, and all SCUMM games), ScummVM will by default automatically
+save the current state every five minutes (adjustable via the "autosave_period"
+config setting). For the AGI and SCUMM engines, it will save in Slot 0. For the
+SCUMM engine, this savestate can then be loaded again via Ctrl-0, or the F5
+menu.
6.2) Converting Savegames:
----- ----------
-Using savegames from original versions, isn't supported by all game engines. Only
-the following games, can use savedgames from their original versions.
+---- ---------------------
+Using savegames from original versions, isn't supported by all game engines.
+Only the following games, can use savegames from their original versions.
Elvira 1
- - Add 8 bytes (savedgame name) to the start of the savegame file
- - Rename the savedgame to 'elvira1.xxx'
+ - Add 8 bytes (savegame name) to the start of the savegame file
+ - Rename the savegame to 'elvira1.xxx'
Elvira 2
- - Add 8 bytes (savedgame name) to the start of the savegame file
- - Rename the savedgame to 'elvira2-pc.xxx' (DOS version) or
+ - Add 8 bytes (savegame name) to the start of the savegame file
+ - Rename the savegame to 'elvira2-pc.xxx' (DOS version) or
'elvira2.xxx' (Other versions)
Waxworks
- - Add 8 bytes (savedgame name) to the start of the savegame file
- - Rename the savedgame to 'waxworks-pc.xxx' (DOS version) or
+ - Add 8 bytes (savegame name) to the start of the savegame file
+ - Rename the savegame to 'waxworks-pc.xxx' (DOS version) or
'waxworks.xxx' (Other versions)
Simon the Sorcerer 1
- - Rename the savedgame to 'simon1.xxx'
+ - Rename the savegame to 'simon1.xxx'
Simon the Sorcerer 1
- - Rename the savedgame to 'simon2.xxx'
+ - Rename the savegame to 'simon2.xxx'
The Feeble Files
- - Rename the savedgame to 'feeble.xxx'
+ - Rename the savegame to 'feeble.xxx'
Where 'xxx' is exact the saved game slot (ie 001) under ScummVM
+6.3) Viewing/Loading savegames from the command line:
+---- ------------------------------------------------
+
+--list-saves:
+
+ This switch may be used to display a list of the current savegames
+ of the specified target game and their corresponding save slots.
+
+ Usage: --list-saves=[TARGET], where [TARGET] is the target game.
+
+ Engines which currently support --list-saves are:
+
+ AGI
+ AGOS
+ CINE
+ KYRA
+ LURE
+ PARALLACTION
+ QUEEN
+ SAGA
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TOUCHE
+
+--save-slot/-x:
+
+ This switch may be used to load a savegame directly from the command line.
+
+ Usage: --save-slot[SLOT] or -x[SLOT], where [SLOT] is the save slot number.
+
+ Engines which currently support --save-slot/-x are:
+
+ AGI
+ CINE
+ KYRA
+ LURE
+ PARALLACTION
+ QUEEN
+ SAGA
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TOUCHE
+
+
7.0) Music and Sound:
---- ----------------
@@ -1322,34 +1411,39 @@
7.6.1) Playing sound with ALSA sequencer: [UNIX ONLY]
------ ----------------------------------
-If you have installed the ALSA driver with the sequencer support, then
-set the environment variable SCUMMVM_PORT or the config file parameter
-alsa_port to your sequencer port. The default is "65:0".
+If you have installed the ALSA driver with the sequencer support, then set the
+environment variable SCUMMVM_PORT or the config file parameter alsa_port to
+your sequencer port. The default is to try both "65:0" and "17:0".
Here is a little howto on how to use the ALSA sequencer with your soundcard.
In all cases, to have a list of all the sequencer ports you have, try the
command "aconnect -o -l". This should give output similar to:
-client 64: 'External MIDI 0' [type=kernel]
- 0 'MIDI 0-0 '
-client 65: 'Emu10k1 WaveTable' [type=kernel]
+
+client 14: 'Midi Through' [type=kernel]
+ 0 'Midi Through Port-0'
+client 16: 'SBLive! Value [CT4832]' [type=kernel]
+ 0 'EMU10K1 MPU-401 (UART)'
+client 17: 'Emu10k1 WaveTable' [type=kernel]
0 'Emu10k1 Port 0 '
1 'Emu10k1 Port 1 '
2 'Emu10k1 Port 2 '
3 'Emu10k1 Port 3 '
-client 128: 'Client-128' [type=user]
+client 128: 'TiMidity' [type=user]
0 'TiMidity port 0 '
1 'TiMidity port 1 '
+ 2 'TiMidity port 2 '
+ 3 'TiMidity port 3 '
-This means the external MIDI output of the sound card is located on the
-port 64:0, four WaveTable MIDI outputs in 65:0, 65:1, 65:2
-and 65:3, and two TiMidity ports, located at 128:0 and 128:1.
+The most important bit here is that there are four WaveTable MIDI outputs
+located at 17:0, 17:1, 17:2 and 17:3, and four TiMidity ports located at 128:0,
+128:1, 128:2 and 128:3.
If you have a FM-chip on your card, like the SB16, then you have to load
the SoundFonts using the sbiload software. Example:
- sbiload -p 65:0 /etc/std.o3 /etc/drums.o3
+ sbiload -p 17:0 /etc/std.o3 /etc/drums.o3
If you have a WaveTable capable sound card, you have to load a sbk or sf2
-SoundFont using the sfxload software. Example:
+SoundFont using the sfxload or asfxload software. Example:
sfxload /path/to/8mbgmsfx.sf2
If you don't have a MIDI capable soundcard, there are two options: FluidSynth
Modified: scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -96,7 +96,8 @@
_boss(boss),
_buttonState(0),
_modifierState(0),
- _shouldQuit(false) {
+ _shouldQuit(false),
+ _shouldRTL(false) {
assert(_boss);
@@ -211,6 +212,9 @@
_boss->unlockMutex(_timeMutex);
_boss->unlockMutex(_recorderMutex);
+ if (!artificialEventQueue.empty())
+ artificialEventQueue.clear();
+
if (_playbackFile != NULL) {
delete _playbackFile;
}
@@ -372,10 +376,8 @@
if (!_artificialEventQueue.empty()) {
event = _artificialEventQueue.pop();
result = true;
- }
-
- // poll for event from backend
- if (!result) {
+ } else {
+ // poll for event from backend
result = _boss->pollEvent(event);
if (result) {
// send key press events to keymapper
@@ -415,7 +417,6 @@
switch (event.type) {
case Common::EVENT_KEYDOWN:
_modifierState = event.kbd.flags;
-
// init continuous event stream
// not done on PalmOS because keyboard is emulated and keyup is not generated
#if !defined(PALMOS_MODE)
@@ -424,8 +425,39 @@
_currentKeyDown.flags = event.kbd.flags;
_keyRepeatTime = time + kKeyRepeatInitialDelay;
#endif
+ // Global Main Menu
+ // FIXME: F6 is not the best trigger, it conflicts with some games!!!
+ if (event.kbd.keycode == Common::KEYCODE_F6) {
+ if (g_engine && !g_engine->isPaused()) {
+ Common::Event menuEvent;
+ menuEvent.type = Common::EVENT_MAINMENU;
+
+ // FIXME: GSoC RTL branch passes the F6 key event to the
+ // engine, and also enqueues a EVENT_MAINMENU. For now,
+ // we just drop the key event and return an EVENT_MAINMENU
+ // instead. This way, we don't have to add special cases
+ // to engines (like it was the case for LURE in the RTL branch).
+ //
+ // However, this has other consequences, possibly negative ones.
+ // Like, what happens with key repeat for the trigger key?
+
+ //pushEvent(menuEvent);
+ event = menuEvent;
- if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) {
+ // FIXME: Since now we do not push another MAINMENU event onto
+ // our event stack, the GMM would never open, so we have to do
+ // that here. Of course when the engine would handle MAINMENU
+ // as an event now and open up the GMM itself it would open the
+ // menu twice.
+ if (g_engine && !g_engine->isPaused())
+ g_engine->mainMenuDialog();
+
+ if (_shouldQuit)
+ event.type = Common::EVENT_QUIT;
+ else if (_shouldRTL)
+ event.type = Common::EVENT_RTL;
+ }
+ } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) {
if (_vk->isDisplaying()) {
_vk->close(true);
} else {
@@ -435,7 +467,7 @@
if (!isPaused) g_engine->pauseEngine(false);
result = false;
}
- } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) {
+ } else if (event.kbd.keycode == Common::KEYCODE_F8 && event.kbd.flags == 0) {
if (!_remap) {
_remap = true;
Common::RemapDialog _remapDialog;
@@ -446,8 +478,8 @@
_remap = false;
}
}
+ break;
- break;
case Common::EVENT_KEYUP:
_modifierState = event.kbd.flags;
if (event.kbd.keycode == _currentKeyDown.keycode) {
@@ -464,6 +496,7 @@
_mousePos = event.mouse;
_buttonState |= LBUTTON;
break;
+
case Common::EVENT_LBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~LBUTTON;
@@ -473,11 +506,26 @@
_mousePos = event.mouse;
_buttonState |= RBUTTON;
break;
+
case Common::EVENT_RBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~RBUTTON;
break;
+ case Common::EVENT_MAINMENU:
+ if (g_engine && !g_engine->isPaused())
+ g_engine->mainMenuDialog();
+
+ if (_shouldQuit)
+ event.type = Common::EVENT_QUIT;
+ else if (_shouldRTL)
+ event.type = Common::EVENT_RTL;
+ break;
+
+ case Common::EVENT_RTL:
+ _shouldRTL = true;
+ break;
+
case Common::EVENT_QUIT:
if (ConfMan.getBool("confirm_exit")) {
if (g_engine)
@@ -488,6 +536,7 @@
g_engine->pauseEngine(false);
} else
_shouldQuit = true;
+
break;
default:
@@ -511,7 +560,13 @@
}
void DefaultEventManager::pushEvent(const Common::Event &event) {
- _artificialEventQueue.push(event);
+
+ // If already received an EVENT_QUIT, don't add another one
+ if (event.type == Common::EVENT_QUIT) {
+ if (!_shouldQuit)
+ artificialEventQueue.push(event);
+ } else
+ artificialEventQueue.push(event);
}
#endif // !defined(DISABLE_DEFAULT_EVENTMANAGER)
Modified: scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/events/default/default-events.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -60,6 +60,7 @@
int _buttonState;
int _modifierState;
bool _shouldQuit;
+ bool _shouldRTL;
class RandomSourceRecord {
public:
@@ -128,6 +129,9 @@
virtual int getButtonState() const { return _buttonState; }
virtual int getModifierState() const { return _modifierState; }
virtual int shouldQuit() const { return _shouldQuit; }
+ virtual int shouldRTL() const { return _shouldRTL; }
+ virtual void resetRTL() { _shouldRTL = false; }
+
virtual Common::Keymapper *getKeymapper() { return _keymapper; }
};
Copied: scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.cpp (from rev 34649, scummvm/trunk/backends/fs/abstract-fs.cpp)
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.cpp (rev 0)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -0,0 +1,40 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#include "backends/fs/abstract-fs.h"
+
+const char *AbstractFilesystemNode::lastPathComponent(const Common::String &str, const char sep) {
+ // TODO: Get rid of this eventually! Use Common::lastPathComponent instead
+ if(str.empty())
+ return "";
+
+ const char *start = str.c_str();
+ const char *cur = start + str.size() - 2;
+
+ while (cur >= start && *cur != sep) {
+ --cur;
+ }
+
+ return cur + 1;
+}
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/abstract-fs.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -43,28 +43,27 @@
*/
class AbstractFilesystemNode {
protected:
- friend class FilesystemNode;
- typedef Common::String String;
- typedef FilesystemNode::ListMode ListMode;
+ friend class Common::FilesystemNode;
+ typedef Common::FilesystemNode::ListMode ListMode;
/**
- * Returns the child node with the given name. If no child with this name
- * exists, returns 0. When called on a non-directory node, it should
- * handle this gracefully by returning 0.
+ * Returns the child node with the given name. When called on a non-directory
+ * node, it should handle this gracefully by returning 0.
+ * When called with a name not matching any of the files/dirs contained in this
+ * directory, a valid node shold be returned, which returns 'false' upon calling
+ * the exists() method. The idea is that this node can then still can be used to
+ * create a new file via the openForWriting() method.
*
* Example:
* Calling getChild() for a node with path "/foo/bar" using name="file.txt",
* would produce a new node with "/foo/bar/file.txt" as path.
*
- * @note This function will append a separator char (\ or /) to the end of the
- * path if needed.
- *
* @note Handling calls on non-dir nodes gracefully makes it possible to
* switch to a lazy type detection scheme in the future.
*
* @param name String containing the name of the child to create a new node.
*/
- virtual AbstractFilesystemNode *getChild(const String &name) const = 0;
+ virtual AbstractFilesystemNode *getChild(const Common::String &name) const = 0;
/**
* The parent node of this directory.
@@ -72,6 +71,19 @@
*/
virtual AbstractFilesystemNode *getParent() const = 0;
+ /**
+ * Returns the last component of a given path.
+ *
+ * Examples:
+ * /foo/bar.txt would return /bar.txt
+ * /foo/bar/ would return /bar/
+ *
+ * @param str String containing the path.
+ * @param sep character used to separate path components
+ * @return Pointer to the first char of the last component inside str.
+ */
+ static const char *lastPathComponent(const Common::String &str, const char sep);
+
public:
/**
* Destructor.
@@ -100,7 +112,7 @@
*
* @note By default, this method returns the value of getName().
*/
- virtual String getDisplayName() const { return getName(); }
+ virtual Common::String getDisplayName() const { return getName(); }
/**
* Returns the last component of the path pointed by this FilesystemNode.
@@ -111,12 +123,12 @@
*
* @note This method is very architecture dependent, please check the concrete implementation for more information.
*/
- virtual String getName() const = 0;
+ virtual Common::String getName() const = 0;
/**
* Returns the 'path' of the current node, usable in fopen().
*/
- virtual String getPath() const = 0;
+ virtual Common::String getPath() const = 0;
/**
* Indicates whether this path refers to a directory or not.
@@ -149,9 +161,26 @@
*/
virtual bool isWritable() const = 0;
- /* TODO:
- bool isFile();
- */
+
+ /**
+ * Creates a SeekableReadStream instance corresponding to the file
+ * referred by this node. This assumes that the node actually refers
+ * to a readable file. If this is not the case, 0 is returned.
+ *
+ * @return pointer to the stream object, 0 in case of a failure
+ */
+ virtual Common::SeekableReadStream *openForReading() = 0;
+
+ /**
+ * Creates a WriteStream instance corresponding to the file
+ * referred by this node. This assumes that the node actually refers
+ * to a readable file. If this is not the case, 0 is returned.
+ *
+ * @return pointer to the stream object, 0 in case of a failure
+ */
+ virtual Common::WriteStream *openForWriting() = 0;
};
+
+
#endif //BACKENDS_ABSTRACT_FS_H
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -26,8 +26,6 @@
#include "backends/fs/amigaos4/amigaos4-fs-factory.h"
#include "backends/fs/amigaos4/amigaos4-fs.cpp"
-DECLARE_SINGLETON(AmigaOSFilesystemFactory);
-
AbstractFilesystemNode *AmigaOSFilesystemFactory::makeRootFileNode() const {
return new AmigaOSFilesystemNode();
}
@@ -36,7 +34,7 @@
return new AmigaOSFilesystemNode();
}
-AbstractFilesystemNode *AmigaOSFilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *AmigaOSFilesystemFactory::makeFileNodePath(const Common::String &path) const {
return new AmigaOSFilesystemNode(path);
}
#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -25,7 +25,6 @@
#ifndef AMIGAOS_FILESYSTEM_FACTORY_H
#define AMIGAOS_FILESYSTEM_FACTORY_H
-#include "common/singleton.h"
#include "backends/fs/fs-factory.h"
/**
@@ -33,19 +32,11 @@
*
* Parts of this class are documented in the base interface class, FilesystemFactory.
*/
-class AmigaOSFilesystemFactory : public FilesystemFactory, public Common::Singleton<AmigaOSFilesystemFactory> {
+class AmigaOSFilesystemFactory : public FilesystemFactory {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
-
-protected:
- AmigaOSFilesystemFactory() {};
-
-private:
- friend class Common::Singleton<SingletonBaseType>;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
};
#endif /*AMIGAOS_FILESYSTEM_FACTORY_H*/
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/amigaos4/amigaos4-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -36,8 +36,8 @@
#endif
#include "common/util.h"
-#include "engines/engine.h"
#include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
#define ENTER() /* debug(6, "Enter") */
#define LEAVE() /* debug(6, "Leave") */
@@ -52,8 +52,8 @@
class AmigaOSFilesystemNode : public AbstractFilesystemNode {
protected:
BPTR _pFileLock;
- String _sDisplayName;
- String _sPath;
+ Common::String _sDisplayName;
+ Common::String _sPath;
bool _bIsDirectory;
bool _bIsValid;
@@ -74,9 +74,9 @@
/**
* Creates a AmigaOSFilesystemNode for a given path.
*
- * @param path String with the path the new node should point to.
+ * @param path Common::String with the path the new node should point to.
*/
- AmigaOSFilesystemNode(const String &p);
+ AmigaOSFilesystemNode(const Common::String &p);
/**
* FIXME: document this constructor.
@@ -96,17 +96,20 @@
virtual ~AmigaOSFilesystemNode();
virtual bool exists() const;
- virtual String getDisplayName() const { return _sDisplayName; };
- virtual String getName() const { return _sDisplayName; };
- virtual String getPath() const { return _sPath; };
+ virtual Common::String getDisplayName() const { return _sDisplayName; };
+ virtual Common::String getName() const { return _sDisplayName; };
+ virtual Common::String getPath() const { return _sPath; };
virtual bool isDirectory() const { return _bIsDirectory; };
virtual bool isReadable() const;
virtual bool isWritable() const;
- virtual AbstractFilesystemNode *getChild(const String &n) const;
+ virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
+
/**
* Creates a list with all the volumes present in the root node.
*/
@@ -116,7 +119,7 @@
/**
* Returns the last component of a given path.
*
- * @param str String containing the path.
+ * @param str Common::String containing the path.
* @return Pointer to the first char of the last component inside str.
*/
const char *lastPathComponent(const Common::String &str) {
@@ -148,10 +151,10 @@
LEAVE();
}
-AmigaOSFilesystemNode::AmigaOSFilesystemNode(const String &p) {
+AmigaOSFilesystemNode::AmigaOSFilesystemNode(const Common::String &p) {
ENTER();
- int len = 0, offset = p.size();
+ int offset = p.size();
//assert(offset > 0);
@@ -161,7 +164,7 @@
}
_sPath = p;
- _sDisplayName = lastPathComponent(_sPath);
+ _sDisplayName = ::lastPathComponent(_sPath);
_pFileLock = 0;
_bIsDirectory = false;
@@ -299,14 +302,14 @@
return nodeExists;
}
-AbstractFilesystemNode *AmigaOSFilesystemNode::getChild(const String &n) const {
+AbstractFilesystemNode *AmigaOSFilesystemNode::getChild(const Common::String &n) const {
ENTER();
if (!_bIsDirectory) {
debug(6, "Not a directory");
return 0;
}
- String newPath(_sPath);
+ Common::String newPath(_sPath);
if (_sPath.lastChar() != '/')
newPath += '/';
@@ -368,10 +371,10 @@
struct ExAllData *ead = data;
do {
- if ((mode == FilesystemNode::kListAll) ||
- (EAD_IS_DRAWER(ead) && (mode == FilesystemNode::kListDirectoriesOnly)) ||
- (EAD_IS_FILE(ead) && (mode == FilesystemNode::kListFilesOnly))) {
- String full_path = _sPath;
+ if ((mode == Common::FilesystemNode::kListAll) ||
+ (EAD_IS_DRAWER(ead) && (mode == Common::FilesystemNode::kListDirectoriesOnly)) ||
+ (EAD_IS_FILE(ead) && (mode == Common::FilesystemNode::kListFilesOnly))) {
+ Common::String full_path = _sPath;
full_path += (char*)ead->ed_Name;
BPTR lock = IDOS->Lock((STRPTR)full_path.c_str(), SHARED_LOCK);
@@ -566,4 +569,12 @@
return myList;
}
+Common::SeekableReadStream *AmigaOSFilesystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *AmigaOSFilesystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
#endif //defined(__amigaos4__)
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -45,7 +45,7 @@
}
}
-AbstractFilesystemNode *DSFilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *DSFilesystemFactory::makeFileNodePath(const Common::String &path) const {
if (DS::isGBAMPAvailable()) {
return new DS::GBAMPFileSystemNode(path);
} else {
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -35,11 +35,9 @@
*/
class DSFilesystemFactory : public FilesystemFactory, public Common::Singleton<DSFilesystemFactory> {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
protected:
DSFilesystemFactory() {};
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -24,6 +24,7 @@
#include "common/util.h"
//#include <NDS/ARM9/console.h> //basic print funcionality
#include "backends/fs/ds/ds-fs.h"
+#include "backends/fs/stdiostream.h"
#include "dsmain.h"
#include "fat/gba_nds_fat.h"
@@ -55,7 +56,7 @@
}
}
-DSFileSystemNode::DSFileSystemNode(const String& path) {
+DSFileSystemNode::DSFileSystemNode(const Common::String& path) {
// consolePrintf("--%s ",path.c_str());
char disp[128];
@@ -70,7 +71,7 @@
strcpy(disp, pathStr + lastSlash + 1);
- _displayName = String(disp);
+ _displayName = Common::String(disp);
_path = path;
// _isValid = true;
// _isDirectory = false;
@@ -98,7 +99,7 @@
// consolePrintf("%s - Found: %d, Dir: %d\n", pathStr, _isValid, _isDirectory);
}
-DSFileSystemNode::DSFileSystemNode(const String& path, bool isDir) {
+DSFileSystemNode::DSFileSystemNode(const Common::String& path, bool isDir) {
// consolePrintf("--%s ",path.c_str());
char disp[128];
@@ -112,7 +113,7 @@
strcpy(disp, pathStr + lastSlash + 1);
- _displayName = String(disp);
+ _displayName = Common::String(disp);
_path = path;
_isValid = true;
_isDirectory = isDir;
@@ -167,10 +168,10 @@
_zipFile->getFileName(n);
// consolePrintf("file: %s\n", n);
- if ( (_zipFile->isDirectory() && ((mode == FilesystemNode::kListDirectoriesOnly) || (mode == FilesystemNode::kListAll)) )
- || (!_zipFile->isDirectory() && ((mode == FilesystemNode::kListFilesOnly) || (mode == FilesystemNode::kListAll)) ) )
+ if ( (_zipFile->isDirectory() && ((mode == Common::FilesystemNode::kListDirectoriesOnly) || (mode == Common::FilesystemNode::kListAll)) )
+ || (!_zipFile->isDirectory() && ((mode == Common::FilesystemNode::kListFilesOnly) || (mode == Common::FilesystemNode::kListAll)) ) )
{
- DSFileSystemNode* dsfsn = new DSFileSystemNode("ds:/" + String(n), _zipFile->isDirectory());
+ DSFileSystemNode* dsfsn = new DSFileSystemNode("ds:/" + Common::String(n), _zipFile->isDirectory());
dsfsn->_isDirectory = _zipFile->isDirectory();
dirList.push_back((dsfsn));
}
@@ -195,7 +196,7 @@
}
}
- p = new DSFileSystemNode(String(path, lastSlash));
+ p = new DSFileSystemNode(Common::String(path, lastSlash));
((DSFileSystemNode *) (p))->_isDirectory = true;
} else {
p = new DSFileSystemNode();
@@ -204,6 +205,14 @@
return p;
}
+Common::SeekableReadStream *DSFileSystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *DSFileSystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
//////////////////////////////////////////////////////////////////////////
// GBAMPFileSystemNode - File system using GBA Movie Player and CF card //
//////////////////////////////////////////////////////////////////////////
@@ -216,7 +225,7 @@
_path = "mp:/";
}
-GBAMPFileSystemNode::GBAMPFileSystemNode(const String& path) {
+GBAMPFileSystemNode::GBAMPFileSystemNode(const Common::String& path) {
// consolePrintf("'%s'",path.c_str());
char disp[128];
@@ -245,13 +254,13 @@
}
// consolePrintf("Path: %s (%d)\n", check, success);
- _displayName = String(disp);
+ _displayName = Common::String(disp);
_path = path;
_isValid = success == FT_FILE;
_isDirectory = success == FT_DIR;
}
-GBAMPFileSystemNode::GBAMPFileSystemNode(const String& path, bool isDirectory) {
+GBAMPFileSystemNode::GBAMPFileSystemNode(const Common::String& path, bool isDirectory) {
// consolePrintf("'%s'",path.c_str());
char disp[128];
@@ -265,7 +274,7 @@
strcpy(disp, pathStr + lastSlash + 1);
- _displayName = String(disp);
+ _displayName = Common::String(disp);
_path = path;
_isValid = true;
_isDirectory = isDirectory;
@@ -313,8 +322,8 @@
while (entryType != TYPE_NO_MORE) {
- if ( ((entryType == TYPE_DIR) && ((mode == FilesystemNode::kListDirectoriesOnly) || (mode == FilesystemNode::kListAll)))
- || ((entryType == TYPE_FILE) && ((mode == FilesystemNode::kListFilesOnly) || (mode == FilesystemNode::kListAll))) ) {
+ if ( ((entryType == TYPE_DIR) && ((mode == Common::FilesystemNode::kListDirectoriesOnly) || (mode == Common::FilesystemNode::kListAll)))
+ || ((entryType == TYPE_FILE) && ((mode == Common::FilesystemNode::kListFilesOnly) || (mode == Common::FilesystemNode::kListAll))) ) {
GBAMPFileSystemNode* dsfsn;
consolePrintf("Fname: %s\n", fname);
@@ -322,9 +331,9 @@
if (strcmp(fname, ".") && strcmp(fname, "..")) {
if (!strcmp(path, "/")) {
- dsfsn = new GBAMPFileSystemNode("mp:" + String(path) + String(fname), entryType == TYPE_DIR);
+ dsfsn = new GBAMPFileSystemNode("mp:" + Common::String(path) + Common::String(fname), entryType == TYPE_DIR);
} else {
- dsfsn = new GBAMPFileSystemNode("mp:" + String(path) + String("/") + String(fname), entryType == TYPE_DIR);
+ dsfsn = new GBAMPFileSystemNode("mp:" + Common::String(path) + Common::String("/") + Common::String(fname), entryType == TYPE_DIR);
}
// dsfsn->_isDirectory = entryType == DIR;
@@ -358,7 +367,7 @@
}
}
- p = new GBAMPFileSystemNode(String(path, lastSlash));
+ p = new GBAMPFileSystemNode(Common::String(path, lastSlash));
p->_isDirectory = true;
} else {
p = new GBAMPFileSystemNode();
@@ -367,6 +376,14 @@
return p;
}
+Common::SeekableReadStream *GBAMPFileSystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *GBAMPFileSystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
// Stdio replacements
#define MAX_FILE_HANDLES 32
@@ -399,6 +416,7 @@
if (DS::isGBAMPAvailable()) {
FAT_chdir("/");
+ // Turn all back slashes into forward slashes for gba_nds_fat
char* p = realName;
while (*p) {
if (*p == '\\') *p = '/';
@@ -422,8 +440,12 @@
// Allocate a file handle
int r = 0;
- while (handle[r].used) r++;
+ while (handle[r].used) {
+ r++;
+ assert(r < MAX_FILE_HANDLES);
+ }
+#ifdef GBA_SRAM_SAVE
if (strchr(mode, 'w')) {
// consolePrintf("Writing %s\n", realName);
handle[r].sramFile = (DSSaveFile *) DSSaveFileManager::instance()->openSavefile(realName, true);
@@ -431,6 +453,7 @@
// consolePrintf("Reading %s\n", realName);
handle[r].sramFile = (DSSaveFile *) DSSaveFileManager::instance()->openSavefile(realName, false);
}
+#endif
if (handle[r].sramFile) {
handle[r].used = true;
@@ -512,69 +535,6 @@
return bytes / size;
}
return numItems;
-
-/* int item = 0;
- u8* data = (u8 *) ptr;
- while ((item < numItems) && (!FAT_feof((FAT_FILE *) handle))) {
-
-
- int bytes = 0;
- while ((bytes < size) && (!FAT_feof((FAT_FILE *) handle))) {
- *data++ = FAT_fgetc((FAT_FILE *) handle);
- bytes++;
- }
-
- item++;
-
- }
-
- return item;
-*/
- int items = 0;
-
- //for (int r = 0; r < numItems; r++) {
- if (!std_feof(handle)) {
-/* for (int t = 0; t < size; t++) {
- if (feof(handle)) eof = true;
- *(((char *) (ptr)) + r * size + t) = getc(handle);
- }*/
- int left = size * numItems;
- int bytesRead = -1;
-
- while ((left > 0) && (!FAT_feof((FAT_FILE *) handle))) {
- int amount = left > 8192? 8192: left;
-// do {
- bytesRead = FAT_fread((void *) ptr, 1, amount, (FAT_FILE *) handle);
-/* if (bytesRead == 0) {
- consolePrintf("Pos:%d items:%d num:%d amount:%d read:%d\n", ftell(handle), items, numItems, amount, bytesRead);
- left++;
-
- int pos = ftell(handle);
-
- fseek(handle, 0, SEEK_SET);
- int c = getc(handle);
- fseek(handle, pos - 1024, SEEK_SET);
- fread(ptr, 1024, 1, handle);
- swiWaitForVBlank();
- //while (true);
- }
-
- } while (bytesRead == 0);
-*/
- left -= bytesRead;
- ptr = ((char *) (ptr)) + bytesRead;
- }
-
- items = numItems - (left / size);
-
-// FAT_fread((void *) ptr, size, 1, ((int) (handle)) - 1);
-// ptr = ((char *) (ptr)) + size;
- }
-// }
-
-// consolePrintf("...done %d \n", items)
-
- return items;
}
if (handle->sramFile) {
@@ -641,10 +601,6 @@
}
}
-void std_fprintf(FILE* handle, const char* fmt, ...) {
- consolePrintf(fmt);
-}
-
bool std_feof(FILE* handle) {
// consolePrintf("feof ");
@@ -660,44 +616,12 @@
return handle->pos >= handle->size;
}
-void std_fflush(FILE* handle) {
+int std_fflush(FILE* handle) {
//FIXME: not implemented?
// consolePrintf("fflush ");
+ return 0;
}
-char* std_fgets(char* str, int size, FILE* file) {
-// consolePrintf("fgets file=%d ", file);
-
- if (DS::isGBAMPAvailable()) {
- char* s = str;
- while ((*s++ = std_getc(file)) >= 32) {
-// consolePrintf("%d ", *s);
- }
- *s = 0;
-
-// consolePrintf("Read:%s\n", str);
-
- return str;
- }
-
- if (file->sramFile) {
- file->pos--;
- int p = -1;
- do {
- file->pos++;
- p++;
- file->sramFile->read((char *) &str[p], 1);
-// consolePrintf("%d,", str[p]);
- } while ((str[p] >= 32) && (!std_feof(file)) && (p < size));
- str[p + 1] = 0;
- file->pos++;
-// consolePrintf("Read:%s\n", str);
- return str;
- }
-
- return NULL;
-}
-
long int std_ftell(FILE* handle) {
if (DS::isGBAMPAvailable()) {
return FAT_ftell((FAT_FILE *) handle);
@@ -731,92 +655,20 @@
return 0;
}
+int std_ferror(FILE* handle) {
+ //FIXME: not implemented?
+// consolePrintf("ferror ");
+ return 0;
+}
+
void std_clearerr(FILE* handle) {
//FIXME: not implemented?
// consolePrintf("clearerr ");
}
-int std_getc(FILE* handle) {
- if (DS::isGBAMPAvailable()) {
- char c;
- FAT_fread(&c, 1, 1, (FAT_FILE *) handle);
-
- return c;
- }
-
-// consolePrintf("fgetc ");
- return 0; // Not supported yet
+void std_fprintf(FILE* handle, const char* fmt, ...) {
+ consolePrintf(fmt);
}
-char* std_getcwd(char* dir, int dunno) {
-// consolePrintf("getcwd ");
- dir[0] = '\0';
- return dir; // Not supported yet
-}
-void std_cwd(char* dir) {
- char buffer[128];
- strcpy(buffer, dir);
- char* realName = buffer;
-
- if (DS::isGBAMPAvailable()) {
- if ((strlen(dir) >= 4) && (dir[0] == 'm') && (dir[1] == 'p') && (dir[2] == ':') && (dir[3] == '/')) {
- realName += 4;
- }
-
- // consolePrintf("Real cwd:%d\n", realName);
-
- char* p = realName;
- while (*p) {
- if (*p == '\\') *p = '/';
- p++;
- }
-
- // consolePrintf("Real cwd:%d\n", realName);
- FAT_chdir(realName);
- } else {
- if ((strlen(dir) >= 4) && (dir[0] == 'd') && (dir[1] == 's') && (dir[2] == ':') && (dir[3] == '/')) {
- realName += 4;
- }
-
- char* p = realName;
- while (*p) {
- if (*p == '\\') *p = '/';
- p++;
- }
-
- strcpy(currentDir, realName);
- if (*(currentDir + strlen(currentDir) - 1) == '/') {
- *(currentDir + strlen(currentDir) - 1) = '\0';
- }
-// consolePrintf("CWD: %s\n", currentDir);
- }
-}
-
-int std_ferror(FILE* handle) {
- return 0;
-}
-
} // namespace DS
-
-/**
- * Returns the last component of a given path.
- *
- * Examples:
- * /foo/bar.txt would return /bar.txt
- * /foo/bar/ would return /bar/
- *
- * @param str String containing the path.
- * @return Pointer to the first char of the last component inside str.
- */
-const char *lastPathComponent(const Common::String &str) {
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/' && *cur != '\\') {
- --cur;
- }
-
- return cur + 1;
-}
-
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ds/ds-fs.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -41,12 +41,10 @@
*/
class DSFileSystemNode : public AbstractFilesystemNode {
protected:
- typedef class Common::String String;
-
static ZipFile* _zipFile;
- String _displayName;
- String _path;
+ Common::String _displayName;
+ Common::String _path;
bool _isDirectory;
bool _isValid;
@@ -61,7 +59,7 @@
*
* @param path String with the path the new node should point to.
*/
- DSFileSystemNode(const String &path);
+ DSFileSystemNode(const Common::String &path);
/**
* Creates a DSFilesystemNode for a given path.
@@ -69,7 +67,7 @@
* @param path String with the path the new node should point to.
* @param path true if path is a directory, false otherwise.
*/
- DSFileSystemNode(const String& path, bool isDir);
+ DSFileSystemNode(const Common::String& path, bool isDir);
/**
* Copy constructor.
@@ -77,9 +75,9 @@
DSFileSystemNode(const DSFileSystemNode *node);
virtual bool exists() const { return true; } //FIXME: this is just a stub
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
virtual bool isDirectory() const { return _isDirectory; }
virtual bool isReadable() const { return true; } //FIXME: this is just a stub
virtual bool isWritable() const { return true; } //FIXME: this is just a stub
@@ -89,9 +87,12 @@
*/
virtual AbstractFilesystemNode *clone() const { return new DSFileSystemNode(this); }
virtual AbstractFilesystemNode *getChild(const Common::String& name) const;
- virtual bool getChildren(AbstractFSList &list, ListMode mode = FilesystemNode::kListDirectoriesOnly, bool hidden = false) const;
+ virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
+
/**
* Returns the zip file this node points to.
* TODO: check this documentation.
@@ -107,10 +108,8 @@
*/
class GBAMPFileSystemNode : public AbstractFilesystemNode {
protected:
- typedef class Common::String String;
-
- String _displayName;
- String _path;
+ Common::String _displayName;
+ Common::String _path;
bool _isDirectory;
bool _isValid;
@@ -125,7 +124,7 @@
*
* @param path String with the path the new node should point to.
*/
- GBAMPFileSystemNode(const String &path);
+ GBAMPFileSystemNode(const Common::String &path);
/**
* Creates a DSFilesystemNode for a given path.
@@ -133,7 +132,7 @@
* @param path String with the path the new node should point to.
* @param path true if path is a directory, false otherwise.
*/
- GBAMPFileSystemNode(const String &path, bool isDirectory);
+ GBAMPFileSystemNode(const Common::String &path, bool isDirectory);
/**
* Copy constructor.
@@ -141,9 +140,9 @@
GBAMPFileSystemNode(const GBAMPFileSystemNode *node);
virtual bool exists() const { return _isValid || _isDirectory; }
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
virtual bool isDirectory() const { return _isDirectory; }
virtual bool isReadable() const { return true; } //FIXME: this is just a stub
virtual bool isWritable() const { return true; } //FIXME: this is just a stub
@@ -153,8 +152,11 @@
*/
virtual AbstractFilesystemNode *clone() const { return new GBAMPFileSystemNode(this); }
virtual AbstractFilesystemNode *getChild(const Common::String& name) const;
- virtual bool getChildren(AbstractFSList &list, ListMode mode = FilesystemNode::kListDirectoriesOnly, bool hidden = false) const;
+ virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
};
struct fileHandle {
@@ -179,15 +181,14 @@
// Please do not remove any of these prototypes that appear not to be required.
FILE* std_fopen(const char* name, const char* mode);
void std_fclose(FILE* handle);
-int std_getc(FILE* handle);
size_t std_fread(const void* ptr, size_t size, size_t numItems, FILE* handle);
size_t std_fwrite(const void* ptr, size_t size, size_t numItems, FILE* handle);
bool std_feof(FILE* handle);
long int std_ftell(FILE* handle);
int std_fseek(FILE* handle, long int offset, int whence);
void std_clearerr(FILE* handle);
-void std_cwd(char* dir);
-void std_fflush(FILE* handle);
+int std_fflush(FILE* handle);
+int std_ferror(FILE* handle);
} //namespace DS
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -36,7 +36,7 @@
return new PalmOSFilesystemNode();
}
-AbstractFilesystemNode *PalmOSFilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *PalmOSFilesystemFactory::makeFileNodePath(const Common::String &path) const {
return new PalmOSFilesystemNode(path);
}
#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -35,11 +35,9 @@
*/
class PalmOSFilesystemFactory : public FilesystemFactory, public Common::Singleton<PalmOSFilesystemFactory> {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
protected:
PalmOSFilesystemFactory() {};
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/palmos/palmos-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -28,6 +28,7 @@
#include "globals.h"
#include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
/**
* Implementation of the ScummVM file system API based on PalmOS VFS API.
@@ -36,8 +37,8 @@
*/
class PalmOSFilesystemNode : public AbstractFilesystemNode {
protected:
- String _displayName;
- String _path;
+ Common::String _displayName;
+ Common::String _path;
bool _isDirectory;
bool _isValid;
bool _isPseudoRoot;
@@ -51,22 +52,25 @@
/**
* Creates a POSIXFilesystemNode for a given path.
*
- * @param path String with the path the new node should point to.
+ * @param path Common::String with the path the new node should point to.
*/
- PalmOSFilesystemNode(const String &p);
+ PalmOSFilesystemNode(const Common::String &p);
virtual bool exists() const { return _isValid; }
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
virtual bool isDirectory() const { return _isDirectory; }
virtual bool isReadable() const { return true; } //FIXME: this is just a stub
virtual bool isWritable() const { return true; } //FIXME: this is just a stub
- virtual AbstractFilesystemNode *getChild(const String &n) const;
+ virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
+
private:
/**
* Adds a single WindowsFilesystemNode to a given list.
@@ -74,44 +78,20 @@
*
* @param list List to put the file entry node in.
* @param mode Mode to use while adding the file entry to the list.
- * @param base String with the directory being listed.
+ * @param base Common::String with the directory being listed.
* @param find_data Describes a file that the FindFirstFile, FindFirstFileEx, or FindNextFile functions find.
*/
static void addFile(AbstractFSList &list, ListMode mode, const Char *base, FileInfoType* find_data);
};
-/**
- * Returns the last component of a given path.
- *
- * Examples:
- * /foo/bar.txt would return /bar.txt
- * /foo/bar/ would return /bar/
- *
- * @param str String containing the path.
- * @return Pointer to the first char of the last component inside str.
- */
-const char *lastPathComponent(const Common::String &str) {
- if(str.empty())
- return "";
-
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/') {
- --cur;
- }
-
- return cur + 1;
-}
-
void PalmOSFilesystemNode::addFile(AbstractFSList &list, ListMode mode, const char *base, FileInfoType* find_data) {
PalmOSFilesystemNode entry;
bool isDir;
isDir = (find_data->attributes & vfsFileAttrDirectory);
- if ((!isDir && mode == FilesystemNode::kListDirectoriesOnly) ||
- (isDir && mode == FilesystemNode::kListFilesOnly))
+ if ((!isDir && mode == Common::FilesystemNode::kListDirectoriesOnly) ||
+ (isDir && mode == Common::FilesystemNode::kListFilesOnly))
return;
entry._isDirectory = isDir;
@@ -136,9 +116,9 @@
_isPseudoRoot = false;
}
-PalmOSFilesystemNode::PalmOSFilesystemNode(const String &p) {
+PalmOSFilesystemNode::PalmOSFilesystemNode(const Common::String &p) {
_path = p;
- _displayName = lastPathComponent(_path);
+ _displayName = lastPathComponent(_path, '/');
UInt32 attr;
FileRef handle;
@@ -159,10 +139,10 @@
_isPseudoRoot = false;
}
-AbstractFilesystemNode *PalmOSFilesystemNode::getChild(const String &n) const {
+AbstractFilesystemNode *PalmOSFilesystemNode::getChild(const Common::String &n) const {
assert(_isDirectory);
- String newPath(_path);
+ Common::String newPath(_path);
if (_path.lastChar() != '/')
newPath += '/';
newPath += n;
@@ -215,17 +195,25 @@
if (!_isPseudoRoot) {
const char *start = _path.c_str();
- const char *end = lastPathComponent(_path);
+ const char *end = lastPathComponent(_path, '/');
p = new PalmOSFilesystemNode();
- p->_path = String(start, end - start);
+ p->_path = Common::String(start, end - start);
p->_isValid = true;
p->_isDirectory = true;
- p->_displayName = lastPathComponent(p->_path);
+ p->_displayName = lastPathComponent(p->_path, '/');
p->_isPseudoRoot =(p->_path == "/");
}
return p;
}
+Common::SeekableReadStream *PalmOSFilesystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *PalmOSFilesystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
#endif // PALMOS_MODE
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -26,19 +26,18 @@
#include "backends/fs/posix/posix-fs-factory.h"
#include "backends/fs/posix/posix-fs.cpp"
-DECLARE_SINGLETON(POSIXFilesystemFactory);
-
AbstractFilesystemNode *POSIXFilesystemFactory::makeRootFileNode() const {
- return new POSIXFilesystemNode();
+ return new POSIXFilesystemNode("/");
}
AbstractFilesystemNode *POSIXFilesystemFactory::makeCurrentDirectoryFileNode() const {
char buf[MAXPATHLEN];
getcwd(buf, MAXPATHLEN);
- return new POSIXFilesystemNode(buf, true);
+ return new POSIXFilesystemNode(buf);
}
-AbstractFilesystemNode *POSIXFilesystemFactory::makeFileNodePath(const String &path) const {
- return new POSIXFilesystemNode(path, true);
+AbstractFilesystemNode *POSIXFilesystemFactory::makeFileNodePath(const Common::String &path) const {
+ assert(!path.empty());
+ return new POSIXFilesystemNode(path);
}
#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -25,7 +25,6 @@
#ifndef POSIX_FILESYSTEM_FACTORY_H
#define POSIX_FILESYSTEM_FACTORY_H
-#include "common/singleton.h"
#include "backends/fs/fs-factory.h"
/**
@@ -33,19 +32,10 @@
*
* Parts of this class are documented in the base interface class, FilesystemFactory.
*/
-class POSIXFilesystemFactory : public FilesystemFactory, public Common::Singleton<POSIXFilesystemFactory> {
-public:
- typedef Common::String String;
-
+class POSIXFilesystemFactory : public FilesystemFactory {
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
-
-protected:
- POSIXFilesystemFactory() {};
-
-private:
- friend class Common::Singleton<SingletonBaseType>;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
};
#endif /*POSIX_FILESYSTEM_FACTORY_H*/
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -24,86 +24,21 @@
#if defined(UNIX)
-#include "backends/fs/abstract-fs.h"
+#include "backends/fs/posix/posix-fs.h"
+#include "backends/fs/stdiostream.h"
+#include "common/algorithm.h"
-#ifdef MACOSX
-#include <sys/types.h>
-#endif
#include <sys/param.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
-#include <unistd.h>
-/**
- * Implementation of the ScummVM file system API based on POSIX.
- *
- * Parts of this class are documented in the base interface class, AbstractFilesystemNode.
- */
-class POSIXFilesystemNode : public AbstractFilesystemNode {
-protected:
- String _displayName;
- String _path;
- bool _isDirectory;
- bool _isValid;
+#ifdef __OS2__
+#define INCL_DOS
+#include <os2.h>
+#endif
-public:
- /**
- * Creates a POSIXFilesystemNode with the root node as path.
- */
- POSIXFilesystemNode();
- /**
- * Creates a POSIXFilesystemNode for a given path.
- *
- * @param path String with the path the new node should point to.
- * @param verify true if the isValid and isDirectory flags should be verified during the construction.
- */
- POSIXFilesystemNode(const String &path, bool verify);
-
- virtual bool exists() const { return access(_path.c_str(), F_OK) == 0; }
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
- virtual bool isDirectory() const { return _isDirectory; }
- virtual bool isReadable() const { return access(_path.c_str(), R_OK) == 0; }
- virtual bool isWritable() const { return access(_path.c_str(), W_OK) == 0; }
-
- virtual AbstractFilesystemNode *getChild(const String &n) const;
- virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
- virtual AbstractFilesystemNode *getParent() const;
-
-private:
- /**
- * Tests and sets the _isValid and _isDirectory flags, using the stat() function.
- */
- virtual void setFlags();
-};
-
-/**
- * Returns the last component of a given path.
- *
- * Examples:
- * /foo/bar.txt would return /bar.txt
- * /foo/bar/ would return /bar/
- *
- * @param str String containing the path.
- * @return Pointer to the first char of the last component inside str.
- */
-const char *lastPathComponent(const Common::String &str) {
- if(str.empty())
- return "";
-
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/') {
- --cur;
- }
-
- return cur + 1;
-}
-
void POSIXFilesystemNode::setFlags() {
struct stat st;
@@ -111,15 +46,7 @@
_isDirectory = _isValid ? S_ISDIR(st.st_mode) : false;
}
-POSIXFilesystemNode::POSIXFilesystemNode() {
- // The root dir.
- _path = "/";
- _displayName = _path;
- _isValid = true;
- _isDirectory = true;
-}
-
-POSIXFilesystemNode::POSIXFilesystemNode(const String &p, bool verify) {
+POSIXFilesystemNode::POSIXFilesystemNode(const Common::String &p) {
assert(p.size() > 0);
// Expand "~/" to the value of the HOME env variable
@@ -134,30 +61,85 @@
} else {
_path = p;
}
+
+#ifdef __OS2__
+ // On OS/2, 'X:/' is a root of drive X, so we should not remove that last
+ // slash.
+ if (!(_path.size() == 3 && _path.hasSuffix(":/")))
+#endif
+ // Normalize the path (that is, remove unneeded slashes etc.)
+ _path = Common::normalizePath(_path, '/');
+ _displayName = Common::lastPathComponent(_path, '/');
- _displayName = lastPathComponent(_path);
+ // TODO: should we turn relative paths into absolute ones?
+ // Pro: Ensures the "getParent" works correctly even for relative dirs.
+ // Contra: The user may wish to use (and keep!) relative paths in his
+ // config file, and converting relative to absolute paths may hurt him...
+ //
+ // An alternative approach would be to change getParent() to work correctly
+ // if "_path" is the empty string.
+#if 0
+ if (!_path.hasPrefix("/")) {
+ char buf[MAXPATHLEN+1];
+ getcwd(buf, MAXPATHLEN);
+ strcat(buf, "/");
+ _path = buf + _path;
+ }
+#endif
+ // TODO: Should we enforce that the path is absolute at this point?
+ //assert(_path.hasPrefix("/"));
- if (verify) {
- setFlags();
- }
+ setFlags();
}
-AbstractFilesystemNode *POSIXFilesystemNode::getChild(const String &n) const {
- // FIXME: Pretty lame implementation! We do no error checking to speak
- // of, do not check if this is a special node, etc.
+AbstractFilesystemNode *POSIXFilesystemNode::getChild(const Common::String &n) const {
+ assert(!_path.empty());
assert(_isDirectory);
+
+ // Make sure the string contains no slashes
+ assert(!n.contains('/'));
- String newPath(_path);
+ // We assume here that _path is already normalized (hence don't bother to call
+ // Common::normalizePath on the final path).
+ Common::String newPath(_path);
if (_path.lastChar() != '/')
newPath += '/';
newPath += n;
- return new POSIXFilesystemNode(newPath, true);
+ return makeNode(newPath);
}
bool POSIXFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode, bool hidden) const {
assert(_isDirectory);
+#ifdef __OS2__
+ if (_path == "/") {
+ // Special case for the root dir: List all DOS drives
+ ULONG ulDrvNum;
+ ULONG ulDrvMap;
+
+ DosQueryCurrentDisk(&ulDrvNum, &ulDrvMap);
+
+ for (int i = 0; i < 26; i++) {
+ if (ulDrvMap & 1) {
+ char drive_root[] = "A:/";
+ drive_root[0] += i;
+
+ POSIXFilesystemNode *entry = new POSIXFilesystemNode();
+ entry->_isDirectory = true;
+ entry->_isValid = true;
+ entry->_path = drive_root;
+ entry->_displayName = "[" + Common::String(drive_root, 2) + "]";
+ myList.push_back(entry);
+ }
+
+ ulDrvMap >>= 1;
+ }
+
+ return true;
+ }
+#endif
+
DIR *dirp = opendir(_path.c_str());
struct dirent *dp;
@@ -175,13 +157,13 @@
continue;
}
- String newPath(_path);
- if (newPath.lastChar() != '/')
- newPath += '/';
- newPath += dp->d_name;
+ // Start with a clone of this node, with the correct path set
+ POSIXFilesystemNode entry(*this);
+ entry._displayName = dp->d_name;
+ if (_path.lastChar() != '/')
+ entry._path += '/';
+ entry._path += entry._displayName;
- POSIXFilesystemNode entry(newPath, false);
-
#if defined(SYSTEM_NOT_SUPPORTING_D_TYPE)
/* TODO: d_type is not part of POSIX, so it might not be supported
* on some of our targets. For those systems where it isn't supported,
@@ -215,13 +197,10 @@
continue;
// Honor the chosen mode
- if ((mode == FilesystemNode::kListFilesOnly && entry._isDirectory) ||
- (mode == FilesystemNode::kListDirectoriesOnly && !entry._isDirectory))
+ if ((mode == Common::FilesystemNode::kListFilesOnly && entry._isDirectory) ||
+ (mode == Common::FilesystemNode::kListDirectoriesOnly && !entry._isDirectory))
continue;
- if (entry._isDirectory)
- entry._path += "/";
-
myList.push_back(new POSIXFilesystemNode(entry));
}
closedir(dirp);
@@ -231,12 +210,39 @@
AbstractFilesystemNode *POSIXFilesystemNode::getParent() const {
if (_path == "/")
- return 0;
+ return 0; // The filesystem root has no parent
+#ifdef __OS2__
+ if (_path.size() == 3 && _path.hasSuffix(":/"))
+ // This is a root directory of a drive
+ return makeNode("/"); // return a virtual root for a list of drives
+#endif
+
const char *start = _path.c_str();
- const char *end = lastPathComponent(_path);
+ const char *end = start + _path.size();
+
+ // Strip of the last component. We make use of the fact that at this
+ // point, _path is guaranteed to be normalized
+ while (end > start && *(end-1) != '/')
+ end--;
- return new POSIXFilesystemNode(String(start, end - start), true);
+ if (end == start) {
+ // This only happens if we were called with a relative path, for which
+ // there simply is no parent.
+ // TODO: We could also resolve this by assuming that the parent is the
+ // current working directory, and returning a node referring to that.
+ return 0;
+ }
+
+ return makeNode(Common::String(start, end));
}
+Common::SeekableReadStream *POSIXFilesystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *POSIXFilesystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
#endif //#if defined(UNIX)
Copied: scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.h (from rev 34649, scummvm/trunk/backends/fs/posix/posix-fs.h)
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.h (rev 0)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/posix/posix-fs.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -0,0 +1,86 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef POSIX_FILESYSTEM_H
+#define POSIX_FILESYSTEM_H
+
+#include "backends/fs/abstract-fs.h"
+
+#ifdef MACOSX
+#include <sys/types.h>
+#endif
+#include <unistd.h>
+
+/**
+ * Implementation of the ScummVM file system API based on POSIX.
+ *
+ * Parts of this class are documented in the base interface class, AbstractFilesystemNode.
+ */
+class POSIXFilesystemNode : public AbstractFilesystemNode {
+protected:
+ Common::String _displayName;
+ Common::String _path;
+ bool _isDirectory;
+ bool _isValid;
+
+ virtual AbstractFilesystemNode *makeNode(const Common::String &path) const {
+ return new POSIXFilesystemNode(path);
+ }
+
+ /**
+ * Plain constructor, for internal use only (hence protected).
+ */
+ POSIXFilesystemNode() : _isDirectory(false), _isValid(false) {}
+
+public:
+ /**
+ * Creates a POSIXFilesystemNode for a given path.
+ *
+ * @param path the path the new node should point to.
+ */
+ POSIXFilesystemNode(const Common::String &path);
+
+ virtual bool exists() const { return access(_path.c_str(), F_OK) == 0; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
+ virtual bool isDirectory() const { return _isDirectory; }
+ virtual bool isReadable() const { return access(_path.c_str(), R_OK) == 0; }
+ virtual bool isWritable() const { return access(_path.c_str(), W_OK) == 0; }
+
+ virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
+ virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
+ virtual AbstractFilesystemNode *getParent() const;
+
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
+
+private:
+ /**
+ * Tests and sets the _isValid and _isDirectory flags, using the stat() function.
+ */
+ virtual void setFlags();
+};
+
+#endif /*POSIX_FILESYSTEM_H*/
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -36,7 +36,7 @@
return new Ps2FilesystemNode();
}
-AbstractFilesystemNode *Ps2FilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *Ps2FilesystemFactory::makeFileNodePath(const Common::String &path) const {
// return new Ps2FilesystemNode(path);
Ps2FilesystemNode *nf = new Ps2FilesystemNode(path, true);
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -35,11 +35,9 @@
*/
class Ps2FilesystemFactory : public FilesystemFactory, public Common::Singleton<Ps2FilesystemFactory> {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
protected:
Ps2FilesystemFactory() {};
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/ps2/ps2-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -23,6 +23,7 @@
*/
#include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
#include <kernel.h>
#include <stdio.h>
#include <stdlib.h>
@@ -47,8 +48,8 @@
friend class Ps2FilesystemFactory;
protected:
- String _displayName;
- String _path;
+ Common::String _displayName;
+ Common::String _path;
bool _isDirectory;
bool _isRoot;
@@ -65,10 +66,10 @@
/**
* Creates a PS2FilesystemNode for a given path.
*
- * @param path String with the path the new node should point to.
+ * @param path Common::String with the path the new node should point to.
*/
- Ps2FilesystemNode(const String &path);
- Ps2FilesystemNode(const String &path, bool verify);
+ Ps2FilesystemNode(const Common::String &path);
+ Ps2FilesystemNode(const Common::String &path, bool verify);
/**
* Copy constructor.
@@ -77,9 +78,9 @@
virtual bool exists(void) const;
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
virtual bool isDirectory() const {
return _isDirectory;
@@ -95,33 +96,14 @@
}
virtual AbstractFilesystemNode *clone() const { return new Ps2FilesystemNode(this); }
- virtual AbstractFilesystemNode *getChild(const String &n) const;
+ virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
};
-/**
- * Returns the last component of a given path.
- *
- * @param str String containing the path.
- * @return Pointer to the first char of the last component inside str.
- */
-const char *lastPathComponent(const Common::String &str) {
- if (str.empty())
- return "";
-
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/' && *cur != ':') {
- --cur;
- }
-
- printf("romeo : lastPathComponent = %s\n", cur + 1);
-
- return cur + 1;
-}
-
Ps2FilesystemNode::Ps2FilesystemNode() {
_isDirectory = true;
_isRoot = true;
@@ -129,12 +111,12 @@
_path = "";
}
-Ps2FilesystemNode::Ps2FilesystemNode(const String &path) {
+Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path) {
_path = path;
_isDirectory = true;
if (strcmp(path.c_str(), "") == 0) {
_isRoot = true;
- _displayName = String("PlayStation 2");
+ _displayName = Common::String("PlayStation 2");
} else {
_isRoot = false;
const char *dsplName = NULL, *pos = path.c_str();
@@ -142,18 +124,18 @@
if (*pos++ == '/')
dsplName = pos;
if (dsplName)
- _displayName = String(dsplName);
+ _displayName = Common::String(dsplName);
else
_displayName = getDeviceDescription(path.c_str());
}
}
-Ps2FilesystemNode::Ps2FilesystemNode(const String &path, bool verify) {
+Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path, bool verify) {
_path = path;
if (strcmp(path.c_str(), "") == 0) {
_isRoot = true; /* root is always a dir*/
- _displayName = String("PlayStation 2");
+ _displayName = Common::String("PlayStation 2");
_isDirectory = true;
} else {
_isRoot = false;
@@ -163,7 +145,7 @@
dsplName = pos;
if (dsplName) {
- _displayName = String(dsplName);
+ _displayName = Common::String(dsplName);
if (verify)
_isDirectory = getDirectoryFlag(path.c_str());
else
@@ -228,7 +210,7 @@
return false;
}
-AbstractFilesystemNode *Ps2FilesystemNode::getChild(const String &n) const {
+AbstractFilesystemNode *Ps2FilesystemNode::getChild(const Common::String &n) const {
if (!_isDirectory)
return NULL;
@@ -306,9 +288,9 @@
while ((dreadRes = fio.dread(fd, &dirent)) > 0) {
if (dirent.name[0] == '.')
continue; // ignore '.' and '..'
- if (((mode == FilesystemNode::kListDirectoriesOnly) && (dirent.stat.mode & FIO_S_IFDIR)) ||
- ((mode == FilesystemNode::kListFilesOnly) && !(dirent.stat.mode & FIO_S_IFDIR)) ||
- (mode == FilesystemNode::kListAll)) {
+ if (((mode == Common::FilesystemNode::kListDirectoriesOnly) && (dirent.stat.mode & FIO_S_IFDIR)) ||
+ ((mode == Common::FilesystemNode::kListFilesOnly) && !(dirent.stat.mode & FIO_S_IFDIR)) ||
+ (mode == Common::FilesystemNode::kListAll)) {
dirEntry._isDirectory = (bool)(dirent.stat.mode & FIO_S_IFDIR);
dirEntry._isRoot = false;
@@ -344,7 +326,7 @@
}
if (slash)
- return new Ps2FilesystemNode(String(_path.c_str(), slash - _path.c_str()));
+ return new Ps2FilesystemNode(Common::String(_path.c_str(), slash - _path.c_str()));
else
return new Ps2FilesystemNode();
}
@@ -359,3 +341,10 @@
return "Harddisk";
}
+Common::SeekableReadStream *Ps2FilesystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *Ps2FilesystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -36,7 +36,7 @@
return new PSPFilesystemNode();
}
-AbstractFilesystemNode *PSPFilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *PSPFilesystemFactory::makeFileNodePath(const Common::String &path) const {
return new PSPFilesystemNode(path, true);
}
#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -35,11 +35,9 @@
*/
class PSPFilesystemFactory : public FilesystemFactory, public Common::Singleton<PSPFilesystemFactory> {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
protected:
PSPFilesystemFactory() {};
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/psp/psp-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -26,6 +26,7 @@
#include "engines/engine.h"
#include "backends/fs/abstract-fs.h"
+#include "backends/fs/stdiostream.h"
#include <sys/stat.h>
#include <unistd.h>
@@ -39,8 +40,8 @@
*/
class PSPFilesystemNode : public AbstractFilesystemNode {
protected:
- String _displayName;
- String _path;
+ Common::String _displayName;
+ Common::String _path;
bool _isDirectory;
bool _isValid;
@@ -53,48 +54,27 @@
/**
* Creates a PSPFilesystemNode for a given path.
*
- * @param path String with the path the new node should point to.
+ * @param path Common::String with the path the new node should point to.
* @param verify true if the isValid and isDirectory flags should be verified during the construction.
*/
PSPFilesystemNode(const Common::String &p, bool verify);
virtual bool exists() const { return access(_path.c_str(), F_OK) == 0; }
- virtual String getDisplayName() const { return _displayName; }
- virtual String getName() const { return _displayName; }
- virtual String getPath() const { return _path; }
+ virtual Common::String getDisplayName() const { return _displayName; }
+ virtual Common::String getName() const { return _displayName; }
+ virtual Common::String getPath() const { return _path; }
virtual bool isDirectory() const { return _isDirectory; }
virtual bool isReadable() const { return access(_path.c_str(), R_OK) == 0; }
virtual bool isWritable() const { return access(_path.c_str(), W_OK) == 0; }
- virtual AbstractFilesystemNode *getChild(const String &n) const;
+ virtual AbstractFilesystemNode *getChild(const Common::String &n) const;
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
+
+ virtual Common::SeekableReadStream *openForReading();
+ virtual Common::WriteStream *openForWriting();
};
-/**
- * Returns the last component of a given path.
- *
- * Examples:
- * /foo/bar.txt would return /bar.txt
- * /foo/bar/ would return /bar/
- *
- * @param str String containing the path.
- * @return Pointer to the first char of the last component inside str.
- */
-const char *lastPathComponent(const Common::String &str) {
- if(str.empty())
- return "";
-
- const char *start = str.c_str();
- const char *cur = start + str.size() - 2;
-
- while (cur >= start && *cur != '/') {
- --cur;
- }
-
- return cur + 1;
-}
-
PSPFilesystemNode::PSPFilesystemNode() {
_isDirectory = true;
_displayName = "Root";
@@ -106,7 +86,7 @@
assert(p.size() > 0);
_path = p;
- _displayName = lastPathComponent(_path);
+ _displayName = lastPathComponent(_path, '/');
_isValid = true;
_isDirectory = true;
@@ -117,12 +97,12 @@
}
}
-AbstractFilesystemNode *PSPFilesystemNode::getChild(const String &n) const {
+AbstractFilesystemNode *PSPFilesystemNode::getChild(const Common::String &n) const {
// FIXME: Pretty lame implementation! We do no error checking to speak
// of, do not check if this is a special node, etc.
assert(_isDirectory);
- String newPath(_path);
+ Common::String newPath(_path);
if (_path.lastChar() != '/')
newPath += '/';
newPath += n;
@@ -157,8 +137,8 @@
entry._path += "/";
// Honor the chosen mode
- if ((mode == FilesystemNode::kListFilesOnly && entry._isDirectory) ||
- (mode == FilesystemNode::kListDirectoriesOnly && !entry._isDirectory))
+ if ((mode == Common::FilesystemNode::kListFilesOnly && entry._isDirectory) ||
+ (mode == Common::FilesystemNode::kListDirectoriesOnly && !entry._isDirectory))
continue;
myList.push_back(new PSPFilesystemNode(entry));
@@ -176,9 +156,17 @@
return 0;
const char *start = _path.c_str();
- const char *end = lastPathComponent(_path);
+ const char *end = lastPathComponent(_path, '/');
- return new PSPFilesystemNode(String(start, end - start), false);
+ return new PSPFilesystemNode(Common::String(start, end - start), false);
}
+Common::SeekableReadStream *PSPFilesystemNode::openForReading() {
+ return StdioStream::makeFromPath(getPath().c_str(), false);
+}
+
+Common::WriteStream *PSPFilesystemNode::openForWriting() {
+ return StdioStream::makeFromPath(getPath().c_str(), true);
+}
+
#endif //#ifdef __PSP__
Copied: scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.cpp (from rev 34649, scummvm/trunk/backends/fs/stdiostream.cpp)
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.cpp (rev 0)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -0,0 +1,161 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "backends/fs/stdiostream.h"
+
+#include <errno.h>
+
+#if defined(MACOSX) || defined(IPHONE)
+#include "CoreFoundation/CoreFoundation.h"
+#endif
+
+
+#ifdef __PLAYSTATION2__
+ // for those replaced fopen/fread/etc functions
+ typedef unsigned long uint64;
+ typedef signed long int64;
+ #include "backends/platform/ps2/fileio.h"
+
+ #define fopen(a, b) ps2_fopen(a, b)
+ #define fclose(a) ps2_fclose(a)
+ #define fseek(a, b, c) ps2_fseek(a, b, c)
+ #define ftell(a) ps2_ftell(a)
+ #define feof(a) ps2_feof(a)
+ #define fread(a, b, c, d) ps2_fread(a, b, c, d)
+ #define fwrite(a, b, c, d) ps2_fwrite(a, b, c, d)
+
+ //#define fprintf ps2_fprintf // used in common/util.cpp
+ //#define fflush(a) ps2_fflush(a) // used in common/util.cpp
+
+ //#define fgetc(a) ps2_fgetc(a) // not used
+ //#define fgets(a, b, c) ps2_fgets(a, b, c) // not used
+ //#define fputc(a, b) ps2_fputc(a, b) // not used
+ //#define fputs(a, b) ps2_fputs(a, b) // not used
+
+ //#define fsize(a) ps2_fsize(a) // not used -- and it is not a standard function either
+#endif
+
+#ifdef __DS__
+
+ // These functions replace the standard library functions of the same name.
+ // As this header is included after the standard one, I have the chance to #define
+ // all of these to my own code.
+ //
+ // A #define is the only way, as redefinig the functions would cause linker errors.
+
+ // These functions need to be #undef'ed, as their original definition
+ // in devkitarm is done with #includes (ugh!)
+ #undef feof
+ #undef clearerr
+ //#undef getc
+ //#undef ferror
+
+ #include "backends/fs/ds/ds-fs.h"
+
+
+ // Only functions used in the ScummVM source have been defined here!
+ #define fopen(name, mode) DS::std_fopen(name, mode)
+ #define fclose(handle) DS::std_fclose(handle)
+ #define fread(ptr, size, items, file) DS::std_fread(ptr, size, items, file)
+ #define fwrite(ptr, size, items, file) DS::std_fwrite(ptr, size, items, file)
+ #define feof(handle) DS::std_feof(handle)
+ #define ftell(handle) DS::std_ftell(handle)
+ #define fseek(handle, offset, whence) DS::std_fseek(handle, offset, whence)
+ #define clearerr(handle) DS::std_clearerr(handle)
+ #define fflush(file) DS::std_fflush(file)
+ #define ferror(handle) DS::std_ferror(handle)
+
+#endif
+
+StdioStream::StdioStream(void *handle) : _handle(handle) {
+ assert(handle);
+}
+
+StdioStream::~StdioStream() {
+ fclose((FILE *)_handle);
+}
+
+bool StdioStream::err() const {
+ return ferror((FILE *)_handle) != 0;
+}
+
+void StdioStream::clearErr() {
+ clearerr((FILE *)_handle);
+}
+
+bool StdioStream::eos() const {
+ return feof((FILE *)_handle) != 0;
+}
+
+int32 StdioStream::pos() const {
+ return ftell((FILE *)_handle);
+}
+
+int32 StdioStream::size() const {
+ int32 oldPos = ftell((FILE *)_handle);
+ fseek((FILE *)_handle, 0, SEEK_END);
+ int32 length = ftell((FILE *)_handle);
+ fseek((FILE *)_handle, oldPos, SEEK_SET);
+
+ return length;
+}
+
+bool StdioStream::seek(int32 offs, int whence) {
+ return fseek((FILE *)_handle, offs, whence) == 0;
+}
+
+uint32 StdioStream::read(void *ptr, uint32 len) {
+ return fread((byte *)ptr, 1, len, (FILE *)_handle);
+}
+
+uint32 StdioStream::write(const void *ptr, uint32 len) {
+ return fwrite(ptr, 1, len, (FILE *)_handle);
+}
+
+bool StdioStream::flush() {
+ return fflush((FILE *)_handle) == 0;
+}
+
+StdioStream *StdioStream::makeFromPath(const Common::String &path, bool writeMode) {
+ FILE *handle = fopen(path.c_str(), writeMode ? "wb" : "rb");
+
+#ifdef __amigaos4__
+ //
+ // Work around for possibility that someone uses AmigaOS "newlib" build
+ // with SmartFileSystem (blocksize 512 bytes), leading to buffer size
+ // being only 512 bytes. "Clib2" sets the buffer size to 8KB, resulting
+ // smooth movie playback. This forces the buffer to be enough also when
+ // using "newlib" compile on SFS.
+ //
+ if (handle && !writeMode) {
+ setvbuf(handle, NULL, _IOFBF, 8192);
+ }
+#endif
+
+
+ if (handle)
+ return new StdioStream(handle);
+ return 0;
+}
Copied: scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.h (from rev 34649, scummvm/trunk/backends/fs/stdiostream.h)
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.h (rev 0)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/stdiostream.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -0,0 +1,62 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef BACKENDS_FS_STDIOSTREAM_H
+#define BACKENDS_FS_STDIOSTREAM_H
+
+#include "common/scummsys.h"
+#include "common/noncopyable.h"
+#include "common/stream.h"
+#include "common/str.h"
+
+class StdioStream : public Common::SeekableReadStream, public Common::WriteStream, public Common::NonCopyable {
+protected:
+ /** File handle to the actual file. */
+ void *_handle;
+
+public:
+ /**
+ * Given a path, invokes fopen on that path and wrap the result in a
+ * StdioStream instance.
+ */
+ static StdioStream *makeFromPath(const Common::String &path, bool writeMode);
+
+ StdioStream(void *handle);
+ virtual ~StdioStream();
+
+ bool err() const;
+ void clearErr();
+ bool eos() const;
+
+ virtual uint32 write(const void *dataPtr, uint32 dataSize);
+ virtual bool flush();
+
+ virtual int32 pos() const;
+ virtual int32 size() const;
+ bool seek(int32 offs, int whence = SEEK_SET);
+ uint32 read(void *dataPtr, uint32 dataSize);
+};
+
+#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -26,8 +26,6 @@
#include "backends/fs/symbian/symbian-fs-factory.h"
#include "backends/fs/symbian/symbian-fs.cpp"
-DECLARE_SINGLETON(SymbianFilesystemFactory);
-
AbstractFilesystemNode *SymbianFilesystemFactory::makeRootFileNode() const {
return new SymbianFilesystemNode(true);
}
@@ -38,7 +36,7 @@
return new SymbianFilesystemNode(path);
}
-AbstractFilesystemNode *SymbianFilesystemFactory::makeFileNodePath(const String &path) const {
+AbstractFilesystemNode *SymbianFilesystemFactory::makeFileNodePath(const Common::String &path) const {
return new SymbianFilesystemNode(path);
}
#endif
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.h
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.h 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs-factory.h 2008-09-26 21:53:08 UTC (rev 34654)
@@ -25,7 +25,6 @@
#ifndef SYMBIAN_FILESYSTEM_FACTORY_H
#define SYMBIAN_FILESYSTEM_FACTORY_H
-#include "common/singleton.h"
#include "backends/fs/fs-factory.h"
/**
@@ -33,19 +32,11 @@
*
* Parts of this class are documented in the base interface class, FilesystemFactory.
*/
-class SymbianFilesystemFactory : public FilesystemFactory, public Common::Singleton<SymbianFilesystemFactory> {
+class SymbianFilesystemFactory : public FilesystemFactory {
public:
- typedef Common::String String;
-
virtual AbstractFilesystemNode *makeRootFileNode() const;
virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const;
- virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const;
-
-protected:
- SymbianFilesystemFactory() {};
-
-private:
- friend class Common::Singleton<SingletonBaseType>;
+ virtual AbstractFilesystemNode *makeFileNodePath(const Common::String &path) const;
};
#endif /*SYMBIAN_FILESYSTEM_FACTORY_H*/
Modified: scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs.cpp
===================================================================
--- scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs.cpp 2008-09-26 19:07:26 UTC (rev 34653)
+++ scummvm/branches/gsoc2008-vkeybd/backends/fs/symbian/symbian-fs.cpp 2008-09-26 21:53:08 UTC (rev 34654)
@@ -24,12 +24,16 @@
#if defined (__SYMBIAN32__)
#include "backends/fs/abstract-fs.h"
+#include "backends/fs/symbian/symbianstream.h"
+#include "backends/platform/symbian/src/symbianos.h"
#include <dirent.h>
#include <eikenv.h>
#include <f32file.h>
#include <bautils.h>
+#define KDriveLabelSize 30
+
/**
* Implementation of the ScummVM file system API based on POSIX.
*
@@ -37,12 +41,11 @@
*/
class SymbianFilesystemNode : public AbstractFilesystemNode {
protected:
- String _displayName;
- String _path;
- bool _isDirectory;
- bool _isValid;
- bool _isPseudoRoot;
-
+ Common::String _displayName;
+ Common::String _path;
+ TBool _isDirectory;
+ TBool _isValid;
+ TBool _isPseudoRoot;
public:
/**
* Creates a SymbianFilesystemNode with the root node as path.
@@ -54,57 +57,36 @@
/**
* Creates a SymbianFilesystemNode for a given path.
*
- * @param path String with the path the new node should point to.
+ * @param path Common::String with the path the new node should point to.
*/
- SymbianFilesystemNode(const String &path);
+ SymbianFilesystemNode(const Common::String &path);
virtual bool exists() const {
TFileName fname;
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list