unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: Emacs on VMS
       [not found] <200201130735.g0D7ZRb07825@aztec.santafe.edu>
@ 2002-02-07 11:29 ` Roar Thronæs
  2002-02-08 13:57   ` Richard Stallman
  0 siblings, 1 reply; 7+ messages in thread
From: Roar Thronæs @ 2002-02-07 11:29 UTC (permalink / raw)
  Cc: emacs-devel

On Sun, 13 Jan 2002, Richard Stallman wrote:

>     I have not done anything since December 2000, because I got stuck on
>     the image format. (temacs.exe seemed ok, but the resulting .dump was not)
>     Depending on the response on comp.os.vms (hope you do not mind
>     being quoted there) I might have a look on image dump again, since it
>     seems I have to learn the VMS image format anyway.
>
> Ok, for the moment we won't delete anything.  Would you please promise
> to get back to me about this, one way or the other?

Now I can edit and stuff with it.

Maybe it is time to begin looking at how to integrate things back in?

What I have got so far is available at:
ftp.nvg.ntnu.no /pub/vms/emacs/emacs21_1.tgz
It is diffable against an ordinary 21.1.

Note: the VMS makefiles (.mms) are not generated, and neither is config.h
and some other header-files. Maybe they should be moved.

Regards,
Roar Thronæs


_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-07 11:29 ` Emacs on VMS Roar Thronæs
@ 2002-02-08 13:57   ` Richard Stallman
  2002-02-08 14:41     ` Roar Thronæs
  2002-02-09 11:03     ` Roar Thronæs
  0 siblings, 2 replies; 7+ messages in thread
From: Richard Stallman @ 2002-02-08 13:57 UTC (permalink / raw)
  Cc: emacs-devel

    What I have got so far is available at:
    ftp.nvg.ntnu.no /pub/vms/emacs/emacs21_1.tgz
    It is diffable against an ordinary 21.1.

It is not feasible for me to access that.  Can you email us
the diffs for the single .c file that has the biggest diffs?
That will give a picture of how hard this is.

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-08 13:57   ` Richard Stallman
@ 2002-02-08 14:41     ` Roar Thronæs
  2002-02-09 11:03     ` Roar Thronæs
  1 sibling, 0 replies; 7+ messages in thread
From: Roar Thronæs @ 2002-02-08 14:41 UTC (permalink / raw)
  Cc: emacs-devel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 736 bytes --]

On Fri, 8 Feb 2002, Richard Stallman wrote:

>     What I have got so far is available at:
>     ftp.nvg.ntnu.no /pub/vms/emacs/emacs21_1.tgz
>     It is diffable against an ordinary 21.1.
>
> It is not feasible for me to access that.  Can you email us
> the diffs for the single .c file that has the biggest diffs?
> That will give a picture of how hard this is.

That might be sysdep.c, even though it is a bit bigger than it should be
due to testing alternative functions.
The -u diff is 17 k large.

The -ru diff against an ordinary 21.1 is 118 k large, by the way.

It is mostly stuff that has been there before, but there are some some new
patches, #ifdefs and two new functions.

-- 
Regards,
-Roar Thronæs

[-- Attachment #2: Type: TEXT/PLAIN, Size: 18607 bytes --]

--- /Stores/stash/emacs/src-21.1/src/sysdep.c	Mon Oct  8 11:02:08 2001
+++ ./src/sysdep.c	Sat Feb  2 14:35:50 2002
@@ -60,6 +60,21 @@
 
 #define min(x,y) ((x) > (y) ? (y) : (x))
 
+#ifdef VMS
+/* In this file, open, read and write refer to the system calls,
+   not our sugared interfaces  sys_open, sys_read and sys_write.
+   Contrariwise, for systems where we use the system calls directly,
+   define sys_read, etc. here as aliases for them.  */
+#ifndef read
+#define sys_read read
+#define sys_write write
+#endif /* `read' is not a macro */
+
+#undef read
+#undef write
+
+#endif
+
 #ifdef WINDOWSNT
 #define read sys_read
 #define write sys_write
@@ -69,9 +84,23 @@
 #endif
 #endif /* not WINDOWSNT */
 
