summaryrefslogtreecommitdiff
path: root/src/fileio.c
diff options
context:
space:
mode:
authorjnweiger <jnweiger>2005-12-16 17:48:14 +0000
committerjnweiger <jnweiger>2005-12-16 17:48:14 +0000
commit80a04457c6a81cf26536bfa8463f6b78fd92c9a4 (patch)
treecdd130778693d1963e14d67a234c8a10a80dec40 /src/fileio.c
parent450edb64789fd7d73f774a9101779f05f2fb639a (diff)
downloadscreen-80a04457c6a81cf26536bfa8463f6b78fd92c9a4.tar.gz
old version screen-3.7.1 Nov 20 1995
Diffstat (limited to 'src/fileio.c')
-rw-r--r--src/fileio.c65
1 files changed, 37 insertions, 28 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 9f16be3..b320b94 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -15,7 +15,8 @@
*
* You should have received a copy of the GNU General Public License
* along with this program (see the file COPYING); if not, write to the
- * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
****************************************************************
*/
@@ -68,7 +69,7 @@ register char *str1, *str2;
len1 = strlen(str1);
if (len1 == 0)
- return(str2);
+ return str2;
add_colon = (str1[len1 - 1] != ':');
if (str2)
{
@@ -206,9 +207,9 @@ char *rcfilename;
DisplaySleep(atoi(args[1]));
}
#ifdef TERMINFO
- else if (strcmp(args[0], "terminfo") == 0)
+ else if (!strcmp(args[0], "termcapinfo") || !strcmp(args[0], "terminfo"))
#else
- else if (strcmp(args[0], "termcap") == 0)
+ else if (!strcmp(args[0], "termcapinfo") || !strcmp(args[0], "termcap"))
#endif
{
if (!display)
@@ -272,9 +273,7 @@ char *rcfilename;
debug("finishrc is going...\n");
while (fgets(buf, sizeof buf, fp) != NULL)
- {
- RcLine(buf);
- }
+ RcLine(buf);
(void) fclose(fp);
Free(rc_name);
rc_name = "";
@@ -293,6 +292,7 @@ char *rcfilename;
* "$:terminfoname:" -> "termcapvalue"
*
* "\101" -> "A"
+ * "^a" -> "\001"
*/
char *
expand_vars(ss)
@@ -304,6 +304,7 @@ char *ss;
register char *s = ss;
register char *v;
char xbuf[11];
+ int i;
while (*s && *s != '\0' && *s != '\n' && esize > 0)
{
@@ -364,6 +365,17 @@ char *ss;
p++;
s = p;
}
+ else if (*s == '^' && !quofl)
+ {
+ s++;
+ i = *s++;
+ if (i == '?')
+ i = '\177';
+ else
+ i &= 0x1f;
+ *e++ = i;
+ esize--;
+ }
else
{
/*
@@ -374,8 +386,6 @@ char *ss;
{
if (s[1] >= '0' && s[1] <= '7')
{
- int i;
-
s++;
i = *s - '0';
s++;
@@ -399,7 +409,9 @@ char *ss;
if (s[1] == '$' ||
(s[1] == '\\' && s[2] == '$') ||
s[1] == '\'' ||
- (s[1] == '\\' && s[2] == '\''))
+ (s[1] == '\\' && s[2] == '\'') ||
+ s[1] == '^' ||
+ (s[1] == '\\' && s[2] == '^'))
s++;
}
}
@@ -488,7 +500,7 @@ int dump;
}
for (i = 0; i < D_height; i++)
{
- p = fore->w_image[i];
+ p = fore->w_mlines[i].image;
for (k = D_width - 1; k >= 0 && p[k] == ' '; k--)
;
for (j = 0; j <= k; j++)
@@ -607,13 +619,10 @@ int *lenp;
void
KillBuffers()
{
- char fn[1024];
- sprintf(fn, "%s", BufferFile);
-
if (UserContext() > 0)
- UserReturn(unlink(SockPath) ? errno : 0);
+ UserReturn(unlink(BufferFile) ? errno : 0);
errno = UserStatus();
- Msg(errno, "%s %sremoved", fn, errno ? "not " : "");
+ Msg(errno, "%s %sremoved", BufferFile, errno ? "not " : "");
}
#endif /* COPY_PASTE */
@@ -642,7 +651,7 @@ char *mode;
return fi;
#else
if (eff_uid == real_uid)
- return(fopen(name, mode));
+ return fopen(name, mode);
if (mode[0] && mode[1] == '+')
flags = O_RDWR;
else
@@ -654,16 +663,16 @@ char *mode;
else if (mode[0] != 'r')
{
errno = EINVAL;
- return(0);
+ return 0;
}
if ((fd = secopen(name, flags, 0666)) < 0)
- return(0);
+ return 0;
if ((fi = fdopen(fd, mode)) == 0)
{
close(fd);
- return(0);
+ return 0;
}
- return(fi);
+ return fi;
#endif
}
@@ -690,7 +699,7 @@ int mode;
return fd;
#else
if (eff_uid == real_uid)
- return(open(name, flags, mode));
+ return open(name, flags, mode);
/* Truncation/creation is done in UserContext */
if ((flags & O_TRUNC) || ((flags & O_CREAT) && access(name, F_OK)))
{
@@ -709,18 +718,18 @@ int mode;
{
if (q > 0)
errno = q;
- return(-1);
+ return -1;
}
}
if (access(name, F_OK))
- return(-1);
+ return -1;
if ((fd = open(name, flags & ~(O_TRUNC | O_CREAT), 0)) < 0)
- return(-1);
+ return -1;
debug("open successful\n");
if (fstat(fd, &stb))
{
close(fd);
- return(-1);
+ return -1;
}
debug("fstat successful\n");
if (stb.st_uid != real_uid)
@@ -742,10 +751,10 @@ int mode;
debug1("secopen: permission denied (%03o)\n", stb.st_mode & 07777);
close(fd);
errno = EACCES;
- return(-1);
+ return -1;
}
}
debug1("secopen ok - returning %d\n", fd);
- return(fd);
+ return fd;
#endif
}