SCAME patch no. 2
Leif Samuelsson
leif at erisun.UUCP
Tue Feb 26 13:36:04 AEST 1985
System: scame 1.0
Patch #: 2
Priority: Rather high
Description:
The parser for command and variable names does not interpret
a space correctly.
Repeat-by:
Try to give the command "M-X C Mode".
Fix: From news, say "| patch -d DIR", where DIR is your scame
source directory.
Outside of news, say "cd DIR; patch <thisarticle".
If you don't have the patch program, apply the following
by hand, or get patch.
After re-compiling, it is necessary to start up scame with
the "-n" option, because the tempfiles will be invalid.
Before installing, make sure that no one is running scame,
then remove all the tempfiles in the TMPDIR directory.
Prereq: 1.0.1
*** 1.0/io.c Tue Feb 19 20:32:53 1985
--- io.c Tue Feb 19 22:12:24 1985
***************
*** 1,6
/* SCAME io.c */
! /* Revision 1.0.1 1985-02-17 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME io.c */
! /* Revision 1.0.2 1985-02-19 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 828,833
{
char str[80], tstr[80], *p;
int c, i;
*str = '\0';
do {
c=instring(prompt, str, strlen(str), "\t", "\007\022\033\r ?");
--- 828,835 -----
{
char str[80], tstr[80], *p;
int c, i;
+
+ /* This code should be merged with setvariable() */
*str = '\0';
do {
c=instring(prompt, str, strlen(str), "\t", "\007\022\033\r ?");
***************
*** 831,837
*str = '\0';
do {
c=instring(prompt, str, strlen(str), "\t", "\007\022\033\r ?");
! if (c == 7 || (c == 13 && *str=='\0'))
return(0);
switch (c) {
case '\022': /* ^R */
--- 833,840 -----
*str = '\0';
do {
c=instring(prompt, str, strlen(str), "\t", "\007\022\033\r ?");
! if (c == 7 || (c == 13 && *str=='\0')) {
! typing = FALSE;
return(0);
}
switch (c) {
***************
*** 833,838
c=instring(prompt, str, strlen(str), "\t", "\007\022\033\r ?");
if (c == 7 || (c == 13 && *str=='\0'))
return(0);
switch (c) {
case '\022': /* ^R */
strcat(str, "^R"); break;
--- 836,842 -----
if (c == 7 || (c == 13 && *str=='\0')) {
typing = FALSE;
return(0);
+ }
switch (c) {
case '\022': /* ^R */
strcat(str, "^R"); break;
***************
*** 840,847
listmatching((struct tabstruct *)x_comtab,str); break;
case ' ':
strcpy(tstr,str);
! (void) tablk((struct tabstruct *)x_comtab,str,0);
! if (strlen(str) == strlen(tstr))
pchar(BELL);
else if ((p=index(str+strlen(tstr), ' ')) != NIL)
*(p+1) = '\0';
--- 844,854 -----
listmatching((struct tabstruct *)x_comtab,str); break;
case ' ':
strcpy(tstr,str);
! strcat(str, " ");
! if (tablk((struct tabstruct *)x_comtab,str,0) <0) {
! strcpy(str,tstr);
! (void) tablk((struct tabstruct *)x_comtab,str,0);
! if (strlen(str) == strlen(tstr))
pchar(BELL);
}
if ((p=index(str+strlen(tstr), ' ')) != NIL)
***************
*** 843,849
(void) tablk((struct tabstruct *)x_comtab,str,0);
if (strlen(str) == strlen(tstr))
pchar(BELL);
! else if ((p=index(str+strlen(tstr), ' ')) != NIL)
*(p+1) = '\0';
break;
default:
--- 850,857 -----
(void) tablk((struct tabstruct *)x_comtab,str,0);
if (strlen(str) == strlen(tstr))
pchar(BELL);
! }
! if ((p=index(str+strlen(tstr), ' ')) != NIL)
*(p+1) = '\0';
break;
default:
Prereq: 1.0.0
*** 1.0/vars.c Fri Feb 15 23:51:35 1985
--- vars.c Tue Feb 19 22:12:36 1985
***************
*** 1,6
/* SCAME vars.c */
! /* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME vars.c */
! /* Revision 1.0.1 1985-02-19 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 35,41
setvariable(a)
long a;
{
! char str[80];
int c,i;
if (!xarg) {
errmes(ILA);
--- 35,41 -----
setvariable(a)
long a;
{
! char str[80], tstr[80], *p;
int c,i;
if (!xarg) {
errmes(ILA);
***************
*** 42,47
return;
}
*str = '\0';
do {
c=instring("Variable: ",str,strlen(str),"\t","\007\033\r?");
if (c == 7 || (c == 13 && *str=='\0')) {
--- 42,49 -----
return;
}
*str = '\0';
+
+ /* This code should be merged with getfuncname() */
do {
c=instring("Variable: ",str,strlen(str),"\t","\007\033\r ?");
if (c == 7 || (c == 13 && *str=='\0')) {
***************
*** 43,49
}
*str = '\0';
do {
! c=instring("Variable: ",str,strlen(str),"\t","\007\033\r?");
if (c == 7 || (c == 13 && *str=='\0')) {
typing = FALSE;
return;
--- 45,51 -----
/* This code should be merged with getfuncname() */
do {
! c=instring("Variable: ",str,strlen(str),"\t","\007\033\r ?");
if (c == 7 || (c == 13 && *str=='\0')) {
typing = FALSE;
return;
***************
*** 48,57
typing = FALSE;
return;
}
! if (c == '?') listmatching((struct tabstruct *)vartab,str);
! else if ((i = tablk((struct tabstruct *)vartab,str,0)) <0)
! pchar(BELL);
! } while (i<0 || c==ESC || c=='?');
switch (i) {
case 2: if (a >=40 && a <=100)
gvars.bottom_display_margin = a;
--- 50,75 -----
typing = FALSE;
return;
}
! switch (c) {
! case '?':
! listmatching((struct tabstruct *)vartab,str); break;
! case ' ':
! strcpy(tstr,str);
! strcat(str, " ");
! if (tablk((struct tabstruct *)vartab,str,0) <0) {
! strcpy(str,tstr);
! (void) tablk((struct tabstruct *)vartab,str,0);
! if (strlen(str) == strlen(tstr))
! pchar(BELL);
! }
! if ((p=index(str+strlen(tstr), ' ')) != NIL)
! *(p+1) = '\0';
! break;
! default:
! if ((i = tablk((struct tabstruct *)vartab,str,0)) <0)
! pchar(BELL);
! }
! } while (i<0 || index("\033 ?", c) != NIL);
switch (i) {
case 2: if (a >=40 && a <=100)
gvars.bottom_display_margin = a;
More information about the Comp.sources.bugs
mailing list