mirror of
https://github.com/Interlisp/maiko.git
synced 2026-04-25 20:11:36 +00:00
Adds error returns for case where new file version would exceed MAXVERSION
This commit is contained in:
@@ -3246,6 +3246,7 @@ static int maintain_version(char *file, int forcep)
|
|||||||
* is versioned one higher than the existing highest version.
|
* is versioned one higher than the existing highest version.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(VA.files, entry, max_no);
|
FindHighestVersion(VA.files, entry, max_no);
|
||||||
|
if (max_no >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(ver, "%u", max_no + 1);
|
sprintf(ver, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* The old file should have the same case name as the versionless
|
* The old file should have the same case name as the versionless
|
||||||
@@ -3570,6 +3571,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* link missing versionless file.
|
* link missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(vbuf, "%u", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
@@ -3578,6 +3580,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
/* A version is specified. */
|
/* A version is specified. */
|
||||||
ver_no = strtoul(ver, (char **)NULL, 10);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
if (ver_no == max_no + 1) {
|
if (ver_no == max_no + 1) {
|
||||||
/*
|
/*
|
||||||
* If the version is one higher than the
|
* If the version is one higher than the
|
||||||
@@ -3926,6 +3929,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* the existing highest version.
|
* the existing highest version.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no + 1 >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(vbuf, "%u", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* We will use the file name of the existing highest
|
* We will use the file name of the existing highest
|
||||||
@@ -4018,6 +4022,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no + 1 >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(vbuf, "%u", max_no + 2);
|
sprintf(vbuf, "%u", max_no + 2);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vfile);
|
strcpy(afile, vfile);
|
||||||
@@ -4081,6 +4086,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* new file.
|
* new file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(vbuf, "%u", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* We will use the name of the highest versioned file
|
* We will use the name of the highest versioned file
|
||||||
@@ -4297,6 +4303,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* link missing versionless file.
|
* link missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
|
if (max_no >= MAXVERSION) {*Lisp_errno = EIO; return (0);}
|
||||||
sprintf(vbuf, "%u", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
|
|||||||
Reference in New Issue
Block a user