summaryrefslogtreecommitdiff
path: root/editors
diff options
context:
space:
mode:
authorSteve Price <steve@FreeBSD.org>1999-12-25 02:22:53 +0000
committerSteve Price <steve@FreeBSD.org>1999-12-25 02:22:53 +0000
commitac538b4f47e3e1f0c69e6a48eb8f066aae917c3c (patch)
treea60f072c56eee34d34cc6dd866ebc5bed3125443 /editors
parentUnbreak mc (diff)
Use file locking similar to vi.
PR: 15330 Submitted by: Oliver Breuninger <ob@seicom.net>
Notes
Notes: svn path=/head/; revision=24032
Diffstat (limited to 'editors')
-rw-r--r--editors/joe-devel/files/patch-ab100
-rw-r--r--editors/joe-devel/files/patch-ad68
-rw-r--r--editors/joe-devel/files/patch-ae8
-rw-r--r--editors/joe/files/patch-ab100
-rw-r--r--editors/joe/files/patch-ad68
-rw-r--r--editors/joe/files/patch-ae8
-rw-r--r--editors/joe2/files/patch-ab100
-rw-r--r--editors/joe2/files/patch-ad68
-rw-r--r--editors/joe2/files/patch-ae8
9 files changed, 297 insertions, 231 deletions
diff --git a/editors/joe-devel/files/patch-ab b/editors/joe-devel/files/patch-ab
index 8268c6c9d4a7..7d9fed0e9226 100644
--- a/editors/joe-devel/files/patch-ab
+++ b/editors/joe-devel/files/patch-ab
@@ -1,63 +1,37 @@
-*** main.c.old Sun Jan 22 03:21:08 1995
---- main.c Tue Oct 15 16:54:32 1996
-***************
-*** 18,23 ****
---- 18,27 ----
-
- #include <stdio.h>
- #include <fcntl.h>
-+ #ifdef __FreeBSD__
-+ #include <locale.h>
-+ #include <ctype.h>
-+ #endif
- #include "config.h"
- #include "w.h"
- #include "tty.h"
-***************
-*** 186,191 ****
---- 190,209 ----
- #else
- run=namprt(argv[0]);
- #endif
-+
-+ #ifdef __FreeBSD__
-+ setlocale(LC_ALL, "");
-+ for(c=0;c<256;c++)
-+ { int a=0;
-+ if(iscntrl(c))
-+ a|=UNDERLINE;
-+ if((c&0x80)&&!isprint(c))
-+ a|=INVERSE;
-+ xlata[c]=a;
-+ if(isprint(c))
-+ xlatc[c]=c;
-+ }
-+ #endif
-
- if(s=getenv("LINES")) sscanf(s,"%d",&lines);
- if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
-*** scrn.h.old Thu Oct 6 10:09:04 1994
---- scrn.h Tue Oct 15 16:42:29 1996
-***************
-*** 254,263 ****
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned)(c)]), ((c)=xlatc[(unsigned)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
---- 254,263 ----
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned char)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned char)(c)]), ((c)=xlatc[(unsigned char)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
+--- main.c.orig Sun Jan 22 01:21:08 1995
++++ main.c Tue Dec 7 13:57:42 1999
+@@ -19,4 +19,8 @@
+ #include <stdio.h>
+ #include <fcntl.h>
++#ifdef __FreeBSD__
++#include <locale.h>
++#include <ctype.h>
++#endif
+ #include "config.h"
+ #include "w.h"
+@@ -188,4 +192,18 @@
+ #endif
+
++#ifdef __FreeBSD__
++ setlocale(LC_ALL, "");
++ for(c=0;c<256;c++)
++ { int a=0;
++ if(iscntrl(c))
++ a|=UNDERLINE;
++ if((c&0x80)&&!isprint(c))
++ a|=INVERSE;
++ xlata[c]=a;
++ if(isprint(c))
++ xlatc[c]=c;
++ }
++#endif
++
+ if(s=getenv("LINES")) sscanf(s,"%d",&lines);
+ if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
+@@ -366,5 +384,5 @@
+ if(help) helpon(maint);
+ if(!nonotice)
+- msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8 ** Copyright (C) 1995 Joseph H. Allen **\\i");
++ msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8l ** Copyright (C) 1995 Joseph H. Allen **\\i");
+ edloop(0);
+ vclose(vmem);
diff --git a/editors/joe-devel/files/patch-ad b/editors/joe-devel/files/patch-ad
index a199b2b076d5..258c8c2c2a31 100644
--- a/editors/joe-devel/files/patch-ad
+++ b/editors/joe-devel/files/patch-ad
@@ -1,18 +1,58 @@
---- b.c Fri Jan 20 03:38:25 1995
-+++ b.c.new Fri Jul 23 03:36:10 1999
-@@ -21,6 +21,7 @@
- #include <pwd.h>
+--- b.c.orig Fri Jan 20 09:38:25 1995
++++ b.c Tue Dec 7 13:35:11 1999
+@@ -22,4 +22,7 @@
#endif
#include <errno.h>
++#include <sys/file.h>
+#include <sys/types.h>
-
++#include <sys/stat.h>
+
#include "config.h"
- #include "blocks.h"
-@@ -1990,6 +1991,7 @@
- {
- long tim=time(0);
- B *b;
-+ mode_t mask=umask(077); /* no access to DEADJOE for others */
- FILE *f=fopen("DEADJOE","a");
- fprintf(f,"\n*** Modified files in JOE when it aborted on %s",ctime(&tim));
- if(sig) fprintf(f,"*** JOE was aborted by signal %d\n",sig);
+@@ -202,4 +205,5 @@
+ else b->o=pdefault;
+ mset(b->marks,0,sizeof(b->marks));
++ b->filehandle = -1; /* initialize filehandle &&& ob */
+ b->rdonly=0;
+ b->orphan=0;
+@@ -256,4 +260,8 @@
+ if(b && !--b->count)
+ {
++ if (b->filehandle != -1) {
++ /* close filehandle, free lock &&& ob */
++ close (b->filehandle);
++ }
+ if(b->changed) abrerr(b->name);
+ if(b==errbuf) errbuf=0;
+@@ -1672,4 +1680,5 @@
+ long skip,amnt;
+ char *n;
++ struct stat sb;
+ int nowrite=0;
+
+@@ -1705,4 +1714,26 @@
+ fi=fopen(n,"r");
+ if(!fi) nowrite=0;
++/*printf ("nowrite open=%i\n", nowrite); */
++
++ /* check file mod, if no write flags set,
++ joe in read only mode. &&& ob */
++
++ if (!nowrite) {
++ nowrite = (!stat (n, &sb)) && (!(sb.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)));
++ }
++/*printf ("nowrite stat=%i\n", nowrite); */
++
++ /* lock the file if writable, or go into read only mode if
++ already locked, */
++
++ if ((fi) && (!nowrite)) {
++ b->filehandle = dup (fileno (fi));
++ nowrite = (flock (b->filehandle, LOCK_EX | LOCK_NB));
++ }
++/*printf ("nowrite flock=%i\n", nowrite); */
++
++/*nowrite = 1; */ /* for test purpose */
++/*printf ("nowrite=%i\n", nowrite); */
++
+ }
+ joesep(n);
diff --git a/editors/joe-devel/files/patch-ae b/editors/joe-devel/files/patch-ae
new file mode 100644
index 000000000000..4f01692773cc
--- /dev/null
+++ b/editors/joe-devel/files/patch-ae
@@ -0,0 +1,8 @@
+--- b.h.orig Wed Dec 21 13:04:46 1994
++++ b.h Tue Dec 7 13:35:11 1999
+@@ -61,4 +61,5 @@
+ int internal; /* Set for internal buffers */
+ int er; /* Error code when file was loaded */
++ int filehandle; /* File handle for locking */
+ };
+
diff --git a/editors/joe/files/patch-ab b/editors/joe/files/patch-ab
index 8268c6c9d4a7..7d9fed0e9226 100644
--- a/editors/joe/files/patch-ab
+++ b/editors/joe/files/patch-ab
@@ -1,63 +1,37 @@
-*** main.c.old Sun Jan 22 03:21:08 1995
---- main.c Tue Oct 15 16:54:32 1996
-***************
-*** 18,23 ****
---- 18,27 ----
-
- #include <stdio.h>
- #include <fcntl.h>
-+ #ifdef __FreeBSD__
-+ #include <locale.h>
-+ #include <ctype.h>
-+ #endif
- #include "config.h"
- #include "w.h"
- #include "tty.h"
-***************
-*** 186,191 ****
---- 190,209 ----
- #else
- run=namprt(argv[0]);
- #endif
-+
-+ #ifdef __FreeBSD__
-+ setlocale(LC_ALL, "");
-+ for(c=0;c<256;c++)
-+ { int a=0;
-+ if(iscntrl(c))
-+ a|=UNDERLINE;
-+ if((c&0x80)&&!isprint(c))
-+ a|=INVERSE;
-+ xlata[c]=a;
-+ if(isprint(c))
-+ xlatc[c]=c;
-+ }
-+ #endif
-
- if(s=getenv("LINES")) sscanf(s,"%d",&lines);
- if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
-*** scrn.h.old Thu Oct 6 10:09:04 1994
---- scrn.h Tue Oct 15 16:42:29 1996
-***************
-*** 254,263 ****
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned)(c)]), ((c)=xlatc[(unsigned)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
---- 254,263 ----
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned char)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned char)(c)]), ((c)=xlatc[(unsigned char)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
+--- main.c.orig Sun Jan 22 01:21:08 1995
++++ main.c Tue Dec 7 13:57:42 1999
+@@ -19,4 +19,8 @@
+ #include <stdio.h>
+ #include <fcntl.h>
++#ifdef __FreeBSD__
++#include <locale.h>
++#include <ctype.h>
++#endif
+ #include "config.h"
+ #include "w.h"
+@@ -188,4 +192,18 @@
+ #endif
+
++#ifdef __FreeBSD__
++ setlocale(LC_ALL, "");
++ for(c=0;c<256;c++)
++ { int a=0;
++ if(iscntrl(c))
++ a|=UNDERLINE;
++ if((c&0x80)&&!isprint(c))
++ a|=INVERSE;
++ xlata[c]=a;
++ if(isprint(c))
++ xlatc[c]=c;
++ }
++#endif
++
+ if(s=getenv("LINES")) sscanf(s,"%d",&lines);
+ if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
+@@ -366,5 +384,5 @@
+ if(help) helpon(maint);
+ if(!nonotice)
+- msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8 ** Copyright (C) 1995 Joseph H. Allen **\\i");
++ msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8l ** Copyright (C) 1995 Joseph H. Allen **\\i");
+ edloop(0);
+ vclose(vmem);
diff --git a/editors/joe/files/patch-ad b/editors/joe/files/patch-ad
index a199b2b076d5..258c8c2c2a31 100644
--- a/editors/joe/files/patch-ad
+++ b/editors/joe/files/patch-ad
@@ -1,18 +1,58 @@
---- b.c Fri Jan 20 03:38:25 1995
-+++ b.c.new Fri Jul 23 03:36:10 1999
-@@ -21,6 +21,7 @@
- #include <pwd.h>
+--- b.c.orig Fri Jan 20 09:38:25 1995
++++ b.c Tue Dec 7 13:35:11 1999
+@@ -22,4 +22,7 @@
#endif
#include <errno.h>
++#include <sys/file.h>
+#include <sys/types.h>
-
++#include <sys/stat.h>
+
#include "config.h"
- #include "blocks.h"
-@@ -1990,6 +1991,7 @@
- {
- long tim=time(0);
- B *b;
-+ mode_t mask=umask(077); /* no access to DEADJOE for others */
- FILE *f=fopen("DEADJOE","a");
- fprintf(f,"\n*** Modified files in JOE when it aborted on %s",ctime(&tim));
- if(sig) fprintf(f,"*** JOE was aborted by signal %d\n",sig);
+@@ -202,4 +205,5 @@
+ else b->o=pdefault;
+ mset(b->marks,0,sizeof(b->marks));
++ b->filehandle = -1; /* initialize filehandle &&& ob */
+ b->rdonly=0;
+ b->orphan=0;
+@@ -256,4 +260,8 @@
+ if(b && !--b->count)
+ {
++ if (b->filehandle != -1) {
++ /* close filehandle, free lock &&& ob */
++ close (b->filehandle);
++ }
+ if(b->changed) abrerr(b->name);
+ if(b==errbuf) errbuf=0;
+@@ -1672,4 +1680,5 @@
+ long skip,amnt;
+ char *n;
++ struct stat sb;
+ int nowrite=0;
+
+@@ -1705,4 +1714,26 @@
+ fi=fopen(n,"r");
+ if(!fi) nowrite=0;
++/*printf ("nowrite open=%i\n", nowrite); */
++
++ /* check file mod, if no write flags set,
++ joe in read only mode. &&& ob */
++
++ if (!nowrite) {
++ nowrite = (!stat (n, &sb)) && (!(sb.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)));
++ }
++/*printf ("nowrite stat=%i\n", nowrite); */
++
++ /* lock the file if writable, or go into read only mode if
++ already locked, */
++
++ if ((fi) && (!nowrite)) {
++ b->filehandle = dup (fileno (fi));
++ nowrite = (flock (b->filehandle, LOCK_EX | LOCK_NB));
++ }
++/*printf ("nowrite flock=%i\n", nowrite); */
++
++/*nowrite = 1; */ /* for test purpose */
++/*printf ("nowrite=%i\n", nowrite); */
++
+ }
+ joesep(n);
diff --git a/editors/joe/files/patch-ae b/editors/joe/files/patch-ae
new file mode 100644
index 000000000000..4f01692773cc
--- /dev/null
+++ b/editors/joe/files/patch-ae
@@ -0,0 +1,8 @@
+--- b.h.orig Wed Dec 21 13:04:46 1994
++++ b.h Tue Dec 7 13:35:11 1999
+@@ -61,4 +61,5 @@
+ int internal; /* Set for internal buffers */
+ int er; /* Error code when file was loaded */
++ int filehandle; /* File handle for locking */
+ };
+
diff --git a/editors/joe2/files/patch-ab b/editors/joe2/files/patch-ab
index 8268c6c9d4a7..7d9fed0e9226 100644
--- a/editors/joe2/files/patch-ab
+++ b/editors/joe2/files/patch-ab
@@ -1,63 +1,37 @@
-*** main.c.old Sun Jan 22 03:21:08 1995
---- main.c Tue Oct 15 16:54:32 1996
-***************
-*** 18,23 ****
---- 18,27 ----
-
- #include <stdio.h>
- #include <fcntl.h>
-+ #ifdef __FreeBSD__
-+ #include <locale.h>
-+ #include <ctype.h>
-+ #endif
- #include "config.h"
- #include "w.h"
- #include "tty.h"
-***************
-*** 186,191 ****
---- 190,209 ----
- #else
- run=namprt(argv[0]);
- #endif
-+
-+ #ifdef __FreeBSD__
-+ setlocale(LC_ALL, "");
-+ for(c=0;c<256;c++)
-+ { int a=0;
-+ if(iscntrl(c))
-+ a|=UNDERLINE;
-+ if((c&0x80)&&!isprint(c))
-+ a|=INVERSE;
-+ xlata[c]=a;
-+ if(isprint(c))
-+ xlatc[c]=c;
-+ }
-+ #endif
-
- if(s=getenv("LINES")) sscanf(s,"%d",&lines);
- if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
-*** scrn.h.old Thu Oct 6 10:09:04 1994
---- scrn.h Tue Oct 15 16:42:29 1996
-***************
-*** 254,263 ****
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned)(c)]), ((c)=xlatc[(unsigned)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
---- 254,263 ----
-
- #define xlat(a,c) \
- ( \
-! (dspasis && ((unsigned char)(c)>=128)) ? \
- ((a)=0) \
- : \
-! (((a)=xlata[(unsigned char)(c)]), ((c)=xlatc[(unsigned char)(c)])) \
- )
-
- /* int eraeol(SCRN *t,int x,int y);
+--- main.c.orig Sun Jan 22 01:21:08 1995
++++ main.c Tue Dec 7 13:57:42 1999
+@@ -19,4 +19,8 @@
+ #include <stdio.h>
+ #include <fcntl.h>
++#ifdef __FreeBSD__
++#include <locale.h>
++#include <ctype.h>
++#endif
+ #include "config.h"
+ #include "w.h"
+@@ -188,4 +192,18 @@
+ #endif
+
++#ifdef __FreeBSD__
++ setlocale(LC_ALL, "");
++ for(c=0;c<256;c++)
++ { int a=0;
++ if(iscntrl(c))
++ a|=UNDERLINE;
++ if((c&0x80)&&!isprint(c))
++ a|=INVERSE;
++ xlata[c]=a;
++ if(isprint(c))
++ xlatc[c]=c;
++ }
++#endif
++
+ if(s=getenv("LINES")) sscanf(s,"%d",&lines);
+ if(s=getenv("COLUMNS")) sscanf(s,"%d",&columns);
+@@ -366,5 +384,5 @@
+ if(help) helpon(maint);
+ if(!nonotice)
+- msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8 ** Copyright (C) 1995 Joseph H. Allen **\\i");
++ msgnw(lastw(maint)->object,"\\i** Joe's Own Editor v2.8l ** Copyright (C) 1995 Joseph H. Allen **\\i");
+ edloop(0);
+ vclose(vmem);
diff --git a/editors/joe2/files/patch-ad b/editors/joe2/files/patch-ad
index a199b2b076d5..258c8c2c2a31 100644
--- a/editors/joe2/files/patch-ad
+++ b/editors/joe2/files/patch-ad
@@ -1,18 +1,58 @@
---- b.c Fri Jan 20 03:38:25 1995
-+++ b.c.new Fri Jul 23 03:36:10 1999
-@@ -21,6 +21,7 @@
- #include <pwd.h>
+--- b.c.orig Fri Jan 20 09:38:25 1995
++++ b.c Tue Dec 7 13:35:11 1999
+@@ -22,4 +22,7 @@
#endif
#include <errno.h>
++#include <sys/file.h>
+#include <sys/types.h>
-
++#include <sys/stat.h>
+
#include "config.h"
- #include "blocks.h"
-@@ -1990,6 +1991,7 @@
- {
- long tim=time(0);
- B *b;
-+ mode_t mask=umask(077); /* no access to DEADJOE for others */
- FILE *f=fopen("DEADJOE","a");
- fprintf(f,"\n*** Modified files in JOE when it aborted on %s",ctime(&tim));
- if(sig) fprintf(f,"*** JOE was aborted by signal %d\n",sig);
+@@ -202,4 +205,5 @@
+ else b->o=pdefault;
+ mset(b->marks,0,sizeof(b->marks));
++ b->filehandle = -1; /* initialize filehandle &&& ob */
+ b->rdonly=0;
+ b->orphan=0;
+@@ -256,4 +260,8 @@
+ if(b && !--b->count)
+ {
++ if (b->filehandle != -1) {
++ /* close filehandle, free lock &&& ob */
++ close (b->filehandle);
++ }
+ if(b->changed) abrerr(b->name);
+ if(b==errbuf) errbuf=0;
+@@ -1672,4 +1680,5 @@
+ long skip,amnt;
+ char *n;
++ struct stat sb;
+ int nowrite=0;
+
+@@ -1705,4 +1714,26 @@
+ fi=fopen(n,"r");
+ if(!fi) nowrite=0;
++/*printf ("nowrite open=%i\n", nowrite); */
++
++ /* check file mod, if no write flags set,
++ joe in read only mode. &&& ob */
++
++ if (!nowrite) {
++ nowrite = (!stat (n, &sb)) && (!(sb.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)));
++ }
++/*printf ("nowrite stat=%i\n", nowrite); */
++
++ /* lock the file if writable, or go into read only mode if
++ already locked, */
++
++ if ((fi) && (!nowrite)) {
++ b->filehandle = dup (fileno (fi));
++ nowrite = (flock (b->filehandle, LOCK_EX | LOCK_NB));
++ }
++/*printf ("nowrite flock=%i\n", nowrite); */
++
++/*nowrite = 1; */ /* for test purpose */
++/*printf ("nowrite=%i\n", nowrite); */
++
+ }
+ joesep(n);
diff --git a/editors/joe2/files/patch-ae b/editors/joe2/files/patch-ae
new file mode 100644
index 000000000000..4f01692773cc
--- /dev/null
+++ b/editors/joe2/files/patch-ae
@@ -0,0 +1,8 @@
+--- b.h.orig Wed Dec 21 13:04:46 1994
++++ b.h Tue Dec 7 13:35:11 1999
+@@ -61,4 +61,5 @@
+ int internal; /* Set for internal buffers */
+ int er; /* Error code when file was loaded */
++ int filehandle; /* File handle for locking */
+ };
+