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); +} +