[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);


http://www.freewnn.org/ FreeWnn Project