[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00801] Re: including appropriate headers
小野寛生です
なんで、これでちゃんと動いていたのか不思議なんですが、Wnn/etc/msg.c の
patch です。今晩以降に commit する予定ですので、チェックをおねがいします。
% おっかけていないけど、使われていないとか?
bsearch の定義を削って標準のものを使うようにしたのですが、bsearch を呼び
出している箇所で、最初の引数の与えかたが間違っている気がしたので、直しま
した。compile の確認はこれからです。
動作確認は、標準ヘッダからみの修正を加えてからやります。
Index: msg.c
===================================================================
RCS file: /cvs/freewnn/FreeWnn/Wnn/etc/msg.c,v
retrieving revision 1.7
diff -u -r1.7 msg.c
--- msg.c 2001/06/18 09:09:31 1.7
+++ msg.c 2002/03/03 16:38:13
@@ -48,71 +48,11 @@
*/
#include <stdio.h>
+#include <stdlib.h>
#include "commonhd.h"
#include "wnn_os.h"
#include "msg.h"
-extern char *getenv ();
-
-#ifdef hpux
-void *
-bsearch (ky, bs, nel, width, compar)
- const void *ky;
- const void *bs;
- size_t nel;
- size_t width;
- int (*compar) (const void *, const void *);
-#else
-static char *
-bsearch (ky, bs, nel, width, compar)
- char *ky;
- char *bs;
- unsigned long nel;
- unsigned long width;
- int (*compar) ();
-#endif /* hpux */
-{
- char *key = ky;
- char *base = bs;
- int two_width = width + width;
- char *last = base + width * (nel - 1);
-
- register char *p;
- register int ret;
-#ifdef hpux
- register int tmp;
-#endif
-
- while (last >= base)
- {
- p = base + width * ((last - base) / two_width);
- ret = (*compar) ((void *) key, (void *) p);
-
- if (ret == 0)
- return ((char *) p); /* found */
-#ifdef hpux
- if (ret < 0)
- {
- tmp = p;
- tmp -= width;
- last = tmp;
- }
- else
- {
- tmp = p;
- tmp += width;
- base = tmp;
- }
-#else /* hpux */
- if (ret < 0)
- last = p - width;
- else
- base = p + width;
-#endif /* hpux */
- }
- return ((char *) 0); /* not found */
-}
-
static char *
getlang (lang)
char *lang;
@@ -228,7 +168,7 @@
register struct msg_bd *bd;
if (cd->msg_bd == 0 || cd->msg_cnt == 0)
return (NULL);
- bd = (struct msg_bd *) bsearch (id, cd->msg_bd, cd->msg_cnt, sizeof (struct msg_bd), _search);
+ bd = (struct msg_bd *) bsearch (&id, cd->msg_bd, cd->msg_cnt, sizeof (struct msg_bd), _search);
if (bd == NULL)
return (NULL);
return (bd->msg);