AmiS 05 апр 2015, 19:15
[quote="anny"]@amis
Забыл естна ?:)
@all
Кому интересно, портанул сегодня на 68k-gcc: [url=http://kas1e.mikendezign.com/misc/dopus5/modules/xadopus_gcc_68k.jpg]screen[/url][/quote]
Сейчас поднял репозиторий. Изменений собственно не так и много относительно оригинальной версии 1.22 которую мне передал автор.. Очень много с форматированием текста. имею привычку (со времён работы над YAM) при изучении исходных текстов приводить все их к определённому стилю программирования.....
Думаю, что раз добились работы модуля, то исходные версии можно уже и похерить.
Файлы которых не было в оригинальной версии и которые добавил я:
compiler.h
LibInit.c
StartUp.c
smakefile
Историю изменений по этим файлам не скидываю.... кому они интересны.
остальные изменения от 1.22 до того что я отдал такие:
P.S: архива почему-то форум от меня не принял. Так-что кидаю в текст. Удачи.
[code]
--- XADopus.h (128)
+++ XADopus.h (129)
@@ -17,30 +17,48 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#define CATCOMP_NUMBERS
+#define XADopus_NUMBERS
#include "XADopus.strings"
-#define _DOPUS_MODULE_DEF
#include <dopus/modules.h>
#include <exec/types.h>
#include <dos/dosextens.h>
-struct FList {
+extern struct DosLibrary *DOSBase;
+extern struct Library *DOpusBase;
+extern struct Library *IntuitionBase;
+extern struct Library *GfxBase;
+extern struct Library *IconBase;
+extern struct Library *LocaleBase;
+extern struct Library *UtilityBase;
+extern struct Library *LayersBase;
+extern struct Library *WorkbenchBase;
+extern struct Library *GadToolsBase;
+extern struct Library *AslBase;
+extern struct Library *DiskfontBase;
+extern struct Library *TimerBase;
+extern struct Library *RexxSysBase;
+extern struct xadMasterBase *xadMasterBase;
+
+struct FList
+{
struct List list;
APTR entry;
UWORD dirs, files;
struct FList *Parent,*Next;
- };
+};
-struct Tree {
+struct Tree
+{
struct FileInfoBlock fib;
struct xadFileInfo *xfi;
APTR entry;
struct Tree *Next, *Child;
- };
+};
-struct xoData {
+struct xoData
+{
ULONG ArcMode, listh;
char lists[20], listpath[512], rootpath[108];
struct xadArchiveInfo *ArcInf;
@@ -62,16 +80,18 @@
struct MinList Temp;
struct path_node listp;
BOOL All;
- };
+};
-struct TempFile {
+struct TempFile
+{
struct MinNode node;
char FileName[110];
- };
+};
-struct MyPacket {
+struct MyPacket
+{
struct Message sp_Msg;
struct DosPacket sp_Pkt;
char *a7, *a8;
- };
+};
--- XADopus_data.c (128)
+++ XADopus_data.c (129)
@@ -20,16 +20,20 @@
#include "XADopus.h"
// Definition of the module
-ModuleInfo
- module_info={
+ModuleInfo module_info =
+{
1, // Version
"XADopus.module", // Module name
"XADopus.catalog", // Catalog name
NULL, // Flags
2, // Number of functions
- {0,"XADOpen",MSG_XADOPEN_DESC,FUNCF_NEED_SOURCE|FUNCF_NEED_FILES|FUNCF_SINGLE_SOURCE,0}};
+ {0,"XADOpen", MSG_XADOPEN_DESC, FUNCF_NEED_SOURCE|FUNCF_NEED_FILES|FUNCF_SINGLE_SOURCE, 0}
+// {0,"XADOpen", MSG_XADOPEN_DESC, FUNCF_NEED_SOURCE|FUNCF_NEED_FILES, 0}
+};
-ModuleFunction
- module_func={
- 1,"XADExtract",MSG_XADEXTRACT_DESC,FUNCF_NEED_SOURCE|FUNCF_NEED_DEST|FUNCF_NEED_FILES|FUNCF_SINGLE_SOURCE,0};
+ModuleFunction module_func =
+{
+// 1, "XADExtract", MSG_XADEXTRACT_DESC, FUNCF_NEED_SOURCE|FUNCF_NEED_DEST|FUNCF_NEED_FILES, 0
+ 1, "XADExtract", MSG_XADEXTRACT_DESC, FUNCF_NEED_SOURCE|FUNCF_NEED_DEST|FUNCF_NEED_FILES|FUNCF_SINGLE_SOURCE, 0
+};
--- XADopus_progress.c (128)
+++ XADopus_progress.c (129)
@@ -27,7 +27,7 @@
#include <proto/xadmaster.h>
ULONG __asm __saveds
-L_ProgressHook(register __a0 struct Hook *hook, register __a1 struct xadProgressInfo *xpi)
+ProgressHook(register __a0 struct Hook *hook, register __a1 struct xadProgressInfo *xpi)
{
struct xoData *data=hook->h_Data;
struct Library *DOpusBase;
@@ -63,7 +63,7 @@
if(data->All==TRUE) {
ret|=XADPIF_OVERWRITE;
break;
- } else if(data->All==false)
+ } else if(data->All==FALSE)
break;
sprintf(mess,DOpusGetString(data->locale,MSG_EXISTS_FORM),FilePart(xpi->xpi_FileName));
--- XADopus_strings.c (128)
+++ XADopus_strings.c (129)
@@ -17,14 +17,14 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#define CATCOMP_BLOCK
+#define XADopus_BLOCK
#include "XADopus.strings"
#include <dopus/locale.h>
// This module includes all the locale strings,
// and initialises a pointer to them.
-void
-init_locale_data(struct DOpusLocale *locale)
+void init_locale_data(struct DOpusLocale *locale)
{
- locale->li_BuiltIn=(char *)CatCompBlock;
+ locale->li_BuiltIn=(char *)XADopus_Block;
}
+
--- XADopus.c (128)
+++ XADopus.c (129)
@@ -18,6 +18,7 @@
*/
#include "XADopus.h"
+#include "compiler.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -31,13 +32,17 @@
#include <proto/xadmaster.h>
#include <libraries/xadmaster.h>
-static char *version="\0$VER: XADopus.module 1.22 (26.09.00) Written by Mladen Milinkovic <max2@iname.com>\0";
+extern struct DOpusLocale *locale;
+void init_locale_data(struct DOpusLocale *);
+extern ModuleInfo module_info;
+//static char *version="\0$VER: XADopus.module 1.22 (26.09.00) Written by Mladen Milinkovic <max2@iname.com>\0";
+
extern struct xadMasterBase *xadMasterBase;
char *viewcmds="Read Play Show HexRead AnsiRead IconInfo";
-ULONG __asm __saveds L_ProgressHook(register __a0 struct Hook *, register __a1 struct xadProgressInfo *);
+ULONG __asm __saveds ProgressHook(register __a0 struct Hook *, register __a1 struct xadProgressInfo *);
/// Error Requester
void
@@ -103,7 +108,7 @@
UBYTE x,buf[50];
while(1) {
- for(x=0;(buf[x]=*path) && (*path++ != '/');x++);
+ for(x=0;(buf[x] = *path) && (*path++ != '/');x++);
if(!buf[x]) return(cur);
buf[x]=0;
@@ -181,7 +186,7 @@
if(xfi->xfi_Flags & XADFIF_DIRECTORY)
tree->fib.fib_DirEntryType=1;
else
- tree->fib.fib_DirEntryType=-1;
+ tree->fib.fib_DirEntryType = -1;
tree->fib.fib_Size=xfi->xfi_Size;
tree->fib.fib_OwnerUID=xfi->xfi_OwnerUID;
tree->fib.fib_OwnerGID=xfi->xfi_OwnerGID;
@@ -411,7 +416,7 @@
TreeName=AllocVec(1024,0);
Drawer=AllocVec(1024,0);
- prhk.h_Entry=(ULONG (*)()) L_ProgressHook;
+ prhk.h_Entry=(ULONG (*)()) ProgressHook;
prhk.h_Data=data;
total=countchar(name)/2;
@@ -556,7 +561,7 @@
struct Tree *tmp, *cur=data->root;
char x,buf[50];
- while((*path!=':') && (*listerpath==*path)) {
+ while((*path!=':') && (*listerpath == *path)) {
path++;
listerpath++;
}
@@ -574,7 +579,7 @@
while(*path) {
tmp=cur;
path++;
- for(x=0;(buf[x]=*path) && (*path != '/');x++,path++);
+ for(x=0;(buf[x] = *path) && (*path != '/');x++,path++);
buf[x]=0;
if(!cur->Child) {
@@ -614,7 +619,7 @@
WORD sel;
Att_List *list;
- prhk.h_Entry=(ULONG (*)()) L_ProgressHook;
+ prhk.h_Entry=(ULONG (*)()) ProgressHook;
prhk.h_Data=data;
if(list=Att_NewList(NULL)) {
@@ -663,7 +668,7 @@
ULONG total=1;
BOOL over=FALSE;
- prhk.h_Entry=(ULONG (*)()) L_ProgressHook;
+ prhk.h_Entry=(ULONG (*)()) ProgressHook;
prhk.h_Data=data;
data->All=5;
@@ -730,60 +735,64 @@
///
/// Main
-int __asm __saveds
-L_Module_Entry(
- register __a0 char *args,
- register __a1 struct Screen *screen,
- register __a2 IPCData *ipc,
- register __a3 IPCData *main_ipc,
- register __d0 ULONG mod_id,
- register __d1 EXT_FUNC(func_callback))
+int __saveds __asm Module_Entry(REG(a0) char *args, REG(a1) struct Screen *screen, REG(a2) IPCData *ipc, REG(a3) IPCData *main_ipc, REG(d0) ULONG mod_id, REG(d1) EXT_FUNC(func_callback))
{
-
+ __aligned char arcname[512];
+ __aligned char buf[512];
+ char *result;
struct xoData data;
struct Tree root;
- char *result, arcname[512], buf[512];
struct function_entry *Entry;
ULONG err, total;
-
+ STRPTR filename;
+
struct MyPacket *pkt;
BOOL over = FALSE;
char *a0, *a2, *a3, *a5, *a6, *a7;
root.xfi=root.entry=root.Next=root.Child=NULL;
- data.ipc=ipc;
- data.root=&root;
- data.arcname=arcname;
- data.buf=buf;
- data.listw=NULL;
- data.cur=NULL;
- data.locale=locale;
- data.DOpusBase=DOpusBase;
- data.DOSBase=DOSBase;
- data.UtilityBase=UtilityBase;
+ data.ipc = ipc;
+ data.root = &root;
+ data.arcname = arcname;
+ data.buf = buf;
+ data.listw = NULL;
+ data.cur = NULL;
+ data.locale = locale;
+ data.DOpusBase = DOpusBase;
+ data.DOSBase = DOSBase;
+ data.UtilityBase = UtilityBase;
+
+ NewList((struct List *)&data.Temp);
- NewList((struct List *)&data.Temp);
-
data.hook.dc_Count=DOPUS_HOOK_COUNT;
- if(IPC_Command(main_ipc,HOOKCMD_GET_CALLBACKS,0,&data.hook,0,REPLY_NO_PORT)!=DOPUS_HOOK_COUNT) {
- ErrorReq(&data,DOpusGetString(locale,MSG_NO_HOOKS_ERR));
+
+ if(IPC_Command(main_ipc, HOOKCMD_GET_CALLBACKS, 0, &data.hook, 0, REPLY_NO_PORT) != DOPUS_HOOK_COUNT)
+ {
+ ErrorReq(&data, DOpusGetString(locale, MSG_NO_HOOKS_ERR));
return(0);
}
- if(!(data.rhand=NewMemHandle(NULL,NULL,MEMF_CLEAR)))
- return(0);
+ if(!(data.rhand = NewMemHandle(NULL, NULL, MEMF_CLEAR))) return(0);
+ if( !(data.listp2 = data.hook.dc_GetSource(IPCDATA(ipc), arcname)) ) return 0;
- if( (!(data.listp2=data.hook.dc_GetSource(IPCDATA(ipc),arcname))) ||
- (!(Entry=data.hook.dc_GetEntry(IPCDATA(ipc)))) )
- return(0);
+ data.hook.dc_FirstEntry(IPCDATA(ipc));
- AddPart(arcname,Entry->name,512);
- strcpy(data.rootpath,Entry->name);
- strcat(data.rootpath,":");
+ if( !(Entry=data.hook.dc_GetEntry(IPCDATA(ipc))) ) return 0;
+ filename = (STRPTR)data.hook.dc_ExamineEntry(Entry, EE_NAME);
+
+// if( (!(data.listp2 = data.hook.dc_GetSource(IPCDATA(ipc), arcname))) || (!(Entry=data.hook.dc_GetEntry(IPCDATA(ipc)))) )
+
+ AddPart(arcname, filename, 512);
+
+ strcpy(data.rootpath, filename);
+
+ strcat(data.rootpath, ":");
+
+
if(mod_id == 1) {
if(!(data.destp=data.hook.dc_GetDest(IPCDATA(ipc),data.listpath)))
return(0);
@@ -880,7 +889,7 @@
data.listh=atol(result);
FreeVec(result);
- ErrorReq(&data,"HereIAm");
+// ErrorReq(&data,"HereIAm");
if(AllocPort(&data)) {
sprintf(buf,"lister wait %s quick",data.lists);
--- XADopus.cd (128)
+++ XADopus.cd (129)
@@ -16,7 +16,7 @@
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;
-
+;
; *************************************************
; Catalog description file for XADopus.module
; *************************************************[/code]