pkgsrc/editors/mg2a/patches/patch-ac
tron 4d21cec081 Update "mg2a" package to version to version 1.11:
Don't attempt to edit non regular files.

Patches supplied by John Refling in PR pkg/10536.
2000-07-10 18:26:52 +00:00

78 lines
2.2 KiB
Text

$NetBSD: patch-ac,v 1.2 2000/07/10 18:26:54 tron Exp $
--- sys/bsd/fileio.c.orig Sun Jul 3 10:50:24 1988
+++ sys/bsd/fileio.c Wed May 31 16:38:11 2000
@@ -2,6 +2,9 @@
* bsd (4.2, others?), Sun (3.2, ?) and Ultrix-32 (?) file I/O.
*/
#include "def.h"
+#include <unistd.h> /* refling added this per compiler */
+#include <sys/types.h>
+#include <sys/stat.h>
static FILE *ffp;
extern char *getenv(), *strncpy();
@@ -11,6 +14,12 @@
* Open a file for reading.
*/
ffropen(fn) char *fn; {
+ // prevent opening non-regular files - refling
+ struct stat st;
+ if (fn == NULL || 0 == strlen(fn) || (0 == stat(fn, &st) && ((st.st_mode & S_IFMT) != S_IFREG))) {
+ ewprintf("not a regular file");
+ return(FIOERR);
+ }
if ((ffp=fopen(fn, "r")) == NULL)
return (FIOFNF);
return (FIOSUC);
@@ -22,6 +31,12 @@
* FALSE on error (cannot create).
*/
ffwopen(fn) char *fn; {
+ // prevent opening non-regular files - refling
+ struct stat st;
+ if (fn == NULL || 0 == strlen(fn) || (0 == stat(fn, &st) && ((st.st_mode & S_IFMT) != S_IFREG))) {
+ ewprintf("not a regular file");
+ return(FIOERR);
+ }
if ((ffp=fopen(fn, "w")) == NULL) {
ewprintf("Cannot open file for writing");
return (FIOERR);
@@ -276,7 +291,7 @@
if ((file = getenv("HOME")) == NULL) goto notfound;
if (strlen(file)+7 >= NFILEN - 1) goto notfound;
(VOID) strcpy(home, file);
- (VOID) strcat(home, "/.mg");
+ (VOID) strcat(home, "/.mgrc");
if (suffix != NULL) {
(VOID) strcat(home, "-");
(VOID) strcat(home, suffix);
@@ -295,6 +310,18 @@
if (access(file, F_OK ) == 0) return file;
#endif
+
+/* refling - try to open a file name given by MGRC env var */
+ if ((file = getenv("MGRC")) == NULL) return NULL;
+ if (strlen(file)+7 >= NFILEN - 1) goto notfound;
+ (VOID) strcpy(home, file);
+ if (suffix != NULL) {
+ (VOID) strcat(home, "-");
+ (VOID) strcat(home, suffix);
+ }
+ if (access(home, F_OK ) == 0) return home;
+
+
return NULL;
}
#endif
@@ -318,7 +345,8 @@
execve("cp", eargv, (char **)NULL);
_exit(1); /* shouldn't happen */
}
- while(wait(&status) != pid) {}
+/* while(wait(&status) != pid) {} refling, was this */
+ while(wait((int *)&status) != pid) {}
return status.w_status == 0;
}