SCAME patch no. 3
Leif Samuelsson
leif at erisun.UUCP
Sun Feb 24 02:02:06 AEST 1985
System: scame 1.0
Patch #: 3
Priority: High
Description:
Four problems:
- On BSD4.2, the mechanism for disallowing two invocations
of scame to run at the same time doesn't work. This is
serious, because the tempfile handling relies on it.
- On many systems, Reverse I-Search doesn't work.
- A minor bug in Scame-reaper might cause problems.
- getwd() declared wrong.
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 inaccurate.
Before re-installing, make sure that noone is running scame,
then remove all the tempfiles in the TMPDIR directory.
Prereq: 1.0.0
*** 1.0/scame.h Fri Feb 15 23:50:51 1985
--- scame.h Sat Feb 23 10:09:29 1985
***************
*** 1,6
/* SCAME scame.h */
! /* Revision 1.0.0 1985-02-09 */
/* Copyright (C) 1985 by Leif Samuelsson */
--- 1,6 -----
/* SCAME scame.h */
! /* Revision 1.0.1 1985-02-23 */
/* Copyright (C) 1985 by Leif Samuelsson */
***************
*** 206,214
extern Bool fileexists(), filnprep(), filncpy(), filncat();
extern time_t filemodified();
extern off_t filesize();
! #ifndef BSD4_2
! extern Bool getwd();
! #endif
/* Procedures in strings.c */
--- 206,212 -----
extern Bool fileexists(), filnprep(), filncpy(), filncat();
extern time_t filemodified();
extern off_t filesize();
! extern char *getwd();
/* Procedures in strings.c */
Prereq: 1.0.1
*** 1.0/main.c Tue Feb 19 20:32:51 1985
--- main.c Sat Feb 23 10:03:48 1985
***************
*** 1,6
/* SCAME main.c */
! /* Revision 1.0.1 1985-02-17 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME main.c */
! /* Revision 1.0.2 1985-02-23 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 134,140
printf("You have Scame already running somewhere\n");
exit(1);
}
! creat(lockfile, 0600);
#ifdef BSD42
flock(fd, LOCK_EX | LOCK_NB);
#endif
--- 134,140 -----
printf("You have Scame already running somewhere\n");
exit(1);
}
! fd = creat(lockfile, 0600);
#ifdef BSD42
flock(fd, LOCK_EX | LOCK_NB);
#endif
Prereq: 1.0.0
*** 1.0/files.c Fri Feb 15 23:51:29 1985
--- files.c Sat Feb 23 10:10:49 1985
***************
*** 1,6
/* SCAME files.c */
! /* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME files.c */
! /* Revision 1.0.1 1985-02-23 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 13,19
/*
* Get working (current) directory
*/
! Bool getwd(path)
char path[];
{
int file;
--- 13,19 -----
/*
* Get working (current) directory
*/
! char *getwd(path)
char path[];
{
int file;
***************
*** 30,36
for (;;) {
stat(".", &d);
if (d.st_ino==rino && d.st_dev==rdev) break;
! if ((file = open("..",0)) < 0) return(FALSE);
fstat(file, &dd);
chdir("..");
if(d.st_dev == dd.st_dev) {
--- 30,36 -----
for (;;) {
stat(".", &d);
if (d.st_ino==rino && d.st_dev==rdev) break;
! if ((file = open("..",0)) < 0) return(NIL);
fstat(file, &dd);
chdir("..");
if(d.st_dev == dd.st_dev) {
***************
*** 37,43
if(d.st_ino == dd.st_ino) break;
do {
if (read(file, (char *)&dir,
! sizeof(dir)) < sizeof(dir)) return(FALSE);
} while (dir.d_ino != d.st_ino);
}
else do {
--- 37,43 -----
if(d.st_ino == dd.st_ino) break;
do {
if (read(file, (char *)&dir,
! sizeof(dir)) < sizeof(dir)) return(NIL);
} while (dir.d_ino != d.st_ino);
}
else do {
***************
*** 42,48
}
else do {
if(read(file, (char *)&dir,
! sizeof(dir)) < sizeof(dir)) return(FALSE);
stat(dir.d_name, &dd);
} while(dd.st_ino!= d.st_ino || dd.st_dev != d.st_dev);
close(file);
--- 42,48 -----
}
else do {
if(read(file, (char *)&dir,
! sizeof(dir)) < sizeof(dir)) return(NIL);
stat(dir.d_name, &dd);
} while(dd.st_ino!= d.st_ino || dd.st_dev != d.st_dev);
close(file);
***************
*** 62,68
path[off] = '\0';
close(file);
chdir(path);
! return(TRUE);
}
#endif
--- 62,68 -----
path[off] = '\0';
close(file);
chdir(path);
! return(path);
}
#endif
Prereq: 1.0.0
*** 1.0/search.c Fri Feb 15 23:51:29 1985
--- search.c Sat Feb 23 10:06:21 1985
***************
*** 1,6
/* SCAME search.c */
! /* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME search.c */
! /* Revision 1.0.1 1985-02-23 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 206,211
else {
dot = tdot;
dot= tdot;
}
}
}
--- 206,212 -----
else {
dot = tdot;
dot= tdot;
+ return(TRUE);
}
}
}
Prereq: 1.0.1
*** 1.0/scame-reaper.c Tue Feb 19 20:33:00 1985
--- scame-reaper.c Tue Feb 19 20:40:52 1985
***************
*** 1,6
/* SCAME scame-reaper.c */
! /* Revision 1.0.1 1985-02-15 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
--- 1,6 -----
/* SCAME scame-reaper.c */
! /* Revision 1.0.2 1985-02-19 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
***************
*** 70,76
if (dp->d_ino == 0 || dp->d_name[0] != 'S')
continue;
for (i=1; i <= 10; i++)
! if (dp->d_name[i] < '0' || dp->d_name[1] > '9')
goto loop;
nentries++;
sscanf(dp->d_name, "%*[^0123456789]%5d", &pid);
--- 70,76 -----
if (dp->d_ino == 0 || dp->d_name[0] != 'S')
continue;
for (i=1; i <= 10; i++)
! if (dp->d_name[i] < '0' || dp->d_name[i] > '9')
goto loop;
nentries++;
sscanf(dp->d_name, "%*[^0123456789]%5d", &pid);
More information about the Comp.sources.bugs
mailing list