summaryrefslogtreecommitdiff
path: root/amiga/os3support.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/os3support.c')
-rw-r--r--amiga/os3support.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/amiga/os3support.c b/amiga/os3support.c
index 613701cc5..3b42685a5 100644
--- a/amiga/os3support.c
+++ b/amiga/os3support.c
@@ -23,6 +23,21 @@
#ifndef __amigaos4__
#include "os3support.h"
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <proto/exec.h>
+#include <proto/intuition.h>
+#include <proto/dos.h>
+#include <proto/utility.h>
+
+#include <intuition/gadgetclass.h>
+
+#define SUCCESS (TRUE)
+#define FAILURE (FALSE)
+#define NO !
+
/* DOS */
int64 GetFileSize(BPTR fh)
{
@@ -37,6 +52,19 @@ int64 GetFileSize(BPTR fh)
return (int64)size;
}
+void FreeSysObject(ULONG type, APTR obj)
+{
+ switch(type) {
+ case ASOT_PORT:
+ DeleteMsgPort(obj);
+ break;
+ case ASOT_IOREQUEST:
+ DeleteIORequest(obj);
+ break;
+ }
+}
+
+
/* Exec */
struct Node *GetHead(struct List *list)
{
@@ -49,6 +77,52 @@ struct Node *GetHead(struct List *list)
return res;
}
+/* Intuition */
+uint32 GetAttrs(Object *obj, Tag tag1, ...)
+{
+ va_list ap;
+ Tag tag = tag1;
+ ULONG data = 0;
+ int i = 0;
+
+ va_start(ap, tag1);
+
+ while(tag != TAG_DONE) {
+ data = va_arg(ap, ULONG);
+ i += GetAttr(tag, obj, (void *)data);
+ tag = va_arg(ap, Tag);
+ }
+ va_end(ap);
+
+ return i;
+}
+
+ULONG RefreshSetGadgetAttrsA(struct Gadget *g, struct Window *w, struct Requester *r, struct TagItem *tags)
+{
+ ULONG retval;
+ BOOL changedisabled = FALSE;
+ BOOL disabled;
+
+ if (w) {
+ if (FindTagItem(GA_Disabled,tags)) {
+ changedisabled = TRUE;
+ disabled = g->Flags & GFLG_DISABLED;
+ }
+ }
+ retval = SetGadgetAttrsA(g,w,r,tags);
+ if (w && (retval || (changedisabled && disabled != (g->Flags & GFLG_DISABLED)))) {
+ RefreshGList(g,w,r,1);
+ retval = 1;
+ }
+ return retval;
+}
+
+ULONG RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1, ...)
+{
+ return RefreshSetGadgetAttrsA(g,w,r,(struct TagItem *) &tag1);
+}
+
+
/* Utility */
struct FormatContext
{
@@ -171,5 +245,19 @@ char *strlwr(char *str)
return str;
}
+
+int scandir(const char *dir, struct dirent ***namelist,
+ int (*filter)(const struct dirent *),
+ int (*compar)(const struct dirent **, const struct dirent **))
+{
+ /*\todo stub function, needs writing, preferably into clib2 */
+ return 0;
+}
+
+long long int strtoll(const char *nptr, char **endptr, int base)
+{
+ return (long long int)strtol(nptr, endptr, base);
+}
+
#endif