Switch to snprintf. - sam - An updated version of the sam text editor. | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 69c9fdc656233873a00c4281143f2b663f78885b | |
parent 19daa6ce19b0fd7e5abe0bf72a95ff8801b36717 | |
Author: Rob King <[email protected]> | |
Date: Tue, 4 Oct 2016 11:11:12 -0500 | |
Switch to snprintf. | |
Diffstat: | |
include/libc.h | 3 --- | |
sam/address.c | 2 +- | |
sam/error.c | 6 +++--- | |
sam/mesg.c | 2 +- | |
sam/regexp.c | 2 +- | |
sam/sam.c | 8 +++----- | |
sam/unix.c | 4 ++-- | |
samterm/mesg.c | 8 ++------ | |
samterm/unix.c | 39 +++++++------------------------ | |
9 files changed, 22 insertions(+), 52 deletions(-) | |
--- | |
diff --git a/include/libc.h b/include/libc.h | |
@@ -10,14 +10,11 @@ | |
#define runetochar(s, r) (wctomb((s), (r))) | |
#define runelen(r) (wctomb(NULL, (r))) | |
-#define sprint sprintf | |
#define dup(a,b) dup2(a,b) | |
#define seek(a,b,c) lseek(a,b,c) | |
#define create(name, mode, perm) creat(name, perm) | |
#define exec(a,b) execv(a,b) | |
-#define getuser() (getenv("LOGNAME") ? getenv("LOGNAME") : "unknown") | |
- | |
/* | |
* new rune routines | |
*/ | |
diff --git a/sam/address.c b/sam/address.c | |
@@ -147,7 +147,7 @@ filematch(File *f, String *r) | |
String *t; | |
c = Strtoc(&f->name); | |
- sprint(buf, "%c%c%c %s\n", " '"[f->state==Dirty], | |
+ snprintf(buf, sizeof(buf) - 1, "%c%c%c %s\n", " '"[f->state==Dirty], | |
"-+"[f->rasp!=0], " ."[f==curfile], c); | |
free(c); | |
t = tmpcstr(buf); | |
diff --git a/sam/error.c b/sam/error.c | |
@@ -70,7 +70,7 @@ error(Err s) | |
{ | |
char buf[512]; | |
- sprint(buf, "?%s", emsg[s]); | |
+ snprintf(buf, sizeof(buf) - 1, "?%s", emsg[s]); | |
hiccough(buf); | |
} | |
@@ -79,7 +79,7 @@ error_s(Err s, char *a) | |
{ | |
char buf[512]; | |
- sprint(buf, "?%s \"%s\"", emsg[s], a); | |
+ snprintf(buf, sizeof(buf) - 1, "?%s \"%s\"", emsg[s], a); | |
hiccough(buf); | |
} | |
@@ -88,7 +88,7 @@ error_c(Err s, int c) | |
{ | |
char buf[512]; | |
- sprint(buf, "?%s `%c'", emsg[s], c); | |
+ snprintf(buf, sizeof(buf) - 1, "?%s `%c'", emsg[s], c); | |
hiccough(buf); | |
} | |
diff --git a/sam/mesg.c b/sam/mesg.c | |
@@ -88,7 +88,7 @@ void | |
journaln(int out, int64_t n) | |
{ | |
char buf[32]; | |
- sprint(buf, PRId64, n); | |
+ snprintf(buf, sizeof(buf) - 1, PRId64, n); | |
journal(out, buf); | |
} | |
#else | |
diff --git a/sam/regexp.c b/sam/regexp.c | |
@@ -237,7 +237,7 @@ cant(char *s) | |
{ | |
char buf[100]; | |
- sprint(buf, "regexp: can't happen: %s", s); | |
+ snprintf(buf, sizeof(buf) - 1, "regexp: can't happen: %s", s); | |
panic(buf); | |
} | |
diff --git a/sam/sam.c b/sam/sam.c | |
@@ -100,9 +100,7 @@ main(int argc, char *argv[]) | |
Strinit0(&wd); | |
tempfile.listptr = emalloc(0); | |
Strinit0(&plan9cmd); | |
- home = getenv("HOME"); | |
- if(home == 0) | |
- home = "/"; | |
+ home = getenv("HOME") ? getenv("HOME") : "/"; | |
shpath = getenv("SHELL") ? getenv("SHELL") : shpath; | |
sh = basename(shpath); | |
if(!dflag) | |
@@ -152,7 +150,7 @@ rescue(void) | |
if(f==cmd || f->nrunes==0 || f->state!=Dirty) | |
continue; | |
if(io == -1){ | |
- sprint(buf, "%s/sam.save", home); | |
+ snprintf(buf, sizeof(buf) - 1, "%s/sam.save", home); | |
io = create(buf, 1, 0700); | |
if(io<0) | |
return; | |
@@ -170,7 +168,7 @@ rescue(void) | |
buf[sizeof buf-1] = 0; | |
free(c); | |
}else | |
- sprint(buf, "nameless.%d", nblank++); | |
+ snprintf(buf, sizeof(buf) - 1, "nameless.%d", nblank++); | |
dprintf(io, "samsave %s <<'---%s'\n", buf, buf); | |
addr.r.p1 = 0, addr.r.p2 = f->nrunes; | |
writeio(f); | |
diff --git a/sam/unix.c b/sam/unix.c | |
@@ -164,10 +164,10 @@ void | |
dprint(char *z, ...) | |
{ | |
va_list args; | |
- char buf[BLOCKSIZE]; | |
+ char buf[BLOCKSIZE + 1] = {0}; | |
va_start(args, z); | |
- vsprintf(buf, z, args); | |
+ vsnprintf(buf, BLOCKSIZE, z, args); | |
termwrite(buf); | |
va_end(args); | |
} | |
diff --git a/samterm/mesg.c b/samterm/mesg.c | |
@@ -294,19 +294,15 @@ inmesg(Hmesg type, int count) | |
outT0(Tack); | |
break; | |
-#ifndef NOFIFO | |
case Hextcmd: | |
- if (exname != NULL) | |
- { | |
+ if (exname[0]){ | |
int fifofd = open(exname, O_WRONLY); | |
- if (fifofd >= 0) | |
- { | |
+ if (fifofd >= 0){ | |
dprintf(fifofd, "%511s", (char *)indata); | |
close(fifofd); | |
} | |
} | |
break; | |
-#endif | |
case Hexit: | |
outT0(Texit); | |
diff --git a/samterm/unix.c b/samterm/unix.c | |
@@ -10,7 +10,7 @@ | |
#include <errno.h> | |
#include <signal.h> | |
-char *exname = NULL; | |
+char exname[PATH_MAX + 1] = {0}; | |
static char *fallbacks[] = { | |
"*scrollForwardR: true", | |
"*geometry: 740x780", | |
@@ -59,50 +59,30 @@ dumperrmsg(int count, int type, int count0, int c) | |
void | |
removeextern(void) | |
{ | |
- if (exname) { | |
- (void)unlink(exname); | |
- exname = 0; | |
- } | |
+ unlink(exname); | |
+ exname[0] = 0; | |
} | |
-/* | |
- * some systems do not support non-blocking i/o on named pipes | |
- * or do not provide working POSIX interfaces to the pipes. | |
- * in that case, add the name of the system to the 'ifdef' that | |
- * disables the code at the beginning of the function. | |
- * The external 'B' command will not work. | |
- */ | |
void | |
extstart(void) | |
{ | |
- if (nofifo) | |
- return; | |
- | |
-#ifndef NOFIFO | |
extern char *machine; | |
- char *user; | |
- char *home; | |
int fd; | |
int flags; | |
- user = getenv("LOGNAME") ? getenv("LOGNAME") : getenv("USER") ? getenv("US… | |
- home = getenv("HOME"); | |
- | |
- if (home == NULL) | |
+ if (nofifo || !getenv("HOME")) | |
return; | |
- exname = (char *)alloc(4 + 6 + strlen(home) + 1 + strlen(user) + 1 + strle… | |
- sprint(exname, "%s/.sam.%s", home, machine); | |
+ snprintf(exname, PATH_MAX, "%s/.sam.%s", getenv("HOME"), machine); | |
/* Make the named pipe. */ | |
- if (mkfifo(exname, 0600) == -1) { | |
+ if (mkfifo(exname, 0600) == -1){ | |
struct stat statb; | |
- extern int errno; | |
if (errno != EEXIST || stat(exname, &statb) == -1) | |
return; | |
- if (!S_ISFIFO(statb.st_mode)) { | |
+ if (!S_ISFIFO(statb.st_mode)){ | |
removeextern(); | |
if (mkfifo(exname, 0600) == -1) | |
return; | |
@@ -118,10 +98,10 @@ extstart(void) | |
/* | |
* Turn off no-delay and provide ourselves as a lingering | |
* writer so as not to get end of file on read. | |
- */ | |
+ */ | |
flags = fcntl(fd, F_GETFL, 0); | |
if (flags == -1 || fcntl(fd, F_SETFL, flags & ~O_NONBLOCK) == -1 | |
- || open(exname, O_WRONLY) == -1) { | |
+ || open(exname, O_WRONLY) == -1){ | |
(void)close(fd); | |
removeextern(); | |
return; | |
@@ -129,5 +109,4 @@ extstart(void) | |
estart(Eextern, fd, 8192); | |
atexit(removeextern); | |
-#endif | |
} |