26 lines
1.2 KiB
Plaintext
26 lines
1.2 KiB
Plaintext
sudo porting hints:
|
|
|
|
Sudo should be fairly easy to port. The most problematic part is how
|
|
set*uid() functions. If you have no seteuid() but do have setreuid()
|
|
you can emulate seteuid() with a macro like the following:
|
|
#define seteuid(__EUID) (setreuid((uid_t)-1, __EUID))
|
|
|
|
Another possible pitfall is getdtablesize() which is used to get the maximum
|
|
number of open files the process can have. For systems that have the
|
|
Posix(?) sysconf() but no getdtablesize(), use the following macro:
|
|
#define getdtablesize() (sysconf(_SC_OPEN_MAX))
|
|
If all else fails you can use the value of NOFILE in <sys/param.h>.
|
|
|
|
If you are porting to a SysV-based OS, you should link in with a library
|
|
that has BSD signals if possible, if not sudo will probably still work,
|
|
but no promises.
|
|
|
|
One other thing is that sudo expects to be able to use the uid_t and mode_t
|
|
type definitions. Chances are you have uid_t, if not it is just what
|
|
getuid(2) returns, you can add it in to sudo.h. If you have an older
|
|
libc, you probably don't have mode_t. You can just compile with -DNO_MODE_T
|
|
if umask(2) takes an int, if not, fix the definition in sudo.h.
|
|
|
|
If you port sudo to a new architecture, please send your changes to
|
|
sudo-bugs@cs.colorado.edu
|