Mercurial > emacs
view lib-src/ntlib.c @ 10314:b5260fe3dfdd
(Fmake_indirect_buffer): New function.
(Fbuffer_base_buffer): New function.
(syms_of_buffer): defsubr them.
(reset_buffer): Don't alter intervals here.
(Fget_buffer_create): Use BUF_MARKERS. Init BUF_INTERVALS here.
(Fkill_buffer): Use BUF_MARKERS; but don't touch it in indir buf.
Likewise BUF_INTERVALS.
(init_buffer_once): Set up .text and BUF_INTERVALS
in buffer_local_symbols and buffer_defaults.
(Fkill_buffer): Don't free the text in indirect buffer.
When killing a base buffer, kill its indirect buffers first.
(set_buffer_temp): New function.
(reset_buffer_local_variables): Initialize buffer_file_type field.
(Fget_buffer_create): Initialize pt_marker, begv/zv_marker.
(set_buffer_internal): Use and update these markers.
Copy undo_list in and out of the base buffer.
(Fget_buffer_create): Init save_modiff field here.
(reset_buffer): Not here.
(Fbuffer_modified_p): Use BUF_SAVE_MODIFF.
(Fset_buffer_modified_p): Use SAVE_MODIFF.
(Fkill_buffer, list_buffers_1): Use BUF_SAVE_MODIFF.
(Fget_buffer_create): Initialize the size and text fields.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 02 Jan 1995 21:50:28 +0000 |
parents | fa698fd10c05 |
children | ee40177f6c68 |
line wrap: on
line source
/* Utility and Unix shadow routines for GNU Emacs support programs on NT. Copyright (C) 1994 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Emacs 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 General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. Geoff Voelker (voelker@cs.washington.edu) 10-8-94 */ #include <windows.h> #include <stdlib.h> #include <stdio.h> #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 nt_sleep(int seconds) { Sleep (seconds * 1000); } /* Get the current working directory. */ int getwd (char *dir) { return GetCurrentDirectory (MAXPATHLEN, dir); } static HANDLE getppid_parent; static int getppid_ppid; int getppid(void) { char *ppid; DWORD result; ppid = getenv ("__PARENT_PROCESS_ID"); if (!ppid) { printf("no pid.\n"); return 0; } else { getppid_ppid = atoi (ppid); } if (!getppid_parent) { getppid_parent = OpenProcess (SYNCHRONIZE, FALSE, atoi(ppid)); if (!getppid_parent) { printf ("Failed to open handle to parent process: %d\n", GetLastError()); exit (1); } } result = WaitForSingleObject (getppid_parent, 0); switch (result) { case WAIT_TIMEOUT: /* The parent is still alive. */ return getppid_ppid; case WAIT_OBJECT_0: /* The parent is gone. Return the pid of Unix init (1). */ return 1; case WAIT_FAILED: default: printf ("Checking parent status failed: %d\n", GetLastError()); exit (1); } }