Mercurial > emacs
changeset 15138:92326afec2a6
Include ntlib.h.
(nt_sleep): Rename to sleep.
(getwd): Return directory.
(getlogin, cuserid, getuid, setuid, getpwuid, getpass, fchown,
sys_ctime, sys_fopen): New functions.
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Fri, 03 May 1996 18:28:37 +0000 |
parents | 74c840c2f577 |
children | 4d638e5a9e7d |
files | lib-src/ntlib.c |
diffstat | 1 files changed, 121 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lib-src/ntlib.c Fri May 03 18:28:18 1996 +0000 +++ b/lib-src/ntlib.c Fri May 03 18:28:37 1996 +0000 @@ -24,6 +24,10 @@ #include <windows.h> #include <stdlib.h> #include <stdio.h> +#include <time.h> +#include <direct.h> + +#include "ntlib.h" #define MAXPATHLEN _MAX_PATH @@ -31,7 +35,7 @@ would necessitate including windows.h in the files that used it. This is much easier. */ void -nt_sleep(int seconds) +sleep(int seconds) { Sleep (seconds * 1000); } @@ -40,7 +44,9 @@ int getwd (char *dir) { - return GetCurrentDirectory (MAXPATHLEN, dir); + if (GetCurrentDirectory (MAXPATHLEN, dir) > 0) + return dir; + return NULL; } int @@ -95,3 +101,116 @@ exit (1); } } + +char * +getlogin () +{ + static char user_name[256]; + DWORD length = sizeof (user_name); + + if (GetUserName (user_name, &length)) + return user_name; + return NULL; +} + +char * +cuserid (char * s) +{ + char * name = getlogin (); + if (s) + return strcpy (s, name ? name : ""); + return name; +} + +int +getuid () +{ + return 0; +} + +int +setuid (int uid) +{ + return 0; +} + +struct passwd * +getpwuid (int uid) +{ + return NULL; +} + +char * +getpass (const char * prompt) +{ + static char input[256]; + HANDLE in; + HANDLE err; + DWORD count; + + in = GetStdHandle (STD_INPUT_HANDLE); + err = GetStdHandle (STD_ERROR_HANDLE); + + if (in == INVALID_HANDLE_VALUE || err == INVALID_HANDLE_VALUE) + return NULL; + + if (WriteFile (err, prompt, strlen (prompt), &count, NULL)) + { + int istty = (GetFileType (in) == FILE_TYPE_CHAR); + DWORD old_flags; + int rc; + + if (istty) + { + if (GetConsoleMode (in, &old_flags)) + SetConsoleMode (in, ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT); + else + istty = 0; + } + rc = ReadFile (in, input, sizeof (input), &count, NULL); + if (count >= 2 && input[count - 2] == '\r') + input[count - 2] = '\0'; + else + { + char buf[256]; + while (ReadFile (in, buf, sizeof (buf), &count, NULL) > 0) + if (count >= 2 && buf[count - 2] == '\r') + break; + } + WriteFile (err, "\r\n", 2, &count, NULL); + if (istty) + SetConsoleMode (in, old_flags); + if (rc) + return input; + } + + return NULL; +} + +int +fchown (int fd, int uid, int gid) +{ + return 0; +} + +/* Place a wrapper around the MSVC version of ctime. It returns NULL + on network directories, so we handle that case here. + (Ulrich Leodolter, 1/11/95). */ +char * +sys_ctime (const time_t *t) +{ + char *str = (char *) ctime (t); + return (str ? str : "Sun Jan 01 00:00:00 1970"); +} + +FILE * +sys_fopen(const char * path, const char * mode) +{ + return fopen (path, mode); +} + +int +sys_chdir (const char * path) +{ + return _chdir (path); +}