vfs: check userland buffers before reading them.
[haiku.git] / src / preferences / appearance / SysCursorAPI.cpp
blobf7eb6d0e7ff05310e1bd1d2500cc4becab025d33
1 #include <PortLink.h>
2 #include <ServerProtocol.h>
3 #include <OS.h>
4 #include "SysCursorAPI.h"
6 // TODO R2: tweak the BBitmap and BCursor headers
8 void set_syscursor(cursor_which which, const BCursor *cursor)
10 /* port_id server=find_port(SERVER_PORT_NAME);
11 if(fServerFrom!=B_NAME_NOT_FOUND)
13 PortLink link(server);
14 link.SetOpCode(AS_SET_SYSCURSOR_BCURSOR);
15 link.Attach<cursor_which>(which);
16 link.Attach<int32>(cursor->m_serverToken);
17 link.Flush();
22 void set_syscursor(cursor_which which, const BBitmap *bitmap)
24 /* port_id server=find_port(SERVER_PORT_NAME);
25 if(fServerFrom!=B_NAME_NOT_FOUND)
27 PortLink link(server);
28 link.SetOpCode(AS_SET_SYSCURSOR_BBITMAP);
29 link.Attach<cursor_which>(which);
30 link.Attach<int32>(cursor->fToken);
31 link.Flush();
36 cursor_which get_syscursor(void)
38 port_id server=find_port(SERVER_PORT_NAME);
39 if(server!=B_NAME_NOT_FOUND)
41 int32 code;
42 BPrivate::PortLink link(server);
44 link.StartMessage(AS_GET_SYSCURSOR);
45 link.GetNextMessage(code);
47 if(code==SERVER_TRUE)
49 cursor_which which;
50 link.Read<cursor_which>(&which);
51 return which;
54 return B_CURSOR_INVALID;
57 void setcursor(cursor_which which)
59 port_id server=find_port(SERVER_PORT_NAME);
60 if(server!=B_NAME_NOT_FOUND)
62 BPrivate::PortLink link(server);
63 link.StartMessage(AS_SET_CURSOR_SYSTEM);
64 link.Flush();