[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00358] PATCH: gets_cur & getws_cur size limit (Re: security problem of jserver)



 $B85LZ$G$9!#(B

 $B$H$j$"$($:%Q%C%A$r:n$C$?$N$GN.$7$F$*$-$^$9!#(B
 $B$3$l0J30$K$b7j$OBt;3$"$j$=$&$J$N$G?o;~=$@5$7$F$$$/I,MW$,$"(B
 $B$k$+$H!#(B

 1. freewnn-size_limit.diff 

  gets_cur $B$H(B getws_cur $B$Ge$K=q$-9~$^(B
  $B$J$$$h$&$K=$@5$7$^$9!#(B
  $B$H$j$"$($:$J$b$N$J$N$G!"$3$N=$@5$@$1$G$O(B buffer overflow 
  $B$O>C$;$^$;$s$,:GDc8B$NBP=h$K$O$J$k$H;W$$$^$9!#(B

 2. freewnn-mkdir.diff

  $BA0$K$b=P$7$?5-21$,F|$NL\$r8+$J$+$C$?$N$G$b$&0lEY!#(B

  mkdir() $B$,L5$$$HH=Dj$5$l$?>l9g$K(B system() $B$G(B /bin/mkdir $B$r(B
  $B8F$S=P$7$F$$$k$N$r=$@5!#(B
  (Wnn/etc/mkdir.c $B$r?75,$K:n$C$F$$$^$9!#(B)

  $B$3$C$A$O$b$C$H3Z$K0-5:$,$G$-$^$9$N$G(B 
  freewnn-size_limit.diff $B$rEv$F$k$J$i0l=o$KEv$F$F2<$5$$!#(B

  mkdir() $B$r;}$C$F$$$F$b0J2<$N>r7o$KEv$F$O$^$i$J$$>l9g$O(B 
  mkdir() $B$r;}$C$F$$$J$$$HH=Dj$5$l$^$9$N$GCm0U$7$F2<$5$$!#(B
>defined(BSD42) || defined(uniosu) || defined(UX386) || defined(DGUX)


# $B$"!"(Bconfigure $B$KBP$9$k(B diff $B$OF~$C$F$J$$$N$G(B autoconf $B$7$F(B
# $B2<$5$$!#(B

sin.
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/de.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/de.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/de.c	Thu Feb 24 00:31:33 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/de.c	Thu Mar  9 14:24:03 2000
***************
*** 48,53 ****
--- 48,57 ----
  
  #include <sys/ioctl.h>
  
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #if (defined(__unix__) || defined(unix)) && !defined(USG)
  #include <sys/param.h>
  #endif
***************
*** 599,617 ****
  /*------*/
  
  /**     **/
! void
! gets_cur (cp)
!      register char *cp;
  {
!   while ((*cp++ = getc_cur ()) != '\0');
  }
  
  /**     **/
! void
! getws_cur (cp)
!      register w_char *cp;
  {
!   while ((*cp++ = get2_cur ()) != 0);
  }
  
  /**     カレント・クライアントから2バイト取る   **/
--- 603,647 ----
  /*------*/
  
  /**     **/
! char *
! gets_cur (buffer, buffer_size)
!      char *buffer;
!      size_t buffer_size;
  {
!   char *b;
! 
!   if (!buffer || !buffer_size)
!     return NULL;
! 
!   b = buffer;
! 
!   while (--buffer_size && (*b = getc_cur ()) != '\0')
!     b++;
! 
!   *b = '\0';
! 
!   return buffer;
  }
  
  /**     **/
! w_char *
! getws_cur (buffer, buffer_size)
!      w_char *buffer;
!      size_t buffer_size;
  {
!   w_char *b;
! 
!   if (!buffer || !buffer_size)
!     return NULL;
! 
!   b = buffer;
! 
!   while (--buffer_size && (*b = get2_cur ()) != 0)
!     b++;
!   
!   *b = 0;
! 
!   return buffer;
  }
  
  /**     カレント・クライアントから2バイト取る   **/
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/de_header.h FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/de_header.h
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/de_header.h	Thu Feb 24 00:31:35 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/de_header.h	Thu Mar  9 14:32:12 2000
***************
*** 183,188 ****
--- 183,196 ----
  
  extern char lang_dir[];
  
+ #if !defined(__P)
+ #if (defined(__STDC_) && __STDC__) || defined(_cplusplus)
+ #define __P(p) p
+ #else
+ #define __P(p) ()
+ #endif
+ #endif
+ 
  /* atojis.c */
  extern w_char *get_giji_knj ();
  extern void giji_hindoup ();
***************
*** 216,223 ****
  /* de.c */
  extern void del_client ();
  extern void demon_fin ();
! extern void gets_cur ();
! extern void getws_cur ();
  extern int get2_cur ();
  extern int get4_cur ();
  extern int getc_cur ();
--- 224,231 ----
  /* de.c */
  extern void del_client ();
  extern void demon_fin ();
! extern char *gets_cur __P ((char *buffer, size_t buffer_size));
! extern w_char *getws_cur __P ((w_char *buffer, size_t buffer_size));
  extern int get2_cur ();
  extern int get4_cur ();
  extern int getc_cur ();
***************
*** 234,240 ****
  /* dispatch.c */
  extern void do_command ();
  extern void get_file_name ();
! extern void expand_file_name ();
  extern void error_ret ();
  /* do_dic_env.c */
  extern void js_dic_add ();
--- 242,248 ----
  /* dispatch.c */
  extern void do_command ();
  extern void get_file_name ();
! extern void expand_file_name __P ((char *p));
  extern void error_ret ();
  /* do_dic_env.c */
  extern void js_dic_add ();
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/dispatch.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/dispatch.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/dispatch.c	Thu Feb 24 00:31:33 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/dispatch.c	Thu Mar  9 14:35:37 2000
***************
*** 33,40 ****
--- 33,46 ----
   *      Command Dispatch routine
   */
  
+ #include <config.h>
+ 
  #include <stdio.h>
  
+ #if defined(HAVE_SYS_TYPES_H)
+ #include "sys/types.h"
+ #endif
+ 
  #include "commonhd.h"
  #include "demcom.h"
  #include "de_header.h"
***************
*** 237,259 ****
   */
  
  void
! get_file_name (p)
!      register char *p;
  {
!   gets_cur (p);
!   if (p[0] == 0)
!     {
!       return;
!     }
!   expand_file_name (p);
  }
  
  void
  expand_file_name (p)
!      register char *p;
  {
    char path[FILENAME];
!   register char *q;
    if (*p != '/')
      {
        strcpy (path, jserver_dir);
--- 243,266 ----
   */
  
  void
! get_file_name (buffer, buffer_size)
!      char *buffer;
!      size_t buffer_size;
  {
!   buffer = gets_cur (buffer, buffer_size);
! 
!   if (!buffer || *buffer == '\0')
!     return;
! 
!   expand_file_name (buffer);
  }
  
  void
  expand_file_name (p)
!      char *p;
  {
    char path[FILENAME];
!   char *q;
    if (*p != '/')
      {
        strcpy (path, jserver_dir);
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_dic_env.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_dic_env.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_dic_env.c	Thu Feb 24 00:31:33 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_dic_env.c	Thu Mar  9 13:29:43 2000
***************
*** 59,66 ****
    nice = get4_cur ();
    rw = get4_cur ();
    hrw = get4_cur ();
!   gets_cur (pw);
!   gets_cur (pw1);
    rev = get4_cur ();            /* rev is to add it as reverse dict */
  
    error1 ("dic_add: eid=%d,fid=%d,hfid=%d", eid, fid, hfid);
--- 59,66 ----
    nice = get4_cur ();
    rw = get4_cur ();
    hrw = get4_cur ();
!   gets_cur (pw, WNN_PASSWD_LEN);
!   gets_cur (pw1, WNN_PASSWD_LEN);
    rev = get4_cur ();            /* rev is to add it as reverse dict */
  
    error1 ("dic_add: eid=%d,fid=%d,hfid=%d", eid, fid, hfid);
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_dic_no.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_dic_no.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_dic_no.c	Thu Feb 24 00:31:34 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_dic_no.c	Thu Mar  9 14:31:16 2000
***************
*** 132,140 ****
    w_char yomi[LENGTHYOMI], kanji[LENGTHKANJI], comment[LENGTHKANJI];
    envi = get4_cur ();           /* env_id */
    dic_no = get4_cur ();
!   getws_cur (yomi);
!   getws_cur (kanji);
!   getws_cur (comment);
    hinsi = get4_cur ();
    hindo = get4_cur ();
    ret = word_add (envi, dic_no, yomi, kanji, hinsi, hindo, comment);
--- 132,140 ----
    w_char yomi[LENGTHYOMI], kanji[LENGTHKANJI], comment[LENGTHKANJI];
    envi = get4_cur ();           /* env_id */
    dic_no = get4_cur ();
!   getws_cur (yomi, LENGTHYOMI);
!   getws_cur (kanji, LENGTHKANJI);
!   getws_cur (comment, LENGTHKANJI);
    hinsi = get4_cur ();
    hindo = get4_cur ();
    ret = word_add (envi, dic_no, yomi, kanji, hinsi, hindo, comment);
***************
*** 177,183 ****
    int n;
  
    c_env = env[get4_cur ()];
!   getws_cur (yomi);
  #ifdef  CONVERT_from_TOP
    Strcpy (ryomi, yomi);
  #else
--- 177,183 ----
    int n;
  
    c_env = env[get4_cur ()];
!   getws_cur (yomi, LENGTHYOMI);
  #ifdef  CONVERT_from_TOP
    Strcpy (ryomi, yomi);
  #else
***************
*** 210,216 ****
  
    get4_cur ();                  /* env_id */
    dic_no = get4_cur ();
!   getws_cur (yomi);
  #ifdef  CONVERT_from_TOP
    Strcpy (ryomi, yomi);
  #else
--- 210,216 ----
  
    get4_cur ();                  /* env_id */
    dic_no = get4_cur ();
!   getws_cur (yomi, LENGTHYOMI);
  #ifdef  CONVERT_from_TOP
    Strcpy (ryomi, yomi);
  #else
***************
*** 243,249 ****
    envi = get4_cur ();           /* env_id */
    dic_no = get4_cur ();
    entry = get4_cur ();
!   getws_cur (comment);
  
    ret = word_comment_set (envi, dic_no, entry, comment);
    if (ret == -1)
--- 243,249 ----
    envi = get4_cur ();           /* env_id */
    dic_no = get4_cur ();
    entry = get4_cur ();
!   getws_cur (comment, LENGTHKANJI);
  
    ret = word_comment_set (envi, dic_no, entry, comment);
    if (ret == -1)
***************
*** 401,407 ****
    w_char name[WNN_HINSI_NAME_LEN];
    int no;
  
!   getws_cur (name);
  
    if ((no = wnn_hinsi_number (name)) == -1)
      {
--- 401,407 ----
    w_char name[WNN_HINSI_NAME_LEN];
    int no;
  
!   getws_cur (name, WNN_HINSI_NAME_LEN);
  
    if ((no = wnn_hinsi_number (name)) == -1)
      {
***************
*** 427,433 ****
  
    envi = get4_cur ();
    dic_no = get4_cur ();
!   getws_cur (name);
  
    if (dic_no == -1)
      {
--- 427,433 ----
  
    envi = get4_cur ();
    dic_no = get4_cur ();
!   getws_cur (name, WNN_HINSI_NAME_LEN);
  
    if (dic_no == -1)
      {
***************
*** 564,570 ****
  
    envi = get4_cur ();
    dic_no = get4_cur ();
!   getws_cur (table);
  
  
    if (!dic_in_envp (dic_no, envi))
--- 564,570 ----
  
    envi = get4_cur ();
    dic_no = get4_cur ();
!   getws_cur (table, HEAP_LEN);
  
  
    if (!dic_in_envp (dic_no, envi))
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_env.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_env.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_env.c	Thu Feb 24 00:31:34 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_env.c	Thu Mar  9 15:02:48 2000
***************
*** 60,69 ****
    char tmp_buf[256];
  
    version = get4_cur ();
!   gets_cur (tmp_buf);
    tmp_buf[WNN_HOSTLEN - 1] = '\0';      /* truncate by WNN_HOSTLEN */
    strcpy (c_c->host_name, tmp_buf);
!   gets_cur (tmp_buf);
    tmp_buf[WNN_ENVNAME_LEN - 1] = '\0';  /* truncate by WNN_ENVNAME_LEN */
    strcpy (c_c->user_name, tmp_buf);
    error1 ("Inet user=%s@%s\n", c_c->user_name, c_c->host_name);
--- 60,69 ----
    char tmp_buf[256];
  
    version = get4_cur ();
!   gets_cur (tmp_buf, 256);
    tmp_buf[WNN_HOSTLEN - 1] = '\0';      /* truncate by WNN_HOSTLEN */
    strcpy (c_c->host_name, tmp_buf);
!   gets_cur (tmp_buf, 256);
    tmp_buf[WNN_ENVNAME_LEN - 1] = '\0';  /* truncate by WNN_ENVNAME_LEN */
    strcpy (c_c->user_name, tmp_buf);
    error1 ("Inet user=%s@%s\n", c_c->user_name, c_c->host_name);
***************
*** 111,117 ****
  {
    char n[256];
    register int x;
!   gets_cur (n);
    x = conn1 (n);
    if (x == -1)
      {
--- 111,117 ----
  {
    char n[256];
    register int x;
!   gets_cur (n, 256);
    x = conn1 (n);
    if (x == -1)
      {
***************
*** 187,193 ****
  {
    char n[256];
  
!   gets_cur (n);
    if (find_env_by_name (n) != -1)
      {                           /* exist */
        put4_cur (1);
--- 187,193 ----
  {
    char n[256];
  
!   gets_cur (n, 256);
    if (find_env_by_name (n) != -1)
      {                           /* exist */
        put4_cur (1);
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_filecom.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_filecom.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_filecom.c	Thu Feb 24 00:31:34 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_filecom.c	Thu Mar  9 14:19:48 2000
***************
*** 75,81 ****
    int x;
    int err = 0;
    err = envhandle ();
!   get_file_name (path);
  
    if (err == -1)
      {
--- 75,81 ----
    int x;
    int err = 0;
    err = envhandle ();
!   get_file_name (path, FILENAME);
  
    if (err == -1)
      {
***************
*** 106,112 ****
    int eid;
  
    eid = envhandle ();
!   get_file_name (path);
    if (eid == -1)
      {
        error_ret ();
--- 106,112 ----
    int eid;
  
    eid = envhandle ();
!   get_file_name (path, FILENAME);
    if (eid == -1)
      {
        error_ret ();
***************
*** 139,145 ****
    int amode;
    envhandle ();
    amode = get4_cur ();
!   get_file_name (path);
  
  #ifdef WRITE_CHECK
    check_backup (path);
--- 139,145 ----
    int amode;
    envhandle ();
    amode = get4_cur ();
!   get_file_name (path, FILENAME);
  
  #ifdef WRITE_CHECK
    check_backup (path);
***************
*** 232,238 ****
    char n[FILENAME];
  
    get4_cur ();                  /* env_id */
!   get_file_name (n);
  
    put4_cur (file_stat (n));
    putc_purge ();
--- 232,238 ----
    char n[FILENAME];
  
    get4_cur ();                  /* env_id */
!   get_file_name (n, FILENAME);
  
    put4_cur (file_stat (n));
    putc_purge ();
***************
*** 381,389 ****
  
    env_id = get4_cur ();         /* env_id */
    fid = get4_cur ();
!   get_file_name (fn);
!   getws_cur (com);
!   gets_cur (hpasswd);
    if (find_fid_in_env (env_id, fid) == -1)
      {                           /* valid */
        wnn_errorno = WNN_FID_ERROR;
--- 381,389 ----
  
    env_id = get4_cur ();         /* env_id */
    fid = get4_cur ();
!   get_file_name (fn, FILE_NAME_L);
!   getws_cur (com, 1024);
!   gets_cur (hpasswd, WNN_PASSWD_LEN);
    if (find_fid_in_env (env_id, fid) == -1)
      {                           /* valid */
        wnn_errorno = WNN_FID_ERROR;
***************
*** 460,469 ****
    w_char com[1024];
    char passwd[WNN_PASSWD_LEN], hpasswd[WNN_PASSWD_LEN];
    get4_cur ();                  /* env_id */
!   get_file_name (fn);
!   getws_cur (com);
!   gets_cur (passwd);
!   gets_cur (hpasswd);
    type = get4_cur ();
  
    if (type != WNN_REV_DICT &&
--- 460,469 ----
    w_char com[1024];
    char passwd[WNN_PASSWD_LEN], hpasswd[WNN_PASSWD_LEN];
    get4_cur ();                  /* env_id */
!   get_file_name (fn, FILE_NAME_L);
!   getws_cur (com, 1024);
!   gets_cur (passwd, WNN_PASSWD_LEN);
!   gets_cur (hpasswd, WNN_PASSWD_LEN);
    type = get4_cur ();
  
    if (type != WNN_REV_DICT &&
***************
*** 502,508 ****
  
    envi = get4_cur ();           /* env_id */
    fid = get4_cur ();
!   getws_cur (comment);
  
    if (find_fid_in_env (envi, fid) == -1)
      {                           /* valid */
--- 502,508 ----
  
    envi = get4_cur ();           /* env_id */
    fid = get4_cur ();
!   getws_cur (comment, WNN_COMMENT_LEN);
  
    if (find_fid_in_env (envi, fid) == -1)
      {                           /* valid */
***************
*** 612,618 ****
    int x;
  
  /*  get4_cur(); env_id */
!   get_file_name (n);
  
    if ((x = file_loaded (n)) < 0)
      put4_cur (-1);
--- 612,618 ----
    int x;
  
  /*  get4_cur(); env_id */
!   get_file_name (n, FILE_NAME_L);
  
    if ((x = file_loaded (n)) < 0)
      put4_cur (-1);
***************
*** 741,747 ****
    put4_cur (1);
    putc_purge ();
  
!   gets_cur (n);
  
    /*     read file       */
    files[fid].localf = REMOTE;
--- 741,747 ----
    put4_cur (1);
    putc_purge ();
  
!   gets_cur (n, FILE_NAME_L);
  
    /*     read file       */
    files[fid].localf = REMOTE;
***************
*** 768,774 ****
    int env_id, fid;
  
    env_id = get4_cur ();         /* env_id */
!   get_file_name (n);
  
    fid = file_loaded (n);
    if (fid == -1)
--- 768,774 ----
    int env_id, fid;
  
    env_id = get4_cur ();         /* env_id */
!   get_file_name (n, FILE_NAME_L);
  
    fid = file_loaded (n);
    if (fid == -1)
***************
*** 850,856 ****
    char n[FILE_NAME_L];
    env_id = get4_cur ();         /* env_id */
    fid = get4_cur ();
!   get_file_name (n);
  
    if (find_fid_in_env (env_id, fid) == -1)
      {                           /* valid */
--- 850,856 ----
    char n[FILE_NAME_L];
    env_id = get4_cur ();         /* env_id */
    fid = get4_cur ();
!   get_file_name (n, FILE_NAME_L);
  
    if (find_fid_in_env (env_id, fid) == -1)
      {                           /* valid */
***************
*** 1051,1058 ****
    char passwd[WNN_PASSWD_LEN];
    int x;
  
!   get_file_name (n);
!   gets_cur (passwd);
  
    x = file_remove (n, passwd);
    if (x == -1)
--- 1051,1058 ----
    char passwd[WNN_PASSWD_LEN];
    int x;
  
!   get_file_name (n, FILE_NAME_L);
!   gets_cur (passwd, WNN_PASSWD_LEN);
  
    x = file_remove (n, passwd);
    if (x == -1)
***************
*** 1123,1130 ****
    envi = get4_cur ();           /* env_id */
    fid = get4_cur ();
    which = get4_cur ();
!   gets_cur (old);
!   gets_cur (new);
  
    if (find_fid_in_env (envi, fid) == -1)
      {
--- 1123,1130 ----
    envi = get4_cur ();           /* env_id */
    fid = get4_cur ();
    which = get4_cur ();
!   gets_cur (old, WNN_PASSWD_LEN);
!   gets_cur (new, WNN_PASSWD_LEN);
  
    if (find_fid_in_env (envi, fid) == -1)
      {
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_henkan.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_henkan.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_henkan.c	Thu Feb 24 00:31:34 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_henkan.c	Thu Mar  9 14:36:18 2000
***************
*** 29,34 ****
--- 29,40 ----
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
+ #include <config.h>
+ 
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #include "commonhd.h"
  #include "jslib.h"
  #include "kaiseki.h"
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_henkan1.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_henkan1.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_henkan1.c	Thu Feb 24 00:31:34 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_henkan1.c	Thu Mar  9 14:36:46 2000
***************
*** 29,37 ****
--- 29,43 ----
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
+ #include <config.h>
+ 
  #include <stdio.h>
  #include <ctype.h>
  
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #include "demcom.h"
  #include "commonhd.h"
  #include "de_header.h"
***************
*** 94,107 ****
  }
  
  static void
! get_fzk_vec (hinsi, fzk, vec, vec1)
       register int *hinsi;
       register int *vec;
       register int *vec1;
-      register w_char *fzk;
  {
    *hinsi = get4_cur ();
!   getws_cur (fzk);
    *vec = get4_cur ();
    *vec1 = get4_cur ();
  }
--- 100,114 ----
  }
  
  static void
! get_fzk_vec (hinsi, fzk, fzk_size, vec, vec1)
       register int *hinsi;
+      register w_char *fzk;
+      register size_t fzk_size;
       register int *vec;
       register int *vec1;
  {
    *hinsi = get4_cur ();
!   getws_cur (fzk, fzk_size);
    *vec = get4_cur ();
    *vec1 = get4_cur ();
  }
***************
*** 147,153 ****
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, &vec, &vec1);
    vec2 = get4_cur ();
    if (err == -1)
      {
--- 154,160 ----
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, FZK_L, &vec, &vec1);
    vec2 = get4_cur ();
    if (err == -1)
      {
***************
*** 203,209 ****
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
--- 210,216 ----
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, FZK_L, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
***************
*** 257,263 ****
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
--- 264,270 ----
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, FZK_L, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
***************
*** 311,317 ****
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
--- 318,324 ----
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, FZK_L, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
***************
*** 365,371 ****
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
--- 372,378 ----
    c_env = env[eid];
    end = maxchg - 1;
    err = henkan_setup ();
!   get_fzk_vec (&hinsi, fzk, FZK_L, &vec, &vec1);
    if (err == -1)
      {
        error_ret ();             /* ERROR */
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/jishoop.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/jishoop.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/jishoop.c	Thu Feb 24 00:31:37 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/jishoop.c	Thu Mar  9 14:37:12 2000
***************
*** 29,35 ****
--- 29,42 ----
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
+ #include <config.h>
+ 
  #include <stdio.h>
+ 
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #include "commonhd.h"
  #include "de_header.h"
  #include "jdata.h"
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/malloc.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/malloc.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/malloc.c	Thu Feb 24 00:31:37 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/malloc.c	Thu Mar  9 14:37:48 2000
***************
*** 29,35 ****
--- 29,42 ----
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
+ #include <config.h>
+ 
  #include <stdio.h>
+ 
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #include "wnn_malloc.h"
  #undef  malloc
  #undef  realloc
diff -cdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/readfile.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/readfile.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/readfile.c	Thu Feb 24 00:31:38 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/readfile.c	Thu Mar  9 14:38:05 2000
***************
*** 33,39 ****
--- 33,46 ----
    (Updatable, Stable) dictionary read routine.
  */
  
+ #include <config.h>
+ 
  #include <stdio.h>
+ 
+ #if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+ 
  #include "commonhd.h"
  #include "de_header.h"
  #include "jdata.h"
diff -cdr FreeWnn-1.1.1-a016/Xsi/config.h.in FreeWnn-1.1.1-a016-s01/Xsi/config.h.in
*** FreeWnn-1.1.1-a016/Xsi/config.h.in	Tue Feb  1 22:18:03 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/config.h.in	Thu Mar  9 14:25:23 2000
***************
*** 29,36 ****
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
! #define HAVE_UNISTD_H 0
! 
  
  /* *_t が定義されているか? (定義されていればここでは undef になる) */
  #undef time_t
--- 29,36 ----
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
! #undef HAVE_UNISTD_H
! #undef HAVE_SYS_TYPES_H
  
  /* *_t が定義されているか? (定義されていればここでは undef になる) */
  #undef time_t
diff -cdr FreeWnn-1.1.1-a016/Xsi/configure.in FreeWnn-1.1.1-a016-s01/Xsi/configure.in
*** FreeWnn-1.1.1-a016/Xsi/configure.in	Sun Feb 13 18:56:00 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/configure.in	Thu Mar  9 14:25:01 2000
***************
*** 234,240 ****
  AC_PATH_X
  AC_HEADER_STDC
  AC_HEADER_SYS_WAIT
! AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sgtty.h strings.h sys/file.h sys/ioctl.h sys/time.h termio.h unistd.h)
  
  dnl
  dnl Checks for typedefs, structures, and compiler characteristics.
--- 234,240 ----
  AC_PATH_X
  AC_HEADER_STDC
  AC_HEADER_SYS_WAIT
! AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sgtty.h strings.h sys/file.h sys/ioctl.h sys/time.h termio.h unistd.h sys/types.h)
  
  dnl
  dnl Checks for typedefs, structures, and compiler characteristics.
diff -cNdr FreeWnn-1.1.1-a016/Xsi/Wnn/etc/mkdir.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/etc/mkdir.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/etc/mkdir.c	Thu Jan  1 09:00:00 1970
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/etc/mkdir.c	Thu Mar  9 15:16:41 2000
***************
*** 0 ****
--- 1,76 ----
+ /*
+  *  $Id: copyright.h $
+  */
+ 
+ /*
+  * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
+  * This file is part of FreeWnn.
+  * 
+  * Copyright Kyoto University Research Institute for Mathematical Sciences
+  *                 1987, 1988, 1989, 1990, 1991, 1992
+  * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
+  * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
+  * Copyright FreeWnn Project 1999, 2000
+  *
+  * Maintainer:  FreeWnn Project   <freewnn@tomo.gr.jp>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation; either version 2 of the License, or
+  * (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
+ #include <config.h>
+ 
+ #if !defined(HAVE_MKDIR)
+ 
+ #include <stdlib.h>
+ 
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ 
+ #if !defined(WIFEXITED)
+ #define WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+ #endif /* !WIFEXITED */
+ #if !defined(WIFSIGNALED)
+ #define WTERMSIG(status) ((status) & 0x7f)
+ #endif /* !WIFSIGNALED */
+ #if !defined(WIFSTOPPED)
+ #define WSTOPSIG(status) WEXITSTATUS(status)
+ #endif /* !WIFSTOPPED */
+ #if !defined(WIFEXITED)
+ #define WIFEXITED(status) (__WTERMSIG(status) == 0)
+ #endif /* !WIFEXITED */
+ 
+ int
+ mkdir (path, mode)
+      const char *path;
+      mode_t mode;
+ {
+   const char *args[3];
+   int status;
+ 
+   if (!path)
+     return -1;
+ 
+   args[0] = "/bin/mkdir";
+   args[1] = path;
+   args[2] = NULL;
+   
+   if (!fork ())
+     execv (args[0], args);
+   else 
+     wait (&status);
+   
+   return !(WIFEXITED (status));
+ }
+ #endif
diff -cNdr FreeWnn-1.1.1-a016/Xsi/Wnn/jlib/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jlib/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jlib/Makefile.in	Fri Jan 21 00:57:25 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jlib/Makefile.in	Thu Mar  9 15:31:16 2000
***************
*** 63,74 ****
  OBJ7= strings.o
  SRC8= $(WNNETCSRC)/bcopy.c
  OBJ8= bcopy.o
  LOCAL_RKSRCS= $(WNNROMKANSRC)/rk_bltinfn.c 	$(WNNROMKANSRC)/rk_main.c 	$(WNNROMKANSRC)/rk_modread.c 	$(WNNROMKANSRC)/rk_read.c 	$(WNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(WNNROMKANSRC)/rk_bltinfn.o 	$(WNNROMKANSRC)/rk_main.o 	$(WNNROMKANSRC)/rk_modread.o 	$(WNNROMKANSRC)/rk_read.o 	$(WNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
! LOCAL_ETCOBJS = $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8)
  SRCS= $(SRC1) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
--- 63,77 ----
  OBJ7= strings.o
  SRC8= $(WNNETCSRC)/bcopy.c
  OBJ8= bcopy.o
+ SRC9= $(WNNETCSRC)/mkdir.c
+ OBJ9= mkdir.o
+ 
  LOCAL_RKSRCS= $(WNNROMKANSRC)/rk_bltinfn.c 	$(WNNROMKANSRC)/rk_main.c 	$(WNNROMKANSRC)/rk_modread.c 	$(WNNROMKANSRC)/rk_read.c 	$(WNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(WNNROMKANSRC)/rk_bltinfn.o 	$(WNNROMKANSRC)/rk_main.o 	$(WNNROMKANSRC)/rk_modread.o 	$(WNNROMKANSRC)/rk_read.o 	$(WNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8) $(SRC9)
! LOCAL_ETCOBJS = $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8) $(OBJ9)
  SRCS= $(SRC1) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
***************
*** 148,153 ****
--- 151,159 ----
  	$(CC) -c $(CFLAGS)  $(WNNETCSRC)/`basename $@ .o`.c
  
  $(OBJ8) : $(SRC8)
+ 	$(CC) -c $(CFLAGS)  $(WNNETCSRC)/`basename $@ .o`.c
+ 
+ $(OBJ9) : $(SRC9)
  	$(CC) -c $(CFLAGS)  $(WNNETCSRC)/`basename $@ .o`.c
  
  $(LOCAL_RKOBJS) : $(LOCAL_RKSRCS)
diff -cNdr FreeWnn-1.1.1-a016/Xsi/Wnn/jlib/jl.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jlib/jl.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jlib/jl.c	Thu Feb 24 00:31:31 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jlib/jl.c	Thu Mar  9 15:18:02 2000
***************
*** 33,38 ****
--- 33,40 ----
          Nihongo Henkan Hi-level Library
  */
  
+ #include <config.h>
+ 
  #include "commonhd.h"
  #include "wnn_config.h"
  #include <stdio.h>
***************
*** 3287,3311 ****
    if (dirname[0] == C_LOCAL)
      {                           /* Create Directory */
  #define MODE (0000000 | 0000777)
- #if defined(BSD42) || defined(uniosu)
        if (mkdir (dirname + 1, MODE) != 0)
          {
            wnn_errorno = WNN_MKDIR_FAIL;
            return (-1);
          }
! #endif
! #if defined(SYSVR2) && !defined(uniosu)
!       char buf[256];
!       strcpy (buf, "/bin/mkdir ");
!       strcat (buf, dirname + 1);
!       if (system (buf) != 0)
!         {
!           /*
!              wnn_errorno=WNN_MKDIR_FAIL;
!              return(-1);
!            */
!         }
! #endif
        chmod (dirname + 1, MODE);
        chown (dirname + 1, getuid (), -1);
      }
--- 3289,3300 ----
    if (dirname[0] == C_LOCAL)
      {                           /* Create Directory */
  #define MODE (0000000 | 0000777)
        if (mkdir (dirname + 1, MODE) != 0)
          {
            wnn_errorno = WNN_MKDIR_FAIL;
            return (-1);
          }
! 
        chmod (dirname + 1, MODE);
        chown (dirname + 1, getuid (), -1);
      }
diff -cNdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/Makefile.in	Sun Jan 30 12:50:20 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/Makefile.in	Thu Mar  9 15:26:07 2000
***************
*** 73,81 ****
  OBJ13= msg.o
  SRC14= $(WNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7)       $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRC14)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14)
  
  all:: jserver
  
--- 73,83 ----
  OBJ13= msg.o
  SRC14= $(WNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
! SRC15= $(WNNETCSRC)/mkdir.c
! OBJ15= mkdir.o
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7)       $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRC14) $(SRC15)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) $(OBJ15)
  
  all:: jserver
  
diff -cNdr FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_filecom.c FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_filecom.c
*** FreeWnn-1.1.1-a016/Xsi/Wnn/jserver/do_filecom.c	Thu Mar  9 15:06:19 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/Wnn/jserver/do_filecom.c	Thu Mar  9 15:17:42 2000
***************
*** 33,38 ****
--- 33,40 ----
   *      Do Global File command
   */
  
+ #include <config.h>
+ 
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <stdio.h>
***************
*** 64,70 ****
  /*      mkdir   */
  
  #define MODE (0000000 | 0000777)
- #if defined(BSD42) || defined(uniosu) || defined(UX386) || defined(DGUX)
  /* #define      MODE (0040000 | 0000731) */
  /* #define      MODE (0000000 | 0000733) */
  
--- 66,71 ----
***************
*** 94,135 ****
    put4_cur (0);
    putc_purge ();
  }
- #endif
- 
- #if defined(SYSVR2) && !defined(uniosu) && !defined(UX386) && !defined(DGUX)
- void
- js_mkdir ()
- {
-   char path[FILENAME];
-   char buf[1024];
-   int fd;
-   int eid;
- 
-   eid = envhandle ();
-   get_file_name (path, FILENAME);
-   if (eid == -1)
-     {
-       error_ret ();
-       return;
-     }
- 
-   if ((fd = open (path, O_RDONLY)) >= 0)
-     {
-       close (fd);
-       wnn_errorno = WNN_MKDIR_FAIL;
-       error_ret ();
-       return;
-     }
-   strcpy (buf, "/bin/mkdir ");
-   strcat (buf, path);
-   if (system (buf) != 0)
-     {
-     }
-   chmod (path, MODE);
-   put4_cur (0);
-   putc_purge ();
- }
- #endif
  
  /*      access  */
  void
--- 95,100 ----
diff -cNdr FreeWnn-1.1.1-a016/Xsi/cWnn/etc/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/cWnn/etc/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/cWnn/etc/Makefile.in	Sun Jan 30 14:57:59 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/cWnn/etc/Makefile.in	Thu Mar  9 15:40:09 2000
***************
*** 40,48 ****
         INCLUDES = -I$(CWNNINCLUDESRC) -I$(TOP)
          DEFINES = $(CWNNDEFINES) $(CWNNLANGDEF)
  
! SRCS= strings.c 	sstrings.c 	bdic.c 	hindo.c 	gethinsi.c 	revdic.c 	pwd.c 	bcopy.c 	xutoj.c 	dic_atojis.c 	msg.c 	yincoding.c 	py_table.c 	zy_table.c 	server_env.c
  
! OBJS= strings.o 	sstrings.o 	bdic.o 	hindo.o 	gethinsi.o 	revdic.o 	pwd.o 	bcopy.o 	xutoj.o 	dic_atojis.o 	msg.o 	yincoding.o 	py_table.o 	zy_table.o 	server_env.o
  
  all::
  
--- 40,48 ----
         INCLUDES = -I$(CWNNINCLUDESRC) -I$(TOP)
          DEFINES = $(CWNNDEFINES) $(CWNNLANGDEF)
  
! SRCS= strings.c 	sstrings.c 	bdic.c 	hindo.c 	gethinsi.c 	revdic.c 	pwd.c 	bcopy.c 	xutoj.c 	dic_atojis.c 	msg.c 	yincoding.c 	py_table.c 	zy_table.c 	server_env.c mkdir.c
  
! OBJS= strings.o 	sstrings.o 	bdic.o 	hindo.o 	gethinsi.o 	revdic.o 	pwd.o 	bcopy.o 	xutoj.o 	dic_atojis.o 	msg.o 	yincoding.o 	py_table.o 	zy_table.o 	server_env.o mkdir.o
  
  all::
  
***************
*** 222,227 ****
--- 222,238 ----
  
  clean::
  	$(RM) server_env.c
+ 
+ mkdir.c:  $(WNNETCSRC)/mkdir.c
+ 	$(RM) $@
+ 	$(LN) $? $@
+ 
+ includes:: mkdir.c
+ 
+ depend:: mkdir.c
+ 
+ clean::
+ 	$(RM) mkdir.c
  
  depend:: .depend
  
diff -cNdr FreeWnn-1.1.1-a016/Xsi/cWnn/jlib/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/cWnn/jlib/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/cWnn/jlib/Makefile.in	Sun Jan 30 14:56:56 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/cWnn/jlib/Makefile.in	Thu Mar  9 15:29:33 2000
***************
*** 64,75 ****
  OBJ7= strings.o
  SRC8= $(CWNNETCSRC)/bcopy.c
  OBJ8= bcopy.o
  LOCAL_RKSRCS= $(CWNNROMKANSRC)/rk_bltinfn.c 	$(CWNNROMKANSRC)/rk_main.c 	$(CWNNROMKANSRC)/rk_modread.c 	$(CWNNROMKANSRC)/rk_read.c 	$(CWNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(CWNNROMKANSRC)/rk_bltinfn.o 	$(CWNNROMKANSRC)/rk_main.o 	$(CWNNROMKANSRC)/rk_modread.o 	$(CWNNROMKANSRC)/rk_read.o 	$(CWNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
! LOCAL_ETCOBJS = $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8)
  SRCS= $(SRC1) $(SRC3) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(OBJ3) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
--- 64,78 ----
  OBJ7= strings.o
  SRC8= $(CWNNETCSRC)/bcopy.c
  OBJ8= bcopy.o
+ SRC9= $(CWNNETCSRC)/mkdir.c
+ OBJ9= mkdir.o
+ 
  LOCAL_RKSRCS= $(CWNNROMKANSRC)/rk_bltinfn.c 	$(CWNNROMKANSRC)/rk_main.c 	$(CWNNROMKANSRC)/rk_modread.c 	$(CWNNROMKANSRC)/rk_read.c 	$(CWNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(CWNNROMKANSRC)/rk_bltinfn.o 	$(CWNNROMKANSRC)/rk_main.o 	$(CWNNROMKANSRC)/rk_modread.o 	$(CWNNROMKANSRC)/rk_read.o 	$(CWNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8) $(SRC9)
! LOCAL_ETCOBJS = $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8) $(OBJ9)
  SRCS= $(SRC1) $(SRC3) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(OBJ3) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
***************
*** 206,211 ****
--- 209,217 ----
  	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
  
  $(OBJ8) : $(SRC8)
+ 	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
+ 
+ $(OBJ9) : $(SRC9)
  	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
  
  $(LOCAL_RKOBJS) : $(LOCAL_RKSRCS)
diff -cNdr FreeWnn-1.1.1-a016/Xsi/cWnn/jserver/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/cWnn/jserver/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/cWnn/jserver/Makefile.in	Sun Jan 30 14:55:56 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/cWnn/jserver/Makefile.in	Thu Mar  9 15:37:00 2000
***************
*** 77,92 ****
  OBJ13= msg.o
  SRC14= $(CWNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
  TSRC0= de_t.c
  TOBJ0= de_t.o
  TSRCGETHINSI= gethinsi_t.c
  TOBJGETHINSI= gethinsi_t.o
  TSRCS= $(TSRC0) $(TSRCGETHINSI)
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7)       $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRCS14)       $(TSRCS)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14)
  
! TOBJS= $(TOBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(TOBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14)
  
  all:: $(HDRS) $(SRC0) $(SRC1) $(TSRCS) cserver tserver
  
--- 77,94 ----
  OBJ13= msg.o
  SRC14= $(CWNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
+ SRC15= $(CWNNETCSRC)/mkdir.c
+ OBJ15= mkdir.o
  TSRC0= de_t.c
  TOBJ0= de_t.o
  TSRCGETHINSI= gethinsi_t.c
  TOBJGETHINSI= gethinsi_t.o
  TSRCS= $(TSRC0) $(TSRCGETHINSI)
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRC14) $(SRC15) $(TSRCS)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) $(OBJ15)
  
! TOBJS= $(TOBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(TOBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) $(OBJ15)
  
  all:: $(HDRS) $(SRC0) $(SRC1) $(TSRCS) cserver tserver
  
***************
*** 621,626 ****
--- 623,631 ----
  	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
  
  $(OBJ14) : $(SRC14)
+ 	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
+ 
+ $(OBJ15) : $(SRC15)
  	$(CC) -c $(CFLAGS)  $(CWNNETCSRC)/`basename $@ .o`.c
  
  $(TOBJ0) : $(TSRC0)
diff -cNdr FreeWnn-1.1.1-a016/Xsi/config.h.in FreeWnn-1.1.1-a016-s01/Xsi/config.h.in
*** FreeWnn-1.1.1-a016/Xsi/config.h.in	Thu Mar  9 15:06:19 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/config.h.in	Thu Mar  9 15:23:08 2000
***************
*** 31,36 ****
--- 31,37 ----
  
  #undef HAVE_UNISTD_H
  #undef HAVE_SYS_TYPES_H
+ #undef HAVE_MKDIR
  
  /* *_t が定義されているか? (定義されていればここでは undef になる) */
  #undef time_t
diff -cNdr FreeWnn-1.1.1-a016/Xsi/kWnn/etc/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/kWnn/etc/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/kWnn/etc/Makefile.in	Sun Jan 30 15:51:15 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/kWnn/etc/Makefile.in	Thu Mar  9 15:43:22 2000
***************
*** 40,48 ****
         INCLUDES = -I$(KWNNINCLUDESRC) -I$(TOP)
          DEFINES = $(KWNNDEFINES) $(KWNNLANGDEF)
  
! SRCS= strings.c 	sstrings.c 	bdic.c 	hindo.c 	gethinsi.c 	revdic.c 	pwd.c 	bcopy.c 	xutoj.c 	dic_atojis.c 	msg.c 	yincoding.c 	py_table.c 	zy_table.c 	server_env.c
  
! OBJS= strings.o 	sstrings.o 	bdic.o 	hindo.o 	gethinsi.o 	revdic.o 	pwd.o 	bcopy.o 	xutoj.o 	dic_atojis.o 	msg.o 	yincoding.o 	py_table.o 	zy_table.o 	server_env.o
  
  all::
  
--- 40,48 ----
         INCLUDES = -I$(KWNNINCLUDESRC) -I$(TOP)
          DEFINES = $(KWNNDEFINES) $(KWNNLANGDEF)
  
! SRCS= strings.c 	sstrings.c 	bdic.c 	hindo.c 	gethinsi.c 	revdic.c 	pwd.c 	bcopy.c 	xutoj.c 	dic_atojis.c 	msg.c 	yincoding.c 	py_table.c 	zy_table.c 	server_env.c mkdir.c
  
! OBJS= strings.o 	sstrings.o 	bdic.o 	hindo.o 	gethinsi.o 	revdic.o 	pwd.o 	bcopy.o 	xutoj.o 	dic_atojis.o 	msg.o 	yincoding.o 	py_table.o 	zy_table.o 	server_env.o mkdir.o
  
  all::
  
***************
*** 222,227 ****
--- 222,238 ----
  
  clean::
  	$(RM) server_env.c
+ 
+ mkdir.c:  $(WNNETCSRC)/mkdir.c
+ 	$(RM) $@
+ 	$(LN) $? $@
+ 
+ includes:: mkdir.c
+ 
+ depend:: mkdir.c
+ 
+ clean::
+ 	$(RM) mkdir.c
  
  depend:: .depend
  
diff -cNdr FreeWnn-1.1.1-a016/Xsi/kWnn/jlib/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/kWnn/jlib/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/kWnn/jlib/Makefile.in	Sun Jan 30 16:04:10 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/kWnn/jlib/Makefile.in	Thu Mar  9 15:29:16 2000
***************
*** 68,80 ****
  OBJ7= py_table.o
  SRC8= $(KWNNETCSRC)/zy_table.c
  OBJ8= zy_table.o
  
  LOCAL_RKSRCS= $(KWNNROMKANSRC)/rk_bltinfn.c 	$(KWNNROMKANSRC)/rk_main.c 	$(KWNNROMKANSRC)/rk_modread.c 	$(KWNNROMKANSRC)/rk_read.c 	$(KWNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(KWNNROMKANSRC)/rk_bltinfn.o 	$(KWNNROMKANSRC)/rk_main.o 	$(KWNNROMKANSRC)/rk_modread.o 	$(KWNNROMKANSRC)/rk_read.o 	$(KWNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
! LOCAL_ETCOBJS = $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8)
  SRCS= $(SRC1) $(SRC3) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(OBJ3) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
--- 68,82 ----
  OBJ7= py_table.o
  SRC8= $(KWNNETCSRC)/zy_table.c
  OBJ8= zy_table.o
+ SRC9= $(KWNNETCSRC)/mkdir.c
+ OBJ9= mkdir.o
  
  LOCAL_RKSRCS= $(KWNNROMKANSRC)/rk_bltinfn.c 	$(KWNNROMKANSRC)/rk_main.c 	$(KWNNROMKANSRC)/rk_modread.c 	$(KWNNROMKANSRC)/rk_read.c 	$(KWNNROMKANSRC)/rk_vars.c
  
  LOCAL_RKOBJS= $(KWNNROMKANSRC)/rk_bltinfn.o 	$(KWNNROMKANSRC)/rk_main.o 	$(KWNNROMKANSRC)/rk_modread.o 	$(KWNNROMKANSRC)/rk_read.o 	$(KWNNROMKANSRC)/rk_vars.o
  
! LOCAL_ETCSRCS = $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8) $(SRC9)
! LOCAL_ETCOBJS = $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8) $(OBJ9)
  SRCS= $(SRC1) $(SRC3) $(LOCAL_ETCSRCS)
  OBJS= $(OBJ1) $(OBJ3) $(LOCAL_ETCOBJS) $(LOCAL_RKOBJS)
  
***************
*** 193,198 ****
--- 195,203 ----
  	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
  
  $(OBJ8) : $(SRC8)
+ 	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
+ 
+ $(OBJ9) : $(SRC9)
  	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
  
  $(LOCAL_RKOBJS) : $(LOCAL_RKSRCS)
diff -cNdr FreeWnn-1.1.1-a016/Xsi/kWnn/jserver/Makefile.in FreeWnn-1.1.1-a016-s01/Xsi/kWnn/jserver/Makefile.in
*** FreeWnn-1.1.1-a016/Xsi/kWnn/jserver/Makefile.in	Sun Jan 30 16:03:17 2000
--- FreeWnn-1.1.1-a016-s01/Xsi/kWnn/jserver/Makefile.in	Thu Mar  9 15:46:15 2000
***************
*** 75,84 ****
  OBJ13= msg.o
  SRC14= $(KWNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
  
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7)       $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRCS14)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14)
  
  all:: $(HDRS) $(SRC0) $(SRC1) kserver
  
--- 75,86 ----
  OBJ13= msg.o
  SRC14= $(KWNNETCSRC)/xutoj.c
  OBJ14= xutoj.o
+ SRC15= $(KWNNETCSRC)/mkdir.c
+ OBJ15= mkdir.o
  
! SRCS= $(SRC0) $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7)       $(SRCGETHINSI) $(SRC9) $(SRC10) $(SRC11) $(SRC12) $(SRC13) $(SRCS14) $(SRC15)
  
! OBJS= $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7)       $(OBJGETHINSI) $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) $(OBJ15)
  
  all:: $(HDRS) $(SRC0) $(SRC1) kserver
  
***************
*** 589,594 ****
--- 591,599 ----
  	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
  
  $(OBJ14) : $(SRC14)
+ 	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
+ 
+ $(OBJ15) : $(SRC15)
  	$(CC) -c $(CFLAGS)  $(KWNNETCSRC)/`basename $@ .o`.c
  
  depend:: .depend