some fixes to accented characters
[tangerine.git] / rom / dos / dopkt.c
blob21417fc612ed55f40191d78a897957e12b2a195a
1 /*
2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: English
7 */
8 #ifdef DEBUG
9 #undef DEBUG
10 #endif
11 #define DEBUG 1
12 #include <aros/debug.h>
13 #include "dos_intern.h"
15 /*****************************************************************************
17 NAME */
18 #include <proto/dos.h>
20 AROS_LH7(LONG, DoPkt,
22 /* SYNOPSIS */
23 AROS_LHA(struct MsgPort *, port, D1),
24 AROS_LHA(LONG , action, D2),
25 AROS_LHA(LONG , arg1, D3),
26 AROS_LHA(LONG , arg2, D4),
27 AROS_LHA(LONG , arg3, D5),
28 AROS_LHA(LONG , arg4, D6),
29 AROS_LHA(LONG , arg5, D7),
31 /* LOCATION */
32 struct DosLibrary *, DOSBase, 40, Dos)
34 /* FUNCTION
36 Send a dos packet to a filesystem and wait for the action to complete.
38 INPUTS
40 RESULT
42 NOTES
44 Callable from a task.
46 This function should NOT be used; it's only here for AmigaOS compatibility.
48 EXAMPLE
50 BUGS
52 SEE ALSO
54 INTERNALS
56 *****************************************************************************/
58 AROS_LIBFUNC_INIT
61 * First I create a regular dos packet and then let
62 * SendPkt rewrite it.
65 LONG res;
66 struct Process *me = (struct Process *)FindTask(NULL);
67 struct DosPacket *dp = (struct DosPacket *)AllocDosObject(DOS_STDPKT,
68 NULL);
69 struct MsgPort *replyPort;
70 struct IOFileSys *iofs = NULL;
72 BOOL i_am_process = TRUE;
74 if (NULL == dp)
76 return FALSE;
79 kprintf("Allocated packet %p\n", dp);
81 if (__is_process(me))
83 replyPort = &me->pr_MsgPort;
85 else
87 /* Make sure that tasks can use DoPkt(). */
88 replyPort = CreateMsgPort();
90 if (NULL == replyPort)
92 return FALSE;
95 i_am_process = FALSE;
98 dp->dp_Type = action;
99 dp->dp_Arg1 = arg1;
100 dp->dp_Arg2 = arg2;
101 dp->dp_Arg3 = arg3;
102 dp->dp_Arg4 = arg4;
103 dp->dp_Arg5 = arg5;
105 SendPkt(dp, port, replyPort);
107 internal_WaitPkt(replyPort, DOSBase);
109 SetIoErr(iofs->io_DosError);
111 res = dp->dp_Res1;
113 if (FALSE == i_am_process)
115 DeleteMsgPort(replyPort);
118 FreeDosObject(DOS_STDPKT, dp);
120 return res;
122 AROS_LIBFUNC_EXIT
123 } /* DoPkt */