Introduction
Introduction Statistics Contact Development Disclaimer Help
Rework logging functions - noice - small file browser (mirror / fork from 2f30.…
git clone git://git.codemadness.org/noice
Log
Files
Refs
README
LICENSE
---
commit 53c35e6b340b7c135038e00057a198f03cb7d7cf
parent cd633c1a0a69dcd6c96079dd922820d09d8d992b
Author: sin <[email protected]>
Date: Fri, 23 Aug 2019 13:40:57 +0100
Rework logging functions
Diffstat:
M noice.c | 71 ++++++++++++++++++++---------…
1 file changed, 45 insertions(+), 26 deletions(-)
---
diff --git a/noice.c b/noice.c
@@ -11,6 +11,7 @@
#include <locale.h>
#include <regex.h>
#include <signal.h>
+#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -90,16 +91,16 @@ int idle;
* '------
*/
-void printmsg(char *);
-void printwarn(void);
-void printerr(int, char *);
+void info(char *, ...);
+void warn(char *, ...);
+void fatal(char *, ...);
void *
xrealloc(void *p, size_t size)
{
p = realloc(p, size);
if (p == NULL)
- printerr(1, "realloc");
+ fatal("realloc");
return p;
}
@@ -114,7 +115,7 @@ xdirname(const char *path)
strlcpy(tmp, path, sizeof(tmp));
p = dirname(tmp);
if (p == NULL)
- printerr(1, "dirname");
+ fatal("dirname");
strlcpy(out, p, sizeof(out));
return out;
}
@@ -143,7 +144,7 @@ setfilter(regex_t *regex, char *filter)
if (len > sizeof(errbuf))
len = sizeof(errbuf);
regerror(r, regex, errbuf, len);
- printmsg(errbuf);
+ info("%s", errbuf);
}
return r;
}
@@ -241,33 +242,51 @@ exitcurses(void)
/* Messages show up at the bottom */
void
-printmsg(char *msg)
+info(char *fmt, ...)
{
+ char buf[LINE_MAX];
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ va_end(ap);
move(LINES - 1, 0);
- printw("%s\n", msg);
+ printw("%s\n", buf);
}
/* Display warning as a message */
void
-printwarn(void)
+warn(char *fmt, ...)
{
- printmsg(strerror(errno));
+ char buf[LINE_MAX];
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ va_end(ap);
+ move(LINES - 1, 0);
+ printw("%s: %s\n", buf, strerror(errno));
}
/* Kill curses and display error before exiting */
void
-printerr(int r, char *prefix)
+fatal(char *fmt, ...)
{
+ va_list ap;
+
exitcurses();
- fprintf(stderr, "%s: %s\n", prefix, strerror(errno));
- exit(r);
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, ": %s\n", strerror(errno));
+ va_end(ap);
+ exit(1);
}
/* Clear the last line */
void
clearprompt(void)
{
- printmsg("");
+ info("");
}
/* Print prompt on the last line */
@@ -275,7 +294,7 @@ void
printprompt(char *str)
{
clearprompt();
- printw(str);
+ info("%s", str);
}
int
@@ -431,7 +450,7 @@ dentfill(char *path, struct entry **dents,
mkpath(path, dp->d_name, newpath, sizeof(newpath));
r = lstat(newpath, &sb);
if (r == -1)
- printerr(1, "lstat");
+ fatal("lstat");
(*dents)[n].mode = sb.st_mode;
(*dents)[n].t = sb.st_mtime;
n++;
@@ -440,7 +459,7 @@ dentfill(char *path, struct entry **dents,
/* Should never be null */
r = closedir(dirp);
if (r == -1)
- printerr(1, "closedir");
+ fatal("closedir");
return n;
}
@@ -565,7 +584,7 @@ browse(char *ipath, char *ifilter)
begin:
r = populate(path, oldpath, fltr);
if (r == -1) {
- printwarn();
+ warn("populate");
goto nochange;
}
@@ -584,7 +603,7 @@ nochange:
goto nochange;
dir = xdirname(path);
if (canopendir(dir) == 0) {
- printwarn();
+ warn("canopendir");
goto nochange;
}
/* Save history */
@@ -604,12 +623,12 @@ nochange:
/* Get path info */
fd = open(newpath, O_RDONLY | O_NONBLOCK);
if (fd == -1) {
- printwarn();
+ warn("open");
goto nochange;
}
r = fstat(fd, &sb);
if (r == -1) {
- printwarn();
+ warn("fstat");
close(fd);
goto nochange;
}
@@ -619,7 +638,7 @@ nochange:
switch (sb.st_mode & S_IFMT) {
case S_IFDIR:
if (canopendir(newpath) == 0) {
- printwarn();
+ warn("canopendir");
goto nochange;
}
strlcpy(path, newpath, sizeof(path));
@@ -632,12 +651,12 @@ nochange:
r = spawnlp(path, run, run, newpath, (void *)0…
initcurses();
if (r == -1) {
- printmsg("Failed to execute plumber");
+ info("Failed to execute plumber");
goto nochange;
}
continue;
default:
- printmsg("Unsupported file");
+ info("Unsupported file");
goto nochange;
}
case SEL_FLTR:
@@ -689,7 +708,7 @@ nochange:
}
mkpath(path, tmp, newpath, sizeof(newpath));
if (canopendir(newpath) == 0) {
- printwarn();
+ warn("canopendir");
goto nochange;
}
strlcpy(path, newpath, sizeof(path));
@@ -704,7 +723,7 @@ nochange:
goto nochange;
}
if (canopendir(tmp) == 0) {
- printwarn();
+ warn("canopendir");
goto nochange;
}
strlcpy(path, tmp, sizeof(path));
You are viewing proxied material from codemadness.org. 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.