+#ifdef VMS
+#ifndef close
+#define sys_close close
+#else 
+#undef close
+#endif
+
+#ifndef open
+#define sys_open open
+#else /* `open' is a macro */
+#undef open
+#endif /* `open' is a macro */
+#endif
+
 /* Does anyone other than VMS need this? */
 #ifndef fwrite
-#define sys_fwrite fwrite
+#define sys_write write
 #else
 #undef fwrite
 #endif
@@ -131,6 +160,7 @@
 #include <atrdef.h>
 #include <ctype.h>
 #include <string.h>
+#include <perror.h>
 #ifdef __GNUC__
 #include <sys/file.h>
 #else
@@ -141,6 +171,15 @@
 #include <rab.h>
 #endif
 #define MAXIOSIZE (32 * PAGESIZE) /* Don't I/O more than 32 blocks at a time */
+int waiting_for_ast = 1;
+unsigned int input_ef = 0;
+unsigned int input_eflist = 0;
+unsigned int timer_ef = 0;
+unsigned int timer_eflist = 0;
+unsigned int process_ef = 0;
+unsigned int stop_input = 0;
+unsigned int ast_queued = 0;
+const unsigned __int64 reqidt = 0xdeadbeefdeadbeef;
 #endif /* VMS */
 
 #ifndef BSD4_1
@@ -1026,7 +1065,11 @@
   if (read_socket_hook)
     return;
 
+#ifndef VMS
   croak ("request_sigio");
+#else
+  sys$setast(1);
+#endif
 }
  
 void
@@ -1035,7 +1078,11 @@
   if (read_socket_hook)
     return;
 
+#ifndef VMS
   croak ("unrequest_sigio");
+#else
+  sys$setast(0);
+#endif
 }
  
 #endif /* _CX_UX */
@@ -1319,7 +1366,9 @@
     input_ef = get_kbd_event_flag ();
     /* LIB$GET_EF (&input_ef); */
   SYS$CLREF (input_ef);
+#if 0  
   waiting_for_ast = 0;
+#endif
   if (!timer_ef)
     timer_ef = get_timer_event_flag ();
     /* LIB$GET_EF (&timer_ef); */
@@ -1948,13 +1997,16 @@
 queue_kbd_input ()
 {
   int status;
-  extern kbd_input_ast ();
+  extern void kbd_input_ast ();
 
+#if 0
   waiting_for_ast = 0;
+#endif
   stop_input = 0;
   status = SYS$QIO (0, input_fd, IO$_READVBLK,
 		    &input_iosb, kbd_input_ast, 1,
 		    &input_buffer, 1, 0, terminator_mask, 0, 0);
+  ast_queued = 1;
 }
 
 int input_count;
@@ -1962,16 +2014,315 @@
 /* Ast routine that is called when keyboard input comes in
    in accord with the SYS$QIO above.  */
 
