X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibposix.so_src%2Funistd.c;h=64cb70f5108e08fed66734f0ddbaf67c0ddc30f4;hb=70d0f9abb42fb0b25f35b3fca91159e5c3a90316;hp=211948f88d57211c513de18c0b78b68720e81f1e;hpb=e7a76b0d8a0cc6aa77966509780973a6f8216ef7;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libposix.so_src/unistd.c b/Usermode/Libraries/libposix.so_src/unistd.c index 211948f8..64cb70f5 100644 --- a/Usermode/Libraries/libposix.so_src/unistd.c +++ b/Usermode/Libraries/libposix.so_src/unistd.c @@ -183,6 +183,17 @@ int usleep(useconds_t usec) return 0; } +unsigned int alarm(unsigned int seconds) +{ + static int64_t alarm_time; + if( seconds > 0 ) + { + alarm_time = _SysTimestamp() + seconds * 1000; + // TODO: Schedule SIGALRM + } + return (alarm_time - _SysTimestamp()) / 1000; +} + int kill(pid_t pid, int signal) { // TODO: Need special handling? @@ -242,6 +253,7 @@ char *getpass(const char *prompt) mode.OutputMode = 0; _SysIOCtl(STDIN_FILENO, PTY_IOCTL_SETMODE, &mode); fprintf(stderr, "%s", prompt); + fflush(stdin); // clear stdin buffer fgets(passbuf, PASS_MAX+1, stdin); fprintf(stderr, "\n"); for( int i = strlen(passbuf); i > 0 && (passbuf[i-1] == '\r' || passbuf[i-1] == '\n'); i -- ) @@ -270,5 +282,7 @@ int ttyname_r(int fd, char *buf, size_t buflen) _SysIOCtl(fd, PTY_IOCTL_GETID, NULL); + _SysDebug("TODO: ttyname_r"); + return ENOTIMPL; }