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

Re: chown: root: invaid user name (Re: another 1.5V snapshot/20010524)



>「/etc/pwd.db が入っていればいい」としてですが、

といえばまあそれでもいいんですが (その場合は
src/distrib/macppc/floppies/ramdisk/list で消してるところをやめれば
いい)、本来 pwd.db を必要としているのは libc の getpwent なんですね。
libhack の getpwent ならは pwd.db を必要としないはずです。

で、なぜ libc のが使われているかというと、たぶん以下のような感じの
ことをlibhack にある関数すべてに対してしなきゃいけないんだとおもい
ます。どうするのが正しいのかよくわかんないけど。#define してるところ
は libc/include/namespace.h を #include するべきかも。

うまく対処して libhack に対するパッチを send-pr しといてもらえると
うれしい。:-)

Index: src/distrib/utils/libhack/getpwent.c
*** getpwent.c~	Fri Mar 26 23:48:27 1999
--- getpwent.c	Mon May 28 23:25:26 2001
***************
*** 43,48 ****
--- 43,63 ----
  #define	PWNULL	(struct passwd *)0
  #define MAXFIELD 8
  
+ #ifdef __weak_alias
+ __weak_alias(endpwent,_endpwent)
+ __weak_alias(getpwent,_getpwent)
+ __weak_alias(getpwnam,_getpwnam)
+ __weak_alias(getpwuid,_getpwuid)
+ __weak_alias(setpassent,_setpassent)
+ __weak_alias(setpwent,_setpwent)
+ #define endpwent _endpwent
+ #define getpwent _getpwent
+ #define getpwnam _getpwnam
+ #define getpwuid _getpwuid
+ #define setpassent _setpassent
+ #define setpwent _setpwent
+ #endif
+ 
  static char *pw_file = "/etc/passwd";
  static FILE *pw_fp;
  static char  pw_line[128];