- Fixed the Amiga volumes stuff in init.c, although i think it should be

removed again since it is impossible to differentiate between volumes
  using only a single character.

- Made the OS4 "show drives" code work on all amiga platforms (hopefully)



git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@468 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Pete Gordon 2009-01-08 13:57:25 +00:00
parent f3c63fe785
commit d287384d93
4 changed files with 29 additions and 39 deletions

View File

@ -57,7 +57,7 @@ else
CP = cp CP = cp
BIN = grafx2 BIN = grafx2
CFGBIN = gfxcfg CFGBIN = gfxcfg
COPT = -Wall -c -gstabs -mcrt=newlib `sdl-config --cflags` $(TTFCOPT) COPT = -Wall -c -gstabs -mcrt=newlib `sdl-config --cflags` -D__USE_INLINE__ $(TTFCOPT)
LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lft2 LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lft2
CC = gcc CC = gcc
OBJDIR = obj/amiga OBJDIR = obj/amiga

11
files.c
View File

@ -267,7 +267,7 @@ void Lire_liste_des_fichiers(byte Format_demande)
Liste_Nb_elements=Liste_Nb_repertoires+Liste_Nb_fichiers; Liste_Nb_elements=Liste_Nb_repertoires+Liste_Nb_fichiers;
} }
#ifdef __amigaos4__ #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__)
void bstrtostr( BSTR in, STRPTR out, TEXT max ) void bstrtostr( BSTR in, STRPTR out, TEXT max )
{ {
STRPTR iptr; STRPTR iptr;
@ -295,23 +295,22 @@ void Lire_liste_des_lecteurs(void)
Liste_Nb_fichiers=0; Liste_Nb_fichiers=0;
Liste_Nb_repertoires=0; Liste_Nb_repertoires=0;
// AmigaOS4 #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__)
#ifdef __amigaos4__
{ {
struct DosList *dl; struct DosList *dl;
char tmp[256]; char tmp[256];
dl = IDOS->LockDosList( LDF_VOLUMES | LDF_READ ); dl = LockDosList( LDF_VOLUMES | LDF_READ );
if( dl ) if( dl )
{ {
while( ( dl = IDOS->NextDosEntry( dl, LDF_VOLUMES | LDF_READ ) ) ) while( ( dl = NextDosEntry( dl, LDF_VOLUMES | LDF_READ ) ) )
{ {
bstrtostr( dl->dol_Name, tmp, 254 ); bstrtostr( dl->dol_Name, tmp, 254 );
strcat( tmp, ":" ); strcat( tmp, ":" );
Ajouter_element_a_la_liste( tmp, 2 ); Ajouter_element_a_la_liste( tmp, 2 );
Liste_Nb_repertoires++; Liste_Nb_repertoires++;
} }
IDOS->UnLockDosList( LDF_VOLUMES | LDF_READ ); UnLockDosList( LDF_VOLUMES | LDF_READ );
} }
} }

47
init.c
View File

@ -36,6 +36,11 @@
#include <windows.h> // GetLogicalDrives(), GetDriveType(), DRIVE_* #include <windows.h> // GetLogicalDrives(), GetDriveType(), DRIVE_*
#endif #endif
#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__)
#include <proto/exec.h>
#include <proto/dos.h>
#endif
#include "const.h" #include "const.h"
#include "struct.h" #include "struct.h"
#include "global.h" #include "global.h"
@ -67,42 +72,28 @@ void Ajouter_lecteur(char Lettre, byte Type, char *Chemin)
// Rechercher la liste et le type des lecteurs de la machine // Rechercher la liste et le type des lecteurs de la machine
#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__)
void bstrtostr( BSTR in, STRPTR out, TEXT max );
#endif
void Rechercher_drives(void) void Rechercher_drives(void)
{ {
#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__)
struct DosList *dl;
char tmp[256];
DosList *dosList; dl = LockDosList( LDF_VOLUMES | LDF_READ );
CONST ULONG lockDosListFlags = LDF_READ | LDF_VOLUMES; if( dl )
dosList = LockDosList(lockDosListFlags);
if (dosList)
{ {
dosList = NextDosEntry(dosList, LDF_VOLUMES); while( ( dl = NextDosEntry( dl, LDF_VOLUMES | LDF_READ ) ) )
while (dosList)
{ {
if (dosList->dol_Type == DLT_VOLUME dosList->dol_Name && dosList->dol_Task) bstrtostr( dl->dol_Name, tmp, 254 );
{ strcat( tmp, ":" );
TEXT name[256]; Ajouter_lecteur(':',LECTEUR_HDD,tmp);
CONST_STRPTR volume_name = (CONST_STRPTR)BADDR(dosList->dol_Name)+1;
CONST_STRPTR device_name = (CONST_STRPTR)((struct Task *)dosList->dol_Task->mp_SigTask)->tc_Node.ln_Name;
BPTR volume_lock;
stccpy(name, volume_name, sizeof(name));
strncat(name, ":", sizeof(name));
volume_lock = Lock(name, SHARED_LOCK);
if (volume_lock)
{
Ajouter_lecteur(device_name[0],LECTEUR_HDD,name);
UnLock(volume_lock);
} }
UnLockDosList( LDF_VOLUMES | LDF_READ );
} }
dosList = NextDosEntry(dosList, LDF_VOLUMES);
}
UnLockDosList(lockDosListFlags);
}
#elif defined (__WIN32__) #elif defined (__WIN32__)

View File

@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#if(!defined(__WIN32__)) #if(!defined(__WIN32__))&&(!defined(__amigaos4__))&&(!defined(__AROS__))&&(!defined(__MORPHOS__))
// We don't use autoconf and all that in grafx2, so let's do the config here ... // We don't use autoconf and all that in grafx2, so let's do the config here ...
#define MOUNTED_GETMNTENT1 #define MOUNTED_GETMNTENT1