/usr/share/jed/lib/rcs.sl is in jed-common 1:0.99.19-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | % File: rcs.sl -*- SLang -*-
%
% Author: Guido Gonzato, <ggonza@tin.it>. Contributions by JED.
%
% Version: 1.0.1. This file provides an interface to RCS a la
% Emacs (sort of).
%
% Installation: unless rcs.sl is already loaded from site.sl (check),
% insert this line in your .jedrc:
%
% () = evalfile ("rcs.sl");
%
% or, better, insert autoload lines in your defaults.sl
% like this:
%
% autoload ("rcs_open_file", "rcs.sl");
% autoload ("rcs_check_in_and_out", "rcs.sl");
% autoload ("rcs_read_log", "rcs.sl");
%
% Usage: rcs_open_file () -- open an RCS file
% rcs_check_in_and_out () -- check in/out an RCS file
% rcs_read_log () -- read the change history
%
% you might want to set these key bindings in your .jedrc:
%
% setkey_reserved ("rcs_open_file", "vf");
% setkey_reserved ("rcs_check_in_and_out", "vv");
% setkey_reserved ("rcs_read_log", "vl");
%
%
% Last updated: 23 February 2001
%_debug_info = 1;
private variable Last_Comment = "";
% Build a file name like "/home/guido/RCS/file.txt,v"
private define build_rcs_filename (file)
{
variable dir;
(dir, file) = parse_filename (file);
return dircat (dircat (dir, "RCS"), strcat (file, ",v"));
}
private define checkout (file)
{
variable cmd, dir, name;
flush (sprintf ("Checking out %s...", file));
(dir, name) = parse_filename (file);
cmd = sprintf ("cd %s; co -l %s > /dev/null 2>&1", dir, name);
if (0 != system (cmd))
verror ("Error checking out %s!", file);
flush (sprintf ("Checking out %s...done.", file));
}
private define checkin (file, msg)
{
variable dir, name, cmd;
() = write_buffer (file);
(dir, name) = parse_filename (file);
Last_Comment = read_mini (msg, "", Last_Comment);
cmd = sprintf ("cd %s; echo \"%s\" | ci %s > /dev/null 2>&1",
dir, Last_Comment, name);
if (0 != system (cmd))
verror ("Error checking in %s!", file);
set_readonly (1);
setbuf_info (getbuf_info () | 0x8);
flush ("Note: file is write protected.");
}
define rcs_open_file () % Emacs uses ^X-v-f
{
variable rcs_file, dir, file;
file = read_file_from_mini ("RCS open file:");
file = file [[:-3]]; % remove ",v"
(dir, file) = parse_filename (file);
file = dircat (dir [[:-5]], file); % remove "RCS/"
checkout (file);
() = find_file (file);
}
define rcs_check_in_and_out () % Emacs uses ^X-v-v
{
variable file, dir, flags;
% check if the current buffer is attached to an RCS file.
(file, dir,, flags) = getbuf_info();
file = dircat (dir, file);
% if it doesn't exist, then create the RCS dir, check in, and exit
if (0 == file_status (build_rcs_filename (file))) {
dir = dircat (dir, "RCS");
if (0 == file_status (dir)) {
if (0 != mkdir (dir, 0777))
verror ("Error creating RCS directory %s!", dir);
}
checkin (file, "RCS file description:");
return;
}
% the RCS file exists; if the buffer is read only, then check it out
if (flags & (1 shl 3)) { % readonly
checkout (file);
delbuf (whatbuf());
() = find_file (file);
return;
}
% Otherwise, check it in
checkin (file, "Enter a change comment:");
}
private variable rlog_buf = "*rlog*";
define close_rlog_buffer ()
{
variable cbuf = whatbuf ();
setbuf (rlog_buf);
set_buffer_modified_flag (0);
setbuf (cbuf);
delbuf (rlog_buf);
}
define rcs_read_log ()
{
variable rcs_file, dir, file, cmd, tmp_file;
variable rlog_map= "rlog_map";
file = read_file_from_mini ("rlog of RCS file:");
file = file [[:-3]]; % remove ",v"
(dir, file) = parse_filename (file);
file = dircat (dir [[:-5]], file); % remove "RCS/"
tmp_file = make_tmp_file ("/tmp/jedrlog");
cmd = sprintf ("rlog %s > %s", file, tmp_file); % exec rlog
if (0 != system (cmd))
verror ("Error rlogging %s!", file);
sw2buf (rlog_buf);
insert_file (tmp_file);
delete_file (tmp_file);
most_mode ();
!if (keymap_p (rlog_map)) {
make_keymap (rlog_map);
definekey ("close_rlog_buffer", "q", rlog_map);
}
use_keymap (rlog_map);
set_readonly (1);
}
provide ("rcs");
% --- End of file rcs.sl ---
|