diff src/fileio.c @ 372:481e29c1e27e

*** empty log message ***
author Jim Blandy <jimb@redhat.com>
date Fri, 02 Aug 1991 02:24:35 +0000
parents 80a890dbbeb5
children 7812e9efc1af
line wrap: on
line diff
--- a/src/fileio.c	Fri Aug 02 00:39:31 1991 +0000
+++ b/src/fileio.c	Fri Aug 02 02:24:35 1991 +0000
@@ -20,12 +20,27 @@
 
 #include <sys/types.h>
 #include <sys/stat.h>
+
+#ifdef VMS
+#include "pwd.h"
+#else
 #include <pwd.h>
+#endif
+
 #include <ctype.h>
+
+#ifdef VMS
+#include "dir.h"
+#include <perror.h>
+#include <stddef.h>
+#include <string.h>
+#else
 #include <sys/dir.h>
+#endif
+
 #include <errno.h>
 
-#ifndef VMS
+#ifndef vax11c
 extern int errno;
 extern char *sys_errlist[];
 extern int sys_nerr;
@@ -46,7 +61,6 @@
 #include "window.h"
 
 #ifdef VMS
-#include <perror.h>
 #include <file.h>
 #include <rmsdef.h>
 #include <fab.h>
@@ -217,7 +231,8 @@
 	  brack = ']';
 	  strcpy (out, "[.");
 	}
-      if (dot = index (p, '.'))
+      dot = index (p, '.');
+      if (dot)
 	{
 	  /* blindly remove any extension */
 	  size = strlen (out) + (dot - p);
@@ -348,7 +363,8 @@
 
       /* If bracket is ']' or '>', bracket - 2 is the corresponding
 	 opening bracket.  */
-      if (!(ptr = index (src, bracket - 2)))
+      ptr = index (src, bracket - 2);
+      if (ptr == 0)
 	{ /* no opening bracket */
 	  strcpy (dst, src);
 	  return 0;
@@ -648,9 +664,24 @@
       newdir = XSTRING (defalt)->data;
     }
 
-  /* Now concatenate the directory and name to new space in the stack frame */
+  if (newdir != 0)
+    {
+      /* Get rid of any slash at the end of newdir.  */
+      int length = strlen (newdir);
+      if (newdir[length - 1] == '/')
+	{
+	  unsigned char *temp = (unsigned char *) alloca (length);
+	  bcopy (newdir, temp, length - 1);
+	  temp[length - 1] = 0;
+	  newdir = temp;
+	}
+      tlen = length + 1;
+    }
+  else
+    tlen = 0;
 
-  tlen = (newdir ? strlen (newdir) + 1 : 0) + strlen (nm) + 1;
+  /* Now concatenate the directory and name to new space in the stack frame */
+  tlen += strlen (nm) + 1;
   target = (unsigned char *) alloca (tlen);
   *target = 0;