X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/245e223a57ac14d168702891f6efbe0eb11b0384..ea0d348b1c4aca50783f6a931e35292f1c96e60b:/lib-src/ntlib.c
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c
index c815f32d51..4e125eb6d7 100644
--- a/lib-src/ntlib.c
+++ b/lib-src/ntlib.c
@@ -1,6 +1,9 @@
/* Utility and Unix shadow routines for GNU Emacs support programs on NT.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1994, 2001-2012 Free Software Foundation, Inc.
+
+Author: Geoff Voelker (voelker@cs.washington.edu)
+Created: 10-8-94
This file is part of GNU Emacs.
@@ -15,11 +18,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs. If not, see .
-
-
- Geoff Voelker (voelker@cs.washington.edu) 10-8-94
-*/
+along with GNU Emacs. If not, see . */
#include
#include
@@ -29,16 +28,25 @@ along with GNU Emacs. If not, see .
#include
#include
#include
+#include
+#include
+#include
#include "ntlib.h"
+struct timezone
+{
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+};
+
#define MAXPATHLEN _MAX_PATH
/* Emulate sleep...we could have done this with a define, but that
would necessitate including windows.h in the files that used it.
This is much easier. */
void
-sleep(unsigned long seconds)
+sleep (unsigned long seconds)
{
Sleep (seconds * 1000);
}
@@ -56,7 +64,7 @@ static HANDLE getppid_parent;
static int getppid_ppid;
int
-getppid(void)
+getppid (void)
{
char *ppid;
DWORD result;
@@ -64,7 +72,7 @@ getppid(void)
ppid = getenv ("EM_PARENT_PROCESS_ID");
if (!ppid)
{
- printf("no pid.\n");
+ printf ("no pid.\n");
return 0;
}
else
@@ -74,11 +82,11 @@ getppid(void)
if (!getppid_parent)
{
- getppid_parent = OpenProcess (SYNCHRONIZE, FALSE, atoi(ppid));
+ getppid_parent = OpenProcess (SYNCHRONIZE, FALSE, atoi (ppid));
if (!getppid_parent)
{
printf ("Failed to open handle to parent process: %d\n",
- GetLastError());
+ GetLastError ());
exit (1);
}
}
@@ -94,13 +102,13 @@ getppid(void)
return 1;
case WAIT_FAILED:
default:
- printf ("Checking parent status failed: %d\n", GetLastError());
+ printf ("Checking parent status failed: %d\n", GetLastError ());
exit (1);
}
}
char *
-getlogin ()
+getlogin (void)
{
static char user_name[256];
DWORD length = sizeof (user_name);
@@ -120,19 +128,19 @@ cuserid (char * s)
}
unsigned
-getuid ()
+getuid (void)
{
return 0;
}
unsigned
-getgid ()
+getgid (void)
{
return 0;
}
unsigned
-getegid ()
+getegid (void)
{
return 0;
}
@@ -144,7 +152,7 @@ setuid (unsigned uid)
}
int
-setegid (unsigned gid)
+setregid (unsigned rgid, unsigned gid)
{
return 0;
}
@@ -202,6 +210,29 @@ getpass (const char * prompt)
return NULL;
}
+/* This is needed because lib/gettime.c calls gettimeofday, which MSVC
+ doesn't have. Copied from w32.c. */
+void
+gettimeofday (struct timeval *tv, struct timezone *tz)
+{
+ struct _timeb tb;
+ _ftime (&tb);
+
+ tv->tv_sec = tb.time;
+ tv->tv_usec = tb.millitm * 1000L;
+ /* Implementation note: _ftime sometimes doesn't update the dstflag
+ according to the new timezone when the system timezone is
+ changed. We could fix that by using GetSystemTime and
+ GetTimeZoneInformation, but that doesn't seem necessary, since
+ Emacs always calls gettimeofday with the 2nd argument NULL (see
+ current_emacs_time). */
+ if (tz)
+ {
+ tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich */
+ tz->tz_dsttime = tb.dstflag; /* type of dst correction */
+ }
+}
+
int
fchown (int fd, unsigned uid, unsigned gid)
{
@@ -219,7 +250,7 @@ sys_ctime (const time_t *t)
}
FILE *
-sys_fopen(const char * path, const char * mode)
+sys_fopen (const char * path, const char * mode)
{
return fopen (path, mode);
}
@@ -260,6 +291,7 @@ is_exec (const char * name)
stricmp (p, ".cmd") == 0));
}
+/* FIXME? This is in config.nt now - is this still needed? */
#define IS_DIRECTORY_SEP(x) ((x) == '/' || (x) == '\\')
/* We need this because nt/inc/sys/stat.h defines struct stat that is
@@ -374,5 +406,9 @@ stat (const char * path, struct stat * buf)
return 0;
}
-/* arch-tag: 7b63fb83-70ee-4124-8822-54e53e5d0773
- (do not change this comment) */
+int
+lstat (const char * path, struct stat * buf)
+{
+ return stat (path, buf);
+}
+