#include "ntport.h"
#include "sh.h"
static struct passwd pass_bogus;
static char username[20];
static char homedir[MAX_PATH + 1];
static char *this_shell="tcsh";
static char dummy[2]={0,0};
gid_t getuid(void) {
return 0;
}
gid_t getgid(void) {
return 0;
}
gid_t geteuid(void) {
return 0;
}
gid_t getegid(void) {
return 0;
}
#undef free
struct passwd * getpwnam(const char *name) {
char *ptr;
DWORD size =20;
size_t esize = 0;
if (pass_bogus.pw_name == NULL) {
GetUserName(username,&size);
if (_dupenv_s(&ptr,&esize,"HOME") ){
StringCbCopy(homedir,sizeof(homedir),ptr);
pass_bogus.pw_dir = &homedir[0];
free(ptr);
}
pass_bogus.pw_name = &username[0];
pass_bogus.pw_shell = this_shell;
pass_bogus.pw_passwd= &dummy[0];
pass_bogus.pw_gecos=&dummy[0];
pass_bogus.pw_passwd= &dummy[0];
}
if (_stricmp(username,name) )
return NULL;
return &pass_bogus;
}
struct passwd * getpwuid(uid_t myuid) {
char *ptr;
DWORD size =20;
size_t esize = 0;
UNREFERENCED_PARAMETER(myuid);
if (pass_bogus.pw_name == NULL) {
GetUserName(username,&size);
if (_dupenv_s(&ptr,&esize,"HOME") ){
StringCbCopy(homedir,sizeof(homedir),ptr);
pass_bogus.pw_dir = &homedir[0];
free(ptr);
}
pass_bogus.pw_name = &username[0];
pass_bogus.pw_shell = this_shell;
pass_bogus.pw_passwd= &dummy[0];
pass_bogus.pw_gecos=&dummy[0];
pass_bogus.pw_passwd= &dummy[0];
}
return &pass_bogus;
}
struct group * getgrnam(char *name) {
UNREFERENCED_PARAMETER(name);
return NULL;
}
struct group * getgrgid(gid_t mygid) {
UNREFERENCED_PARAMETER(mygid);
return NULL;
}
char * ttyname(int fd) {
if (isatty(fd)) return "/dev/tty";
return NULL;
}
int times(struct tms * ignore) {
FILETIME c,e,kernel,user;
ignore->tms_utime=0;
ignore->tms_stime=0;
ignore->tms_cutime=0;
ignore->tms_cstime=0;
if (!GetProcessTimes(GetCurrentProcess(),
&c,
&e,
&kernel,
&user) )
return -1;
if (kernel.dwHighDateTime){
return GetTickCount();
}
ignore->tms_stime = kernel.dwLowDateTime / 1000 /100;
ignore->tms_utime = user.dwLowDateTime / 1000 /100;
return GetTickCount();
}
int tty_getty(int fd, void*ignore) {
UNREFERENCED_PARAMETER(fd);
UNREFERENCED_PARAMETER(ignore);
return 0;
}
int tty_setty(int fd, void*ignore) {
UNREFERENCED_PARAMETER(fd);
UNREFERENCED_PARAMETER(ignore);
return 0;
}
int tty_geteightbit(void *ignore) {
UNREFERENCED_PARAMETER(ignore);
return 1;
}
void
dosetty(Char **v, struct command *t)
{
UNREFERENCED_PARAMETER(v);
UNREFERENCED_PARAMETER(t);
xprintf("setty not supported in NT\n");
}