Release 961013
[wine.git] / misc / toolhelp.c
blobf5f73db589b247be52fbb3b7c3959a1a49c171b2
1 /*
2 * Misc Toolhelp functions
4 * Copyright 1996 Marcus Meissner
5 */
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <string.h>
10 #include <unistd.h>
11 #include <ctype.h>
12 #include "windows.h"
13 #include "win.h"
14 #include "toolhelp.h"
15 #include "stddebug.h"
16 #include "debug.h"
17 #include "xmalloc.h"
19 /* FIXME: to make this working, we have to callback all these registered
20 * functions from all over the WINE code. Someone with more knowledge than
21 * me please do that. -Marcus
23 static struct notify
25 HTASK16 htask;
26 FARPROC16 lpfnCallback;
27 WORD wFlags;
28 } *notifys = NULL;
30 static int nrofnotifys = 0;
32 BOOL16 NotifyRegister( HTASK16 htask, FARPROC16 lpfnCallback, WORD wFlags )
34 int i;
36 dprintf_toolhelp( stddeb, "NotifyRegister(%x,%lx,%x) called.\n",
37 htask, (DWORD)lpfnCallback, wFlags );
38 for (i=0;i<nrofnotifys;i++)
39 if (notifys[i].htask==htask)
40 break;
41 if (i==nrofnotifys) {
42 if (notifys==NULL)
43 notifys=(struct notify*)xmalloc(sizeof(struct notify));
44 else
45 notifys=(struct notify*)xrealloc(notifys,sizeof(struct notify)*(nrofnotifys+1));
46 nrofnotifys++;
48 notifys[i].htask=htask;
49 notifys[i].lpfnCallback=lpfnCallback;
50 notifys[i].wFlags=wFlags;
51 return TRUE;
54 BOOL16 NotifyUnregister( HTASK16 htask )
56 int i;
58 dprintf_toolhelp( stddeb, "NotifyUnregister(%x) called.\n", htask );
59 for (i=nrofnotifys;i--;)
60 if (notifys[i].htask==htask)
61 break;
62 if (i==-1)
63 return FALSE;
64 memcpy(notifys+i,notifys+(i+1),sizeof(struct notify)*(nrofnotifys-i-1));
65 notifys=(struct notify*)xrealloc(notifys,(nrofnotifys-1)*sizeof(struct notify));
66 nrofnotifys--;
67 return TRUE;