summaryrefslogtreecommitdiffstats
path: root/win/unistd.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/unistd.c')
-rw-r--r--win/unistd.c179
1 files changed, 179 insertions, 0 deletions
diff --git a/win/unistd.c b/win/unistd.c
new file mode 100644
index 000000000..3252915a2
--- /dev/null
+++ b/win/unistd.c
@@ -0,0 +1,179 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003-2004 Jaroslaw Staniek <js@iidea.pl>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#define _WINSOCKAPI_ /* skip winsock */
+
+#include <windows.h>
+
+#include <unistd.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+#include "win32_utils.h"
+
+KDEWIN32_EXPORT int getgroups(int size, gid_t list[])
+{
+ /* TODO */
+ return 0;
+}
+
+KDEWIN32_EXPORT int readlink(const char *__path, char *__buf, int __buflen)
+{
+ if (!__path) {
+ errno = EINVAL;
+ return -1;
+ }
+ if ( (__buflen < 0) || ((int)strlen(__path)>(__buflen-1)) )
+ {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+ if (access(__path, R_OK) == 0) {
+ /* ok, copy to buf */
+ strncpy(__buf,__path,__buflen);
+ errno = 0;
+ return 0;
+ }
+ errno = ENOENT;
+ return -1;
+}
+
+KDEWIN32_EXPORT int symlink(const char *__name1, const char *__name2)
+{
+ return fcopy(__name1, __name2);
+}
+
+KDEWIN32_EXPORT int link(const char *__name1, const char *__name2)
+{
+ return fcopy(__name1, __name2);
+}
+
+KDEWIN32_EXPORT int chown(const char *__path, uid_t __owner, gid_t __group)
+{
+ return 0;
+}
+
+KDEWIN32_EXPORT int fchown(int __fd, uid_t __owner, gid_t __group )
+{
+ return 0;
+}
+
+KDEWIN32_EXPORT int lstat(const char *path, struct stat *sb)
+{
+ return _stat(path,(struct _stat*)sb);
+}
+
+KDEWIN32_EXPORT int fchmod(int __fd, mode_t __mode)
+{
+ return 0;
+}
+
+
+/* Get the real user ID of the calling process. */
+KDEWIN32_EXPORT uid_t getuid()
+{
+ return 1; /* NOT A ROOT! */
+}
+
+/* Get the effective user ID of the calling process. */
+KDEWIN32_EXPORT uid_t geteuid (void)
+{
+ return 1; /* NOT A ROOT! */
+}
+
+/* Get the real group ID of the calling process. */
+KDEWIN32_EXPORT gid_t getgid (void)
+{
+ return 1; /* NOT A ROOT GR! */
+}
+
+/* Get the effective group ID of the calling process. */
+KDEWIN32_EXPORT gid_t getegid (void)
+{
+ return 1; /* NOT A ROOT GR! */
+}
+
+KDEWIN32_EXPORT int pipe(int *fd)
+{
+ /** @todo */
+ return _pipe( fd, 256, O_BINARY ); /* OK? */
+}
+
+KDEWIN32_EXPORT pid_t fork(void)
+{
+ /** @todo */
+ return -1;
+}
+
+KDEWIN32_EXPORT pid_t setsid(void)
+{
+ /** @todo */
+ return -1;
+}
+
+typedef unsigned int size_t;
+
+/*#define INCL_WINSOCK_API_PROTOTYPES 0
+#include <winsock2.h>*/
+
+KDEWIN32_EXPORT int kde_gethostname(char *__name, size_t __len)
+{
+ size_t len = __len;
+ if (0==GetComputerNameA(__name, &len))
+ return -1;
+ return 0;
+}
+
+#define getlogin_buf_size 255
+char getlogin_buf[getlogin_buf_size+1];
+
+KDEWIN32_EXPORT char* getlogin()
+{
+/*! @todo make this reentrant!*/
+ size_t size = sizeof(getlogin_buf);
+ *getlogin_buf = 0;
+ if (!GetUserNameA(getlogin_buf, (LPDWORD)&size))
+ return 0;
+ return getlogin_buf;
+}
+
+KDEWIN32_EXPORT void usleep(unsigned int usec)
+{
+ Sleep(usec/1000);
+}
+
+KDEWIN32_EXPORT void sleep(unsigned int sec)
+{
+ Sleep(sec*1000);
+}
+
+KDEWIN32_EXPORT long int random()
+{
+ return rand();
+}
+
+KDEWIN32_EXPORT int setreuid(uid_t ruid, uid_t euid)
+{
+ /*! @todo */
+ return 0;
+}
+