-void
 kbd_input_ast ()
 {
+  int old_errno = errno;
+
+  ast_queued = 0;
+
+  if (! stop_input)
+    {
+      extern EMACS_TIME *input_available_clear_time;
+      static struct input_event buf[4096];
+      register int passes = -1;
+
+      if (input_available_clear_time)
+	EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0);
+
+#ifdef ASTDEBUG
+      fprintf (stderr, "ASTDEBUG: AST occured!\n");
+#endif
+
+      while (1)
+	{
+	  register int c = -1;
+	  register int nread = 0;
+	  int i;
+
+	  passes++;
+
+	  if (read_socket_hook)
+	    nread = (*read_socket_hook) (0, buf, 4096, 0, 0);
+	  else
+	    {
+#if 0
+	      if (interrupt_input_blocked)
+		{
+		  interrupt_input_pending = 1;
+		  return -1;
+		}
+
+	      interrupt_input_pending = 0;
+#endif
+	      if (passes == 0)
+		{
+#ifdef ASTDEBUG
+		  input_count++;
+		  if (input_count == 25)
+		    exit (1);
+		  printf ("Ast # %d,", input_count);
+		  printf (" iosb = %x, %x, %x, %x",
+			  input_iosb.offset, input_iosb.status,
+			  input_iosb.termlen, input_iosb.term);
+#endif
+		  if (input_iosb.offset)
+		    {
+		      c = input_buffer;
+#ifdef ASTDEBUG
+		      printf (", char = 0%o", c);
+#endif
+		    }
+#ifdef ASTDEBUG
+		  printf ("\n");
+		  fflush (stdout);
+		  sleep (1);
+#endif
+		  queue_kbd_input ();
+		}
+	      if (c >= 0)
+		{
+		  extern int meta_key;	/* in keyboard.c */
+
+		  nread = 1;
+		  buf->kind = ascii_keystroke;
+		  buf->modifiers = 0;
+		  if (meta_key == 1 && (c & 0x80))
+		    buf->modifiers = meta_modifier;
+		  if (meta_key != 2)
+		    c &= ~0x80;
+
+		  XSET (buf->code, Lisp_Int, c);
+#ifdef MULTI_FRAME
+		  XSETFRAME (buf->frame_or_window, selected_frame);
+#else
+		  buf->frame_or_window = Qnil;
+#endif
+		}
+	    }
+
+	  /* Scan the chars for C-g and store them in kbd_buffer.  */
+	  for (i = 0; i < nread; i++)
+	    {
+#ifdef ASTDEBUG
+	      {
+		extern Lisp_Object Qexternal_debugging_output;
+
+		switch (buf[i].kind)
+		  {
+		  case no_event:
+		    fprintf (stderr, "ASTDEBUG: buf[%d] = no event\n", i);
+		    break;
+		  case ascii_keystroke:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = ASCII keystroke with\n", i);
+		    fprintf (stderr, "                 .code            = ");
+		    Fprin1 (buf[i].code, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr, "                 .frame_or_window = ");
+		    Fprin1 (buf[i].frame_or_window,
+			    Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .timestamp       = %d\n",
+			     buf[i].timestamp);
+		    break;
+		  case non_ascii_keystroke:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = keystroke with\n", i);
+		    fprintf (stderr, "                 .code            = ");
+		    Fprin1 (buf[i].code, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .modifiers       = %d\n",
+			     buf[i].modifiers);
+		    fprintf (stderr, "                 .frame_or_window = ");
+		    Fprin1 (buf[i].frame_or_window,
+			    Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .timestamp       = %d\n",
+			     buf[i].timestamp);
+		    break;
+		  case mouse_click:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = mouse click with\n", i);
+		    fprintf (stderr, "                 .code            = ");
+		    Fprin1 (buf[i].code, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .modifiers       = %d\n",
+			     buf[i].modifiers);
+		    fprintf (stderr, "                 .frame_or_window = ");
+		    Fprin1 (buf[i].frame_or_window,
+			    Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr, "                 .x               = ");
+		    Fprin1 (buf[i].x, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr, "                 .y               = ");
+		    Fprin1 (buf[i].y, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .timestamp       = %d\n",
+			     buf[i].timestamp);
+		    break;
+		  case scroll_bar_click:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = mouse click with\n", i);
+		    fprintf (stderr, "                 .code            = ");
+		    Fprin1 (buf[i].code, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .modifiers       = %d\n",
+			     buf[i].modifiers);
+		    fprintf (stderr, "                 .part            = ");
+		    switch (buf[i].part)
+		      {
+		      case scroll_bar_above_handle:
+			fprintf (stderr, "scroll_bar_above_handle\n");
+			break;
+		      case scroll_bar_handle:
+			fprintf (stderr, "scroll_bar_handle\n");
+			break;
+		      case scroll_bar_below_handle:
+			fprintf (stderr, "scroll_bar_below_handle\n");
+			break;
+		      }
+		    fprintf (stderr, "                 .frame_or_window = ");
+		    Fprin1 (buf[i].frame_or_window,
+			    Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr, "                 .x               = ");
+		    Fprin1 (buf[i].x, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr, "                 .y               = ");
+		    Fprin1 (buf[i].y, Qexternal_debugging_output);
+		    fprintf (stderr, "\n");
+		    fprintf (stderr,
+			     "                 .timestamp       = %d\n",
+			     buf[i].timestamp);
+		    break;
+		  case selection_request_event:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = selection request event with\n", i);
+		    fprintf (stderr,
+			     "                 .requestor       = %u\n",
+			     SELECTION_EVENT_REQUESTOR (&buf[i]));
+		    fprintf (stderr,
+			     "                 .selection       = %u\n",
+			     SELECTION_EVENT_SELECTION (&buf[i]));
+		    fprintf (stderr,
+			     "                 .target          = %u\n",
+			     SELECTION_EVENT_TARGET (&buf[i]));
+		    fprintf (stderr,
+			     "                 .property        = %u\n",
+			     SELECTION_EVENT_PROPERTY (&buf[i]));
+		    fprintf (stderr,
+			     "                 .time            = %u\n",
+			     SELECTION_EVENT_TIME (&buf[i]));
+		    break;
+		  case selection_clear_event:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = selection clear event with\n", i);
+		    fprintf (stderr,
+			     "                 .requestor       = %u\n",
+			     SELECTION_EVENT_REQUESTOR (&buf[i]));
+		    fprintf (stderr,
+			     "                 .selection       = %u\n",
+			     SELECTION_EVENT_SELECTION (&buf[i]));
+		    fprintf (stderr,
+			     "                 .target          = %u\n",
+			     SELECTION_EVENT_TARGET (&buf[i]));
+		    fprintf (stderr,
+			     "                 .property        = %u\n",
+			     SELECTION_EVENT_PROPERTY (&buf[i]));
+		    fprintf (stderr,
+			     "                 .time            = %u\n",
+			     SELECTION_EVENT_TIME (&buf[i]));
+		    break;
+		  case delete_window_event:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = delete window event with\n",
+			     i);
+		    fprintf (stderr, "                 .frame_or_window = ");
+		    Fprin1 (buf[i].frame_or_window,
+			    Qexternal_debugging_output);
+		    break;
+		  default:
+		    fprintf (stderr,
+			     "ASTDEBUG: buf[%d] = some odd event with\n", i);
+		  }
+	      }
+#endif
+	      kbd_buffer_store_event (&buf[i]);
+	      /* Don't look at input that follows a C-g too closely.
+		 This reduces lossage due to autorepeat on C-g.  */
+	      if (buf[i].kind == ascii_keystroke
+		  && XINT(buf[i].code) == quit_char)
+		break;
+	    }
+
+	  if (nread <= 0)
+	    break;
+	}
+    }
+    {
+#ifdef ASTDEBUG
+      fprintf (stderr, "ASTDEBUG: setting the event flag %d\n", input_ef);
+#endif
+      sys$setef (input_ef);
+    }
+
+  errno = old_errno;
+}
+
+end_kbd_input ()
+{
+#ifdef ASTDEBUG
+  printf ("At end_kbd_input.\n");
+  fflush (stdout);
+  sleep (1);
+#endif
+  if (lib$ast_in_prog ())  /* Don't wait if suspending from kbd_buffer_store_event! */
+    {
+      sys$cancel (input_fd);
+      return;
+    }
+
+  if (ast_queued)
+    {
+      sys$setast (0);
+      /* Clear a flag, and tell ast routine above to set it.  */
+      sys$clref (input_ef);
+#if 0
+      waiting_for_ast = 1;
+#endif
+      stop_input = 1;
+      sys$cancel (input_fd);
+      sys$setast (1);
+#if 1
+      sys$waitfr (input_ef);
+#endif
+      sys$clref (input_ef);
+#if 0
+      waiting_for_ast = 0;
+#endif
+      stop_input = 0;
+    }
+}
+
+void
+kbd_input_ast2 ()
+{
   register int c = -1;
   int old_errno = errno;
   extern EMACS_TIME *input_available_clear_time;
 
   if (waiting_for_ast)
     SYS$SETEF (input_ef);
+#if 0
   waiting_for_ast = 0;
+#endif
   input_count++;
 #ifdef ASTDEBUG
   if (input_count == 25)
@@ -1998,6 +2349,10 @@
   if (c >= 0)
     {
       struct input_event e;
+#ifdef VMS
+      /* contents are not zero! -Roar */
+      bzero(&e,sizeof(e));
+#endif
       e.kind = ascii_keystroke;
       XSETINT (e.code, c);
       e.frame_or_window = selected_frame;
@@ -2008,8 +2363,8 @@
   errno = old_errno;
 }
 
-/* Wait until there is something in kbd_buffer.  */
 
+#if 0
 void
 wait_for_kbd_input ()
 {
@@ -2050,6 +2405,7 @@
     }
   waiting_for_ast = 0;
 }
