$NetBSD: patch-de,v 1.6 2012/11/16 00:29:40 joerg Exp $

--- lib/libxview/textsw/es_file.c.orig	1993-06-29 05:17:34.000000000 +0000
+++ lib/libxview/textsw/es_file.c
@@ -85,18 +85,15 @@ static char     sccsid[] = "@(#)es_file.
 
 #include <string.h>
 #include <fcntl.h>
-#ifdef SVR4
 #include <stdlib.h>
 #include <dirent.h>
-#else
-#include <sys/dir.h>
-#endif /* SVR4 */
-#include <sys/errno.h>
+#include <errno.h>
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/file.h>
 #include <stdio.h>
+#include <limits.h>
 #include <xview/pkg.h>
 #include <xview/attrol.h>
 #include <xview_private/primal.h>
@@ -109,9 +106,14 @@ static char     sccsid[] = "@(#)es_file.
 #include <xview_private/txt_18impl.h>
 
 
+#if (defined(BSD) && (BSD >= 199306))
+extern const char *const sys_err_list[];
+extern off_t	lseek();
+#else
 extern int      errno, sys_nerr;
 extern char    *sys_errlist[];
 extern long     lseek();
+#endif
 
 static void update_read_buf();  /* update the read buf if overlaps write buf */
 static Es_status es_file_commit();
@@ -216,7 +218,7 @@ update_read_buf(private,start,end,buf)
     }
 }
     
-Pkg_private int
+Pkg_private void
 es_file_append_error(error_buf, file_name, status)
     char           *error_buf;
     CHAR           *file_name;
@@ -330,6 +332,16 @@ es_file_create(name, options, status)
     int             open_option;
     struct stat     buf;
     Es_status       dummy_status;
+#ifdef NAME_MAX
+#ifndef BACKUP_AT_HEAD_OF_LINK
+    char           *temp_name, true_name[NAME_MAX];
+    int             link_count, true_name_len;
+#endif
+#ifdef OW_I18N
+    char            name[NAME_MAX];
+    (void) wcstombs(name, name_wc, NAME_MAX);
+#endif /* OW_I18N */
+#else
 #ifndef BACKUP_AT_HEAD_OF_LINK
     char           *temp_name, true_name[MAXNAMLEN];
     int             link_count, true_name_len;
@@ -338,6 +350,7 @@ es_file_create(name, options, status)
     char            name[MAXNAMLEN];      
     (void) wcstombs(name, name_wc, MAXNAMLEN);
 #endif /* OW_I18N */
+#endif
 
     if (status == 0)
 	status = &dummy_status;
@@ -473,7 +486,7 @@ Error_Return:
 }
 
 /* ARGSUSED */
-static          caddr_t
+caddr_t
 #ifdef ANSI_FUNC_PROTO
 es_file_get(Es_handle esh, Es_attribute attribute, ...)
 #else
@@ -1146,9 +1159,16 @@ es_file_copy_status(esh, to)
     Es_file_data    private = ABS_TO_REP(esh);
     int             dummy;
 #ifdef OW_I18N
+#ifdef NAME_MAX
+    char            to_mb[NAME_MAX];
+
+    (void) wcstombs(to_mb,to,NAME_MAX);
+#else
     char            to_mb[MAXNAMLEN];
 
     (void) wcstombs(to_mb,to,MAXNAMLEN);
+#endif
+
     return (es_copy_status(to_mb,private->fd, &dummy));
 #else
     return (es_copy_status(to, private->fd, &dummy));
@@ -1163,7 +1183,11 @@ es_file_make_backup(esh, backup_pattern,
 /* Currently backup_pattern must be of the form "%s<suffix>" */
 {
     register Es_file_data private;
+#ifdef NAME_MAX
+    CHAR            backup_name[NAME_MAX];
+#else
     CHAR            backup_name[MAXNAMLEN];  
+#endif
     int             fd, len, retrying = FALSE;
     Es_status       dummy_status;
     Es_handle       result;
@@ -1200,9 +1224,15 @@ Retry:
 	     * cannot be overwritten, so try to remove it first.
 	     */
 #ifdef OW_I18N
+#ifdef NAME_MAX
+	    char	dummy[NAME_MAX];
+
+	    (void) wcstombs(dummy, backup_name, MAXNAMLEN);
+#else
 	    char	dummy[MAXNAMLEN];
 
 	    (void) wcstombs(dummy, backup_name, MAXNAMLEN);
+#endif
 	    if (unlink(dummy) == 0) {	/* } for match */
 #else
 	    if (unlink(backup_name) == 0) {
@@ -1239,7 +1269,11 @@ es_file_make_wchar_file(esh, open_option
 {
     register Es_file_data private;
     char            *filename;
+#ifdef NAME_MAX
+    char	    old_filename[NAME_MAX];
+#else
     char	    old_filename[MAXNAMLEN];
+#endif
     int             fd, new_fd, len;
     extern int	    es_mb_to_wc_fd();
 
@@ -1255,7 +1289,11 @@ es_file_make_wchar_file(esh, open_option
 
     filename = tempnam(NULL,NULL);
 
+#ifdef NAME_MAX
+    (void)wcstombs(old_filename, private->name, NAME_MAX);
+#else
     (void)wcstombs(old_filename, private->name, MAXNAMLEN);
+#endif
     private->skipped = 0;
 
     if (es_mb_to_wc_fd(old_filename, filename, fd, &private->skipped) == 0) {
