Added prefix-length optional return from Strcmp. - sam - An updated version of the sam text editor.
(HTM) git clone git://vernunftzentrum.de/sam.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 4f6b0d8ce54e4cfb281246704368631baf66dc6e
(DIR) parent 7f350c19ce7da08c0151abf5228ebe083d6d6826
(HTM) Author: Rob King <jking@deadpixi.com>
Date: Wed, 25 May 2016 21:56:46 -0500
Added prefix-length optional return from Strcmp.
Diffstat:
sam/io.c | 2 +-
sam/multi.c | 5 +++--
sam/regexp.c | 2 +-
sam/sam.c | 4 ++--
sam/sam.h | 2 +-
sam/string.c | 7 +++++--
6 files changed, 13 insertions(+), 9 deletions(-)
---
(DIR) diff --git a/sam/io.c b/sam/io.c
@@ -31,7 +31,7 @@ writef(File *f)
long mtime, appendonly, length;
newfile = 0;
- samename = Strcmp(&genstr, &f->name) == 0;
+ samename = Strcmp(&genstr, &f->name, NULL) == 0;
name = Strtoc(&f->name);
i = statfile(name, &dev, &qid, &mtime, 0, 0);
if(i == -1)
(DIR) diff --git a/sam/multi.c b/sam/multi.c
@@ -53,7 +53,7 @@ sortname(File *f)
if(f == cmd)
i = 0;
else for(i=0; i<file.nused; i++){
- cmp = Strcmp(&f->name, &file.filepptr[i]->name);
+ cmp = Strcmp(&f->name, &file.filepptr[i]->name, NULL);
if(cmp==0 && !dupwarned){
dupwarned = TRUE;
warn_S(Wdupname, &f->name);
@@ -83,9 +83,10 @@ File *
lookfile(String *s)
{
int i;
+ String *b;
for(i=0; i<file.nused; i++)
- if(Strcmp(&file.filepptr[i]->name, s) == 0)
+ if(Strcmp(&file.filepptr[i]->name, s, NULL) == 0)
return file.filepptr[i];
return 0;
}
(DIR) diff --git a/sam/regexp.c b/sam/regexp.c
@@ -181,7 +181,7 @@ compile(String *s)
int i;
Inst *oprogp;
- if(Strcmp(s, &lastregexp)==0)
+ if(Strcmp(s, &lastregexp, NULL)==0)
return;
for(i=0; i<nclass; i++)
free(class[i]);
(DIR) diff --git a/sam/sam.c b/sam/sam.c
@@ -324,7 +324,7 @@ edit(File *f, int cmd)
if(cmd=='e' || cmd=='I'){
Fdelete(f, (Posn)0, f->nrunes);
addr.r.p2 = f->nrunes;
- }else if(f->nrunes!=0 || (f->name.s[0] && Strcmp(&genstr, &f->name)!=0))
+ }else if(f->nrunes!=0 || (f->name.s[0] && Strcmp(&genstr, &f->name, NULL)!=0))
empty = FALSE;
if((io = open(genc, OREAD))<0) {
if (curfile && curfile->state == Unread)
@@ -375,7 +375,7 @@ getname(File *f, String *s, int save)
Straddc(&genstr, '\0');
if(f && (save || f->name.s[0]==0)){
Fsetname(f, &genstr);
- if(Strcmp(&f->name, &genstr)){
+ if(Strcmp(&f->name, &genstr, NULL)){
quitok = f->closeok = FALSE;
f->qid = 0;
f->date = 0;
(DIR) diff --git a/sam/sam.h b/sam/sam.h
@@ -305,7 +305,7 @@ int statfd(int, ulong*, ulong*, long*, long*, long*);
int statfile(char*, ulong*, ulong*, long*, long*, long*);
void Straddc(String*, int);
void Strclose(String*);
-int Strcmp(String*, String*);
+int Strcmp(String*, String*, int *);
void Strdelete(String*, Posn, Posn);
void Strdupl(String*, Rune*);
void Strduplstr(String*, String*);
(DIR) diff --git a/sam/string.c b/sam/string.c
@@ -100,13 +100,16 @@ Strdelete(String *p, Posn p1, Posn p2)
}
int
-Strcmp(String *a, String *b)
+Strcmp(String *a, String *b, int *l)
{
int i, c;
- for(i=0; i<a->n && i<b->n; i++)
+ for(i=0; i<a->n && i<b->n; i++){
if(c = (a->s[i] - b->s[i])) /* assign = */
return c;
+ if (l)
+ *l = i;
+ }
/* damn NULs confuse everything */
i = a->n - b->n;
if(i == 1){