r5462 chris_y - in /trunk/netsurf: Makefile.sources amiga/arexx.c amiga/arexx.h amiga/gui.c

netsurf at semichrome.net netsurf at semichrome.net
Mon Sep 29 20:35:31 BST 2008


Author: chris_y
Date: Mon Sep 29 14:35:30 2008
New Revision: 5462

URL: http://source.netsurf-browser.org?rev=5462&view=rev
Log:
Minimal ARexx port.

Port name: NETSURF
Commands supported: OPEN

OPEN URL/A
Opens URL specified by URL argument in new browser window.


Added:
    trunk/netsurf/amiga/arexx.c   (with props)
    trunk/netsurf/amiga/arexx.h   (with props)
Modified:
    trunk/netsurf/Makefile.sources
    trunk/netsurf/amiga/gui.c

Modified: trunk/netsurf/Makefile.sources
URL: http://source.netsurf-browser.org/trunk/netsurf/Makefile.sources?rev=5462&r1=5461&r2=5462&view=diff
==============================================================================
--- trunk/netsurf/Makefile.sources (original)
+++ trunk/netsurf/Makefile.sources Mon Sep 29 14:35:30 2008
@@ -88,7 +88,7 @@
 # S_AMIGA are sources purely for the Amiga build
 S_AMIGA := compat.c gui.c tree.c history.c hotlist.c schedule.c		\
 	thumbnail.c misc.c bitmap.c font.c filetype.c utf8.c login.c	\
-	plotters.c object.c menu.c save_pdf.c
+	plotters.c object.c menu.c save_pdf.c arexx.c
 S_AMIGA := $(addprefix amiga/,$(S_AMIGA))
 
 # S_FRAMEBUFFER are sources purely for the framebuffer build

Added: trunk/netsurf/amiga/arexx.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/arexx.c?rev=5462&view=auto
==============================================================================
--- trunk/netsurf/amiga/arexx.c (added)
+++ trunk/netsurf/amiga/arexx.c Mon Sep 29 14:35:30 2008
@@ -1,0 +1,65 @@
+/*
+ * Copyright 2008 Chris Young <chris at unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "arexx.h"
+#include <reaction/reaction_macros.h>
+#include <string.h>
+#include <proto/intuition.h>
+#include "desktop/browser.h"
+
+enum
+{
+	RX_OPEN=0,
+};
+
+STATIC VOID rx_open(struct ARexxCmd *, struct RexxMsg *);
+
+STATIC struct ARexxCmd Commands[] =
+{
+	{"OPEN",RX_OPEN,rx_open,"URL/A", 		0, 	NULL, 	0, 	0, 	NULL },
+	{ NULL, 		0, 				NULL, 		NULL, 		0, 	NULL, 	0, 	0, 	NULL }
+};
+
+void ami_arexx_init()
+{
+	if(arexx_obj = ARexxObject,
+			AREXX_HostName,"NETSURF",
+			AREXX_Commands,Commands,
+			AREXX_NoSlot,TRUE,
+			AREXX_ReplyHook,NULL,
+			AREXX_DefExtension,"nsrx",
+			End)
+	{
+		GetAttr(AREXX_SigMask, arexx_obj, &rxsig);
+	}
+}
+
+void ami_arexx_handle()
+{
+	RA_HandleRexx(arexx_obj);
+}
+
+void ami_arexx_cleanup()
+{
+	if(arexx_obj) DisposeObject(arexx_obj);
+}
+
+STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused)))
+{
+	browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,false);
+}

Propchange: trunk/netsurf/amiga/arexx.c
------------------------------------------------------------------------------
    amiga:protection = ----rwed ---- ----

Propchange: trunk/netsurf/amiga/arexx.c
------------------------------------------------------------------------------
    svn:executable = *

Added: trunk/netsurf/amiga/arexx.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/arexx.h?rev=5462&view=auto
==============================================================================
--- trunk/netsurf/amiga/arexx.h (added)
+++ trunk/netsurf/amiga/arexx.h Mon Sep 29 14:35:30 2008
@@ -1,0 +1,32 @@
+/*
+ * Copyright 2008 Chris Young <chris at unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AMIGA_AREXX_H
+#define AMIGA_AREXX_H
+
+#include <proto/arexx.h>
+#include <classes/arexx.h>
+
+void ami_arexx_init(void);
+void ami_arexx_handle(void);
+void ami_arexx_execute(char *);
+void ami_arexx_cleanup(void);
+
+Object *arexx_obj;
+ULONG rxsig;
+#endif

Propchange: trunk/netsurf/amiga/arexx.h
------------------------------------------------------------------------------
    amiga:protection = ----rwed ---- ----

Propchange: trunk/netsurf/amiga/arexx.h
------------------------------------------------------------------------------
    svn:executable = *

Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=5462&r1=5461&r2=5462&view=diff
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Mon Sep 29 14:35:30 2008
@@ -65,6 +65,7 @@
 #include "amiga/login.h"
 #include "utils/url.h"
 #include <string.h>
+#include "amiga/arexx.h"
 
 #ifdef WITH_HUBBUB
 #include <hubbub/hubbub.h>
@@ -185,6 +186,8 @@
 	}
 
 	filereq = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,NULL);
+
+	ami_arexx_init();
 
 	if(iffh = AllocIFF())
 	{
@@ -841,7 +844,7 @@
 	ULONG winsignal = 1L << sport->mp_SigBit;
 	ULONG appsig = 1L << appport->mp_SigBit;
 	ULONG schedulesig = 1L << msgport->mp_SigBit;
-    ULONG signalmask = winsignal | appsig | schedulesig;
+    ULONG signalmask = winsignal | appsig | schedulesig | rxsig;
 	ULONG signal;
 	struct Message *timermsg = NULL;
 
@@ -854,6 +857,10 @@
 	else if(signal & appsig)
 	{
 		ami_handle_appmsg();
+	}
+	else if(signal & rxsig)
+	{
+		ami_arexx_handle();
 	}
 	else if(signal & schedulesig)
 	{
@@ -928,6 +935,7 @@
 	if(iffh->iff_Stream) CloseClipboard((struct ClipboardHandle *)iffh->iff_Stream);
 	if(iffh) FreeIFF(iffh);
 
+	ami_arexx_cleanup();
 	FreeSysObject(ASOT_PORT,appport);
 	FreeSysObject(ASOT_PORT,sport);
 




More information about the netsurf-commits mailing list