Introduction
Introduction Statistics Contact Development Disclaimer Help
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
}
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.