+#endif
 
 /* Get rid of any pending QIO, when we are about to suspend
    or when we want to throw away pending input.
@@ -2058,7 +2414,7 @@
    SYS$SETAST is used to avoid a timing error.  */
 
 void
-end_kbd_input ()
+end_kbd_input2 ()
 {
 #ifdef ASTDEBUG
   printf ("At end_kbd_input.\n");
@@ -2074,16 +2430,21 @@
   SYS$SETAST (0);
   /* Clear a flag, and tell ast routine above to set it.  */
   SYS$CLREF (input_ef);
+#if 0
   waiting_for_ast = 1;
+#endif
   stop_input = 1;
   SYS$CANCEL (input_fd);
   SYS$SETAST (1);
   SYS$WAITFR (input_ef);
+#if 0
   waiting_for_ast = 0;
+#endif
 }
 
 /* Wait for either input available or time interval expiry.  */
 
+#if 0
 void
 input_wait_timeout (timeval)
      int timeval;		/* Time to wait, in seconds */
@@ -2106,12 +2467,13 @@
   if (!detect_input_pending ())
     {
       /* No timing error: wait for flag to be set.  */
-      SYS$CANTIM (1, 0);
-      if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
+      SYS$CANTIM (reqidt, 0);
+      if (SYS$SETIMR (timer_ef, time, 0, reqidt) & 1) /* Set timer */
 	SYS$WFLOR (timer_ef, timer_eflist);	  /* Wait for timer expiry or input */
     }
   waiting_for_ast = 0;
 }
+#endif
 
 /* The standard `sleep' routine works some other way
    and it stops working if you have ever quit out of it.
@@ -2126,33 +2488,35 @@
   
   LIB$EMUL (&timeval, &large, &zero, time); 	  /* Convert to VMS format */
 
-  SYS$CANTIM (1, 0);
-  if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
+  SYS$CANTIM (reqidt, 0);
+  if (SYS$SETIMR (timer_ef, time, 0, reqidt) & 1) /* Set timer */
     SYS$WAITFR (timer_ef);	  /* Wait for timer expiry only */
 }
 
 void
-init_sigio (fd)
-     int fd;
+init_sigio2 (fd)
+  int fd;
 {
   request_sigio ();
 }
 
-reset_sigio ()
+reset_sigio2 () 
 {
   unrequest_sigio ();
 }
 
 void
-request_sigio ()
+request_sigio2 () 
 {
-  croak ("request sigio");
+  sys$setast(1);
+/*  croak ("request sigio");*/
 }
 
 void
-unrequest_sigio ()
+unrequest_sigio2 () 
 {
-  croak ("unrequest sigio");
+  sys$setast(0);
+/*  croak ("unrequest sigio");*/
 }
 
 #endif /* VMS */
@@ -2262,7 +2626,11 @@
 #ifdef TEXT_END
   return ((char *) TEXT_END);
 #else
+#ifdef VMS
+  int etext;
+#else 
   extern int etext;
+#endif
   return ((char *) &etext);
 #endif
 }
@@ -3254,9 +3622,18 @@
   if (oflag & O_CREAT) 
     return creat (path, mode);
 #endif
-  
+#ifdef VMS
+turn_on_atimers(0);
+#endif
+if (0)  {
+char buf[90];
+printf("dirs %s %s\n",getcwd(buf,90),path);  
+     }
   while ((rtnval = open (path, oflag, mode)) == -1
 	 && (errno == EINTR));
+#ifdef VMS
+turn_on_atimers(1);
+#endif
   return (rtnval);
 }
 
@@ -3709,7 +4086,11 @@
 MKDIR_PROTOTYPE
 #else
 int
+#ifdef VMS
+mkdir2 (dpath, dmode)
+#else
 mkdir (dpath, dmode)
+#endif
      char *dpath;
      int dmode;
 #endif
@@ -4210,9 +4591,13 @@
 
 #undef read
 int
-sys_read (fildes, buf, nbyte)
+sys_read  (fildes, buf, nbyte)
      int fildes;
+#ifdef VMS
+     void *buf;
+#else
      char *buf;
+#endif
      unsigned int nbyte;
 {
   return read (fildes, buf, (nbyte < MAXIOSIZE ? nbyte : MAXIOSIZE));
@@ -4250,9 +4635,13 @@
 
 #undef write
 int
-sys_write (fildes, buf, nbytes)
+sys_write  (fildes, buf, nbytes)
      int fildes;
+#ifndef VMS
      char *buf;
+#else
+     void *buf;
+#endif
      unsigned int nbytes;
 {
   register char *p;
@@ -4384,7 +4773,7 @@
 #endif
 
 int
-sys_creat (va_alist)
+sys_creat  (va_alist)
      va_dcl
 {
   va_list list_incrementer;
@@ -4813,7 +5202,7 @@
       vaxc$errno = status;
       return -1;
     }
-  free_pages *= 512;
+  free_pages *= 8192; /* was 512; */
 
   item_code = JPI$_FREP0VA;
   if (((status = LIB$GETJPI (&item_code, 0, 0, &frep0va)) & 1) == 0)
@@ -4873,13 +5262,19 @@
 }
 
 int
-execvp ()
+execvp2 ()
 {
   error ("execvp system call not implemented");
   return -1;
 }
 
 int
+sys_execvp(const char *__file, __char_ptr_const_ptr32 __argv)
+{
+decc$execvp(__file,__argv);
+}
+
+int
 rename (from, to)
      char *from, *to;
 {
@@ -4979,9 +5374,14 @@
   SYS$OPEN (&to_fab, 0, 0);	/* This fills in the nam$w_fid fields */
 
   /* Copy these fields into the fib */
+/*
   fib.fib$r_fid_overlay.fib$w_fid[0] = to_nam.nam$w_fid[0];
   fib.fib$r_fid_overlay.fib$w_fid[1] = to_nam.nam$w_fid[1];
   fib.fib$r_fid_overlay.fib$w_fid[2] = to_nam.nam$w_fid[2];
+*/
+  fib.fib$w_fid[0] = to_nam.nam$w_fid[0];   
+  fib.fib$w_fid[1] = to_nam.nam$w_fid[1];
+  fib.fib$w_fid[2] = to_nam.nam$w_fid[2];
 
   SYS$CLOSE (&to_fab, 0, 0);
 
@@ -5077,7 +5477,7 @@
 }
 
 long
-random ()
+random2 ()
 {
   /* Arrange to return a range centered on zero.  */
   return rand () - (1 << 30);
@@ -5272,7 +5672,11 @@
 #ifndef BSTRING
 #ifndef bcmp
 int
-bcmp (b1, b2, length)	/* This could be a macro! */
+#ifdef VMS
+bcmp2 (b1, b2, length)	/* This could be a macro! */
+#else
+bcmp (b1, b2, length)   /* This could be a macro! */
+#endif
      register char *b1;
      register char *b2;
      register int length;
@@ -5295,22 +5699,39 @@
 \f
 #ifndef HAVE_STRSIGNAL
 char *
-strsignal (code)
-     int code;
+strsignal (signo)
+     int signo;
 {
   char *signame = 0;
 
-  if (0 <= code && code < NSIG)
+  if (0 <= signo && signo < NSIG)
     {
 #ifdef VMS
-      signame = sys_errlist[code];
+      signame = sys_errlist[signo];
 #else
       /* Cast to suppress warning if the table has const char *.  */
-      signame = (char *) sys_siglist[code];
+      signame = (char *) sys_siglist[signo];
 #endif
     }
 
   return signame;
 }
 #endif /* HAVE_STRSIGNAL */
+
+#ifdef VMS
+fork ()
+{
+  return vfork();
+}
+
+int
+sys_select2 (nfds, rfds, wfds, efds, timeout)
+     int nfds;
+     int *rfds, *wfds, *efds;
+     int *timeout;
+{
+return select(nfds, rfds, wfds, efds, timeout);
+}
+
+#endif
 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-08 13:57   ` Richard Stallman
  2002-02-08 14:41     ` Roar Thronæs
@ 2002-02-09 11:03     ` Roar Thronæs
  2002-02-11  2:08       ` Richard Stallman
                         ` (2 more replies)
  1 sibling, 3 replies; 7+ messages in thread
From: Roar Thronæs @ 2002-02-09 11:03 UTC (permalink / raw)
  Cc: emacs-devel

On Fri, 8 Feb 2002, Richard Stallman wrote:

>     What I have got so far is available at:
>     ftp.nvg.ntnu.no /pub/vms/emacs/emacs21_1.tgz
>     It is diffable against an ordinary 21.1.
>
> It is not feasible for me to access that.  Can you email us

Have made a smaller file emacs21diff.gz available from the same place.
(430k)

(Some obvious files like $$save$$566236485q6e, *.i, nt/debug.bat_in are
not really diffs.)

-- 
Regards,
Roar Thronæs


_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-09 11:03     ` Roar Thronæs
@ 2002-02-11  2:08       ` Richard Stallman
  2002-03-16  8:36       ` roart
  2002-04-05 15:12       ` roart
  2 siblings, 0 replies; 7+ messages in thread
From: Richard Stallman @ 2002-02-11  2:08 UTC (permalink / raw)
  Cc: emacs-devel

    Have made a smaller file emacs21diff.gz available from the same place.
    (430k)

It isn't feasible for me to access any non-ASCII files by the method
available to me, but that isn't crucial.  I can get someone to fetch
file that for me, when and if I need it.  Right now looking at the
changes in sysdep.c is what I need to do.

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-09 11:03     ` Roar Thronæs
  2002-02-11  2:08       ` Richard Stallman
@ 2002-03-16  8:36       ` roart
  2002-04-05 15:12       ` roart
  2 siblings, 0 replies; 7+ messages in thread
From: roart @ 2002-03-16  8:36 UTC (permalink / raw)


On Sat, Feb 09, 2002 at 12:03:01PM +0100, Roar Thronæs wrote:
> On Fri, 8 Feb 2002, Richard Stallman wrote:

Seems RMS has too little time.

Anyone who has and can look into it?

Regards,
Roar Thronæs

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Emacs on VMS
  2002-02-09 11:03     ` Roar Thronæs
  2002-02-11  2:08       ` Richard Stallman
  2002-03-16  8:36       ` roart
@ 2002-04-05 15:12       ` roart
  2 siblings, 0 replies; 7+ messages in thread
From: roart @ 2002-04-05 15:12 UTC (permalink / raw)


On Sat, Feb 09, 2002 at 12:03:01PM +0100, Roar Thronæs wrote:
> On Fri, 8 Feb 2002, Richard Stallman wrote:
> 
> >     What I have got so far is available at:
> >     ftp.nvg.ntnu.no /pub/vms/emacs/emacs21_1.tgz
> >     It is diffable against an ordinary 21.1.

Have updated with the diffs from 21.1 to 21.2 (began earlier today).

21.2 tarball and diff are available from:
ftp.nvg.ntnu.no:/pub/vms/emacs/emacs212.tgz and
ftp.nvg.ntnu.no:/pub/vms/emacs/emacs212diff.gz (-u).
(There are a few (obvious) files that should not be there, though)

Anyone who has time for beginning to look at reintegration of VMS support?

-- 
Regards,
Roar Thronæs

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2002-04-05 15:12 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200201130735.g0D7ZRb07825@aztec.santafe.edu>
2002-02-07 11:29 ` Emacs on VMS Roar Thronæs
2002-02-08 13:57   ` Richard Stallman
2002-02-08 14:41     ` Roar Thronæs
2002-02-09 11:03     ` Roar Thronæs
2002-02-11  2:08       ` Richard Stallman
2002-03-16  8:36       ` roart
2002-04-05 15:12       ` roart